From patchwork Tue Jul 2 22:12:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55909 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4E71A1BE01; Wed, 3 Jul 2019 00:12:54 +0200 (CEST) Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by dpdk.org (Postfix) with ESMTP id 8D7FA1BDFB for ; Wed, 3 Jul 2019 00:12:52 +0200 (CEST) Received: by mail-pl1-f196.google.com with SMTP id b7so31794pls.6 for ; Tue, 02 Jul 2019 15:12:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YoOvWYzczrT5avm06Uw1YHk6vrCL5G8NYOIBDXVY7YM=; b=IHGaI1D++Grmb+wogKXd8V4g/8wcIjQEOoofLoF9hKSuk8FgL7X2hjgiCGoFTBME6d zGH+sf0bFk4KTtW6chaKIOBP+nEVZoctZ8iYGieZM0ZjgwfrTyJ9nAHF+DUC8PM5u+r9 0U1qpEHaQ/vYuZM9TOMBdq5fqyzdJxGZixYDcwuikC67Zp7UnD9yhVj2F/VgjN06YqPK vWmz26K7OEwWYgaPp52UdODoP0uFgH3cZsksSMYnlqpHoNTlqmGgPMzLUnZKkQBsRVDy /bAep9A1ojaPGVUiqWwK3kYhspSfAybjslTgQyMqOzwPxS/mp62l3KP2GH7KC8krTHzJ 48Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YoOvWYzczrT5avm06Uw1YHk6vrCL5G8NYOIBDXVY7YM=; b=eOPlAqEpmf4jvmjnNz7kcQ+ZxcYiOmtZxT9glgWe7BuMTBG3kj0Gn5cLvpm2v4g0l5 mISmz0uIqKYi7hVQ28A8VkAtK8qerAx8K15lZYucnvZiMd1AgMlmSAz7s20CT9oUQh4F /uKDNvFZnZq10Yn5ySIBq1Aimn8i1DF+5Nexz4szT/qWVgUe7LBktKLW3VpSXB+sg+0L //DbeslNlSMYUn+lwaz8KhTlouc2xamJDQ/W/9oYIlRnHvTYNV6LQFK7WcA2vr5pAP0p AoDMsmKAJns/TmT+NsOn3+QfVrM7QKDuciG7RZioDDSvJHDXfjRb6Ivbrm01k3iTyXis jn1g== X-Gm-Message-State: APjAAAVDUSNgZg5q2EtW2LWrcGNZ98AjBNuNaP8OJLE08uq86ziOgLpS 8/nmcBwmNE0mvoZBqFTJeMsVVz+h1aI= X-Google-Smtp-Source: APXvYqyPoBQNpV2mS7tRkJoAvDi5uojohC72cMYs/B4Vav2/EggpDLi0ZMpcwsRjBLAkoj6ZpWd8mw== X-Received: by 2002:a17:902:724:: with SMTP id 33mr37015642pli.49.1562105571364; Tue, 02 Jul 2019 15:12:51 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.12.50 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:12:50 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Rami Rosen , Andrew Rybchenko Date: Tue, 2 Jul 2019 15:12:36 -0700 Message-Id: <20190702221247.28391-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 01/12] net/rte_ether: deinline non-critical functions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Formatting Ethernet address and getting a random value are not in critical path so they should not be inlined. Signed-off-by: Stephen Hemminger Acked-by: Rami Rosen Reviewed-by: Andrew Rybchenko Acked-by: Olivier Matz --- drivers/net/axgbe/Makefile | 2 +- drivers/net/memif/Makefile | 2 +- lib/librte_net/Makefile | 1 + lib/librte_net/meson.build | 2 +- lib/librte_net/rte_ether.c | 29 +++++++++++++++++++++++++++++ lib/librte_net/rte_ether.h | 25 ++++--------------------- lib/librte_net/rte_net_version.map | 7 +++++++ 7 files changed, 44 insertions(+), 24 deletions(-) create mode 100644 lib/librte_net/rte_ether.c diff --git a/drivers/net/axgbe/Makefile b/drivers/net/axgbe/Makefile index 72215aedaf55..c2d4336800c0 100644 --- a/drivers/net/axgbe/Makefile +++ b/drivers/net/axgbe/Makefile @@ -17,7 +17,7 @@ LIBABIVER := 1 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool LDLIBS += -lrte_pci -lrte_bus_pci -LDLIBS += -lrte_ethdev +LDLIBS += -lrte_ethdev -lrte_net # # all source are stored in SRCS-y diff --git a/drivers/net/memif/Makefile b/drivers/net/memif/Makefile index fdbdf3378019..3d92b08f259b 100644 --- a/drivers/net/memif/Makefile +++ b/drivers/net/memif/Makefile @@ -21,7 +21,7 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API # - rte_mp_reply # - rte_mp_request_sync LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -LDLIBS += -lrte_ethdev -lrte_kvargs +LDLIBS += -lrte_ethdev -lrte_kvargs -lrte_net LDLIBS += -lrte_hash LDLIBS += -lrte_bus_vdev diff --git a/lib/librte_net/Makefile b/lib/librte_net/Makefile index c3082069ab50..1244c9fd54c9 100644 --- a/lib/librte_net/Makefile +++ b/lib/librte_net/Makefile @@ -14,6 +14,7 @@ LIBABIVER := 1 SRCS-$(CONFIG_RTE_LIBRTE_NET) := rte_net.c SRCS-$(CONFIG_RTE_LIBRTE_NET) += rte_net_crc.c +SRCS-$(CONFIG_RTE_LIBRTE_NET) += rte_ether.c SRCS-$(CONFIG_RTE_LIBRTE_NET) += rte_arp.c # install includes diff --git a/lib/librte_net/meson.build b/lib/librte_net/meson.build index 7d66f693cbf3..868a93fd6b6b 100644 --- a/lib/librte_net/meson.build +++ b/lib/librte_net/meson.build @@ -16,5 +16,5 @@ headers = files('rte_ip.h', 'rte_net_crc.h', 'rte_mpls.h') -sources = files('rte_arp.c', 'rte_net.c', 'rte_net_crc.c') +sources = files('rte_arp.c', 'rte_ether.c', 'rte_net.c', 'rte_net_crc.c') deps += ['mbuf'] diff --git a/lib/librte_net/rte_ether.c b/lib/librte_net/rte_ether.c new file mode 100644 index 000000000000..974fe815b335 --- /dev/null +++ b/lib/librte_net/rte_ether.c @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2014 Intel Corporation + */ + +#include + +void +rte_eth_random_addr(uint8_t *addr) +{ + uint64_t rand = rte_rand(); + uint8_t *p = (uint8_t *)&rand; + + rte_memcpy(addr, p, RTE_ETHER_ADDR_LEN); + addr[0] &= (uint8_t)~RTE_ETHER_GROUP_ADDR; /* clear multicast bit */ + addr[0] |= RTE_ETHER_LOCAL_ADMIN_ADDR; /* set local assignment bit */ +} + +void +rte_ether_format_addr(char *buf, uint16_t size, + const struct rte_ether_addr *eth_addr) +{ + snprintf(buf, size, "%02X:%02X:%02X:%02X:%02X:%02X", + eth_addr->addr_bytes[0], + eth_addr->addr_bytes[1], + eth_addr->addr_bytes[2], + eth_addr->addr_bytes[3], + eth_addr->addr_bytes[4], + eth_addr->addr_bytes[5]); +} diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h index 7be9b4890af7..3caae0d98f6d 100644 --- a/lib/librte_net/rte_ether.h +++ b/lib/librte_net/rte_ether.h @@ -207,15 +207,8 @@ static inline int rte_is_valid_assigned_ether_addr(const struct rte_ether_addr * * @param addr * A pointer to Ethernet address. */ -static inline void rte_eth_random_addr(uint8_t *addr) -{ - uint64_t rand = rte_rand(); - uint8_t *p = (uint8_t *)&rand; - - rte_memcpy(addr, p, RTE_ETHER_ADDR_LEN); - addr[0] &= (uint8_t)~RTE_ETHER_GROUP_ADDR; /* clear multicast bit */ - addr[0] |= RTE_ETHER_LOCAL_ADMIN_ADDR; /* set local assignment bit */ -} +void +rte_eth_random_addr(uint8_t *addr); /** * Fast copy an Ethernet address. @@ -254,19 +247,9 @@ static inline void rte_ether_addr_copy(const struct rte_ether_addr *ea_from, * @param eth_addr * A pointer to a ether_addr structure. */ -static inline void +void rte_ether_format_addr(char *buf, uint16_t size, - const struct rte_ether_addr *eth_addr) -{ - snprintf(buf, size, "%02X:%02X:%02X:%02X:%02X:%02X", - eth_addr->addr_bytes[0], - eth_addr->addr_bytes[1], - eth_addr->addr_bytes[2], - eth_addr->addr_bytes[3], - eth_addr->addr_bytes[4], - eth_addr->addr_bytes[5]); -} - + const struct rte_ether_addr *eth_addr); /** * Ethernet header: Contains the destination address, source address * and frame type. diff --git a/lib/librte_net/rte_net_version.map b/lib/librte_net/rte_net_version.map index 26c06e7c7ae7..f1e1b84ab491 100644 --- a/lib/librte_net/rte_net_version.map +++ b/lib/librte_net/rte_net_version.map @@ -13,6 +13,13 @@ DPDK_17.05 { } DPDK_16.11; +DPDK_19.08 { + global: + + rte_eth_random_addr; + rte_ether_format_addr; +} DPDK_17.05; + EXPERIMENTAL { global: From patchwork Tue Jul 2 22:12:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55910 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3DBEF1BE05; Wed, 3 Jul 2019 00:12:56 +0200 (CEST) Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by dpdk.org (Postfix) with ESMTP id 0BD6C1BDFE for ; Wed, 3 Jul 2019 00:12:54 +0200 (CEST) Received: by mail-pl1-f170.google.com with SMTP id 9so34255ple.5 for ; Tue, 02 Jul 2019 15:12:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HT7fgvqo3DxGVdfkCgxmfvm3m5YXMqttimfnKXT3DRU=; b=Tv8taZVp5ytTgDtaOJ1mdgMf1SKTmT1DMmFqAnMIS+NOkfIAtdjb3HtlNKO2pGjoJr 1audADKOHPD19fFtDLjyf0O6GQWMrF2GJVAjwa3BoVk1S+IGaYld43mE9TF9pZK6VoB3 lmuuRPHoDwTrdsLTLKfrUL36Nhw4/kA12zG5/ClxMmJtJv22ZTVUSGGBYG6jI8eS6mED sPUwwSp3osvji69HNqQDo8rwnkNPKQfHzUhcBD3bia5RZJ/zD4OtJiM+SaGL9gJRb5BP MfVhXDOVnlqcTyn73Jb1e5KZjayDDv+MDKY1m6zzjMXOk3SgoVQg9bhwtpm/dwo7qOh5 tnzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HT7fgvqo3DxGVdfkCgxmfvm3m5YXMqttimfnKXT3DRU=; b=KzazOBfOFy6dlyQq6sCVigNwMMAeUoMp+lGnk8NxG1VvyJWVwLsTS25c2GLhESbem6 GFi1mHUVuQYSZwGu5gV8laS7ZupHEKkRF5XLpcgxv4fGtV03ry2dUmz1ZJ3eGNhn5Mki gOH9TGeRGnhhrVhwODxIQNJwDIpEcBZmTWKYKl7tbMsR/yj4KGeIISDw6V2rG3eRuuGA 5GEcGfT8+llQ+xr3mo9cMrd9DgZ5nYBAvOhvALp2StJoI8t5Y7iv5bCvyHljdR1pI7yb 12SkGTLqwGsWkdauRhnzHoOBjCBqX0VgSpZ+lD6yHmPCS9bVd+n14wivwVE6oh05PAYg JRiA== X-Gm-Message-State: APjAAAWAKlhpAwmQnRKHumekGMBcfIRmDT52HJakKEP3+2DoGmstvgGy 76F1Dy546mRBktJsCay0ZKw4rim6Pa0= X-Google-Smtp-Source: APXvYqyw5A9oEqGubaKZjDy+GQ5gr8KAfn5nF4bxgstQaRDseykvfJENAQeac7iDorkLxqMlUjgsVw== X-Received: by 2002:a17:902:b20c:: with SMTP id t12mr38210387plr.285.1562105572913; Tue, 02 Jul 2019 15:12:52 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.12.51 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:12:51 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Andrew Rybchenko Date: Tue, 2 Jul 2019 15:12:37 -0700 Message-Id: <20190702221247.28391-3-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 02/12] net/ether: add function to convert string to ethernet address X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Make a function that can be used in place of eth_aton_r to convert a string to rte_ether_addr. This function allows both byte (xx:xx:xx:xx:xx:xx) and word (XXXX:XXXX:XXXX) format and has the same lack of error handling as the original. This also allows ethdev to no longer have a hard dependency on the cmdline library. Signed-off-by: Stephen Hemminger Reviewed-by: Andrew Rybchenko --- lib/librte_net/rte_ether.c | 47 ++++++++++++++++++++++++++++++ lib/librte_net/rte_ether.h | 14 +++++++++ lib/librte_net/rte_net_version.map | 1 + 3 files changed, 62 insertions(+) diff --git a/lib/librte_net/rte_ether.c b/lib/librte_net/rte_ether.c index 974fe815b335..acc8a0e938c5 100644 --- a/lib/librte_net/rte_ether.c +++ b/lib/librte_net/rte_ether.c @@ -27,3 +27,50 @@ rte_ether_format_addr(char *buf, uint16_t size, eth_addr->addr_bytes[4], eth_addr->addr_bytes[5]); } + +/* + * Like ether_aton_r but can handle either + * XX:XX:XX:XX:XX:XX or XXXX:XXXX:XXXX + */ +int +rte_ether_unformat_addr(const char *s, struct rte_ether_addr *ea) +{ + unsigned int o0, o1, o2, o3, o4, o5; + int n; + + n = sscanf(s, "%x:%x:%x:%x:%x:%x", + &o0, &o1, &o2, &o3, &o4, &o5); + + if (n == 6) { + if (o0 > UINT8_MAX || o1 > UINT8_MAX || o2 > UINT8_MAX || + o3 > UINT8_MAX || o4 > UINT8_MAX || o5 > UINT8_MAX) + return -1; + + ea->addr_bytes[0] = o0; + ea->addr_bytes[1] = o1; + ea->addr_bytes[2] = o2; + ea->addr_bytes[3] = o3; + ea->addr_bytes[4] = o4; + ea->addr_bytes[5] = o5; + + return 0; + } + + /* Support the format XXXX:XXXX:XXXX */ + n = sscanf(s, "%x:%x:%x", &o0, &o1, &o2); + if (n == 3) { + if (o0 > UINT16_MAX || o1 > UINT16_MAX || o2 > UINT16_MAX) + return -1; + + ea->addr_bytes[0] = o0 >> 8; + ea->addr_bytes[1] = o0 & 0xff; + ea->addr_bytes[2] = o1 >> 8; + ea->addr_bytes[3] = o1 & 0xff; + ea->addr_bytes[4] = o2 >> 8; + ea->addr_bytes[5] = o2 & 0xff; + return 0; + } + /* unknown format */ + + return -1; +} diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h index 3caae0d98f6d..8edc7e217b25 100644 --- a/lib/librte_net/rte_ether.h +++ b/lib/librte_net/rte_ether.h @@ -250,6 +250,20 @@ static inline void rte_ether_addr_copy(const struct rte_ether_addr *ea_from, void rte_ether_format_addr(char *buf, uint16_t size, const struct rte_ether_addr *eth_addr); +/** + * Convert string with Ethernet address to an ether_addr. + * + * @param str + * A pointer to buffer contains the formatted MAC address. + * @param eth_addr + * A pointer to a ether_addr structure. + * @return + * 0 if successful + * -1 and sets rte_errno if invalid string + */ +int __rte_experimental +rte_ether_unformat_addr(const char *str, struct rte_ether_addr *eth_addr); + /** * Ethernet header: Contains the destination address, source address * and frame type. diff --git a/lib/librte_net/rte_net_version.map b/lib/librte_net/rte_net_version.map index f1e1b84ab491..f4c915069d57 100644 --- a/lib/librte_net/rte_net_version.map +++ b/lib/librte_net/rte_net_version.map @@ -25,4 +25,5 @@ EXPERIMENTAL { rte_net_make_rarp_packet; rte_net_skip_ip6_ext; + rte_ether_unformat_addr; }; From patchwork Tue Jul 2 22:12:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55911 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3FC0C1BE0A; Wed, 3 Jul 2019 00:12:58 +0200 (CEST) Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) by dpdk.org (Postfix) with ESMTP id 7A8B71BE04 for ; Wed, 3 Jul 2019 00:12:55 +0200 (CEST) Received: by mail-pf1-f195.google.com with SMTP id 81so108202pfy.13 for ; Tue, 02 Jul 2019 15:12:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LJP5NUGKYyva7BnvgS/UxCqLM/1j8w47JpFJi1u1tNU=; b=Tfm9n7G0w34X8XDTvdyQq+g3pubUlPCUoMT8ha0LY5PeYLMDrgiMaIDTVBEsb8E0XI DolqBwL9+CW9xxjIV6rMtR4PaaDUiwzhUdHh4PGB1Px3GxqEd84SeKoJsJe2biwAwdq8 lyaPMzNqHWmxJ3sA1/St/WBjnFErg8O3BKIl1xIIr736atXmZC3zeZKxZtyRmwgzgTMS BkVPsioJ42KFLEA79q1cSLKoQDptvp4TvpdAE2J/qy/hn80UDAhuf434rMfvIhcRqvwX htwj/30BvhoMz+dyTSN6nG9OQj6BpmeEEg3nbWD5caWICHbp+GPtgyacck0tQ9puGjb+ 6yDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LJP5NUGKYyva7BnvgS/UxCqLM/1j8w47JpFJi1u1tNU=; b=BRWTX6Is9mYo/Ar+NTxh+7Vs98XOopd55lW6bfGjRw4sN6zvF0FCCHHlje3jJJ1JiB /u/nsAsrGzSXgMeEUwyDwMokCx9hi20wrvXulFRXbVQcvh7B0mLRNPRdEIe0itxg1g4P fI2puC0wbHR4qB1tXLDU/ibIihTxFugwZXzONxoTUqB6J++Po/XkMTJoCxNIYyW219Bd SxKmQ6OQcWqvsExhR+VYrNE9fhZxxGpli5UAWileqgJatsg7RIPg+8NQsrat5K5gWurR QvmU0XMQBnw7GgRNHxmtvNPTQlXNidHRb0yb8p9gMFZ0EyNgW/IKM12nW/L5fmfeW7rh eGhQ== X-Gm-Message-State: APjAAAVejxc4yT3kjIrNtCPmDzrW3sYHabqcXwGCVmjBBQWC5oOQleH5 36rzpmZiyqGLeen493yPxjuia1t5KK4= X-Google-Smtp-Source: APXvYqzr3nOUcBTX6xSDgjqo7hDuriYjQ2162ymBIpJrHEhMvysLWu69YELtZO5B473llJ3ZuEGcUw== X-Received: by 2002:a63:d53:: with SMTP id 19mr33955766pgn.453.1562105574258; Tue, 02 Jul 2019 15:12:54 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.12.52 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:12:53 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 2 Jul 2019 15:12:38 -0700 Message-Id: <20190702221247.28391-4-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 03/12] ethdev: use new ethernet parsing function X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Use rte_eth_unformat_addr, so that ethdev can be built and work without the cmdline library. The dependency on cmdline was an arrangement of convenience anyway. Signed-off-by: Stephen Hemminger --- lib/Makefile | 1 - lib/librte_ethdev/Makefile | 2 +- lib/librte_ethdev/meson.build | 2 +- lib/librte_ethdev/rte_class_eth.c | 9 +-------- 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/lib/Makefile b/lib/Makefile index 791e0d9911d6..82b2c4bfa8ea 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -25,7 +25,6 @@ DIRS-$(CONFIG_RTE_LIBRTE_ETHER) += librte_ethdev DEPDIRS-librte_ethdev := librte_net librte_eal librte_mempool librte_ring DEPDIRS-librte_ethdev += librte_mbuf DEPDIRS-librte_ethdev += librte_kvargs -DEPDIRS-librte_ethdev += librte_cmdline DEPDIRS-librte_ethdev += librte_meter DIRS-$(CONFIG_RTE_LIBRTE_BBDEV) += librte_bbdev DEPDIRS-librte_bbdev := librte_eal librte_mempool librte_mbuf diff --git a/lib/librte_ethdev/Makefile b/lib/librte_ethdev/Makefile index 8d4a02630c4f..60bcc2227878 100644 --- a/lib/librte_ethdev/Makefile +++ b/lib/librte_ethdev/Makefile @@ -12,7 +12,7 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API CFLAGS += -O3 CFLAGS += $(WERROR_FLAGS) LDLIBS += -lrte_net -lrte_eal -lrte_mempool -lrte_ring -LDLIBS += -lrte_mbuf -lrte_kvargs -lrte_cmdline -lrte_meter +LDLIBS += -lrte_mbuf -lrte_kvargs -lrte_meter EXPORT_MAP := rte_ethdev_version.map diff --git a/lib/librte_ethdev/meson.build b/lib/librte_ethdev/meson.build index 8d6165b2a7dd..f75d428c96d0 100644 --- a/lib/librte_ethdev/meson.build +++ b/lib/librte_ethdev/meson.build @@ -26,4 +26,4 @@ headers = files('rte_ethdev.h', 'rte_tm.h', 'rte_tm_driver.h') -deps += ['net', 'kvargs', 'cmdline', 'meter'] +deps += ['net', 'kvargs', 'meter'] diff --git a/lib/librte_ethdev/rte_class_eth.c b/lib/librte_ethdev/rte_class_eth.c index 873a653532ad..6338355e2557 100644 --- a/lib/librte_ethdev/rte_class_eth.c +++ b/lib/librte_ethdev/rte_class_eth.c @@ -4,7 +4,6 @@ #include -#include #include #include #include @@ -43,19 +42,13 @@ static int eth_mac_cmp(const char *key __rte_unused, const char *value, void *opaque) { - int ret; struct rte_ether_addr mac; const struct rte_eth_dev_data *data = opaque; struct rte_eth_dev_info dev_info; uint32_t index; /* Parse devargs MAC address. */ - /* - * cannot use ether_aton_r(value, &mac) - * because of include conflict with rte_ether.h - */ - ret = cmdline_parse_etheraddr(NULL, value, &mac, sizeof(mac)); - if (ret < 0) + if (rte_ether_unformat_addr(value, &mac) < 0) return -1; /* invalid devargs value */ /* Return 0 if devargs MAC is matching one of the device MACs. */ From patchwork Tue Jul 2 22:12:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55912 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BE6AE1BE1D; Wed, 3 Jul 2019 00:13:00 +0200 (CEST) Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) by dpdk.org (Postfix) with ESMTP id 08D681BE08 for ; Wed, 3 Jul 2019 00:12:56 +0200 (CEST) Received: by mail-pg1-f173.google.com with SMTP id g15so86539pgi.4 for ; Tue, 02 Jul 2019 15:12:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8fFcBaPZKjQQPsKQQeFeSAG72mshjjR9mGZfTCJM/8s=; b=Ob863wrLrea/do6oATNAEkKwiVQPoH7bSOMXAA2VjG3T2iTjEGE/SM4HmP3krpKaeg zvslInw3Y/DQBapVnNN8aBuc963M2YbKWdqDx5OtCQnaBHSwoBz1F8XXj5I5K7Zqf6R5 cEGgGsKpoTSpd7RJYDfPqTSfMiymJGQXq71BEdHQ3aDfDkEZcWyCyCL52lsc9y9bmidg PzVrDOuUs+ose0C+/PXCsQiiChS6QsGi43KAaouRqRIWAbsHXRCSLexXdSjdytLKgrid DS/yX7yLGTS0IZ8OG2se8q7DrKNGJAs9DxyFlOB3JhekF2u+xF70p8XZvaPAyMmeJy2G Kr9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8fFcBaPZKjQQPsKQQeFeSAG72mshjjR9mGZfTCJM/8s=; b=H0zqJN6Q16ZG2QCekrhU2MK8b0lKXyPTWWcbgGDr/i7/ObzGAhiFzwJGVPVhCiwZ82 EF6oJ5r87IdU1E2mZqZ/wOZzOzy+lFp0Yur8Bz7LYc9Yg4EOk0gZ2Jct5gkcICt3nppb fpgrPHR6qRqpSXgA4lrR3JRyTGc9B+sHZhBMesHEJHNJIRD8zLyqVN8Q3pWkbqOpxDtc LUt1QckZFsGFgZbE/m40sNxtY0enK/x07i6Z9hzZseKZvXj+rXr8Bf/Pkd9b7rt9JHNt b+sK7m+mO1ySExAoCMPvggVwjv/2ywMUGeB3NvDqrIGdoQma5cg5ln2E1C6Dfc1FYoed Uzig== X-Gm-Message-State: APjAAAXlvUiZaGkgReGC0eSnPcfT7utmFcMkrruOcjVMDkQjFg3PRmhl 30VnT35Y7mGvcv3YaFJ585CJVoUaJx8= X-Google-Smtp-Source: APXvYqwU2GcwUoe61yzuv6R8FE469CwdqGQIl6lTfeLV8FkHRQN6FtRvpxiC3dRHCKJb9UgQj1OTYg== X-Received: by 2002:a65:45c1:: with SMTP id m1mr34252358pgr.260.1562105575757; Tue, 02 Jul 2019 15:12:55 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.12.54 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:12:54 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Andrew Rybchenko Date: Tue, 2 Jul 2019 15:12:39 -0700 Message-Id: <20190702221247.28391-5-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 04/12] net/ether: use bitops to speedup comparison X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Using bit operations like or and xor is faster than a loop on all architectures. Really just explicit unrolling. Similar cast to uint16 unaligned is already done in other functions here. Signed-off-by: Stephen Hemminger Reviewed-by: Andrew Rybchenko Acked-by: Olivier Matz --- lib/librte_net/rte_ether.h | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h index 8edc7e217b25..feb35a33c94b 100644 --- a/lib/librte_net/rte_ether.h +++ b/lib/librte_net/rte_ether.h @@ -81,11 +81,10 @@ struct rte_ether_addr { static inline int rte_is_same_ether_addr(const struct rte_ether_addr *ea1, const struct rte_ether_addr *ea2) { - int i; - for (i = 0; i < RTE_ETHER_ADDR_LEN; i++) - if (ea1->addr_bytes[i] != ea2->addr_bytes[i]) - return 0; - return 1; + const unaligned_uint16_t *w1 = (const uint16_t *)ea1; + const unaligned_uint16_t *w2 = (const uint16_t *)ea2; + + return ((w1[0] ^ w2[0]) | (w1[1] ^ w2[1]) | (w1[2] ^ w2[2])) == 0; } /** @@ -100,11 +99,9 @@ static inline int rte_is_same_ether_addr(const struct rte_ether_addr *ea1, */ static inline int rte_is_zero_ether_addr(const struct rte_ether_addr *ea) { - int i; - for (i = 0; i < RTE_ETHER_ADDR_LEN; i++) - if (ea->addr_bytes[i] != 0x00) - return 0; - return 1; + const unaligned_uint16_t *w = (const uint16_t *)ea; + + return (w[0] | w[1] | w[2]) == 0; } /** From patchwork Tue Jul 2 22:12:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55913 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 845091BE22; Wed, 3 Jul 2019 00:13:02 +0200 (CEST) Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by dpdk.org (Postfix) with ESMTP id 9706E1BE0E for ; Wed, 3 Jul 2019 00:12:58 +0200 (CEST) Received: by mail-pf1-f196.google.com with SMTP id t16so113288pfe.11 for ; Tue, 02 Jul 2019 15:12:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5jmpHlnhidg0ShQ7XItCpgaXpVK1xXtowoDpbYktXUk=; b=PGCX/9P4A3hho78zXtEEWnBoj1FAxMNsW/i3e4Owxt+66tpKd0HFDgh89DOqcUDxld G3JAeqXCbmNPnUliDtQZya+x/94vKZlCwVQK1olVkonUuE02hkehuLLH/TiTDpNTnWZn Bg4ush5+gDqN+JJDYe+ZjbD7NyZw5m9ydQlieMucZTGEYuORrIImIxxv84LiRZ4RRKqp HfXQ+rpTCgTvh+Y4ljKZKOeexqAEQgH+Fz/0OgjWwsk0enpD3CQlNXx09InbfpEQMe4U 7bySp6P1m+slounnjUpY4R/qPmNI6KW2v5VR1kwBiZve1TyvXveVCRqHQ+bhDM3ldz68 a5lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5jmpHlnhidg0ShQ7XItCpgaXpVK1xXtowoDpbYktXUk=; b=SAdz2fNGXAT+bwPmSo7XQIMggkuJJ8phQr/UbxPi6QZ8TgYpBf1F3UsSpz8S667Icm 8Fl/P/71YWn8k4LCYczpLbffGaPJlNuN4GCDXNfOvkJf2ZwBP+EXdiGaoiqsH8fp9piJ AJgCqOZnC9mMieA9u27VBpPTTf2RDc+HsIuHJ/S8JvfLUFhVx2WW7Z8GORJlfDagqh8w 0t/ZdUgQk4pTWJrmV6axdxmU73E4tdL+cw7nw1URWeKSGPhGadHF2gt2MitZj1ZURyrV tvfIdZpCvbAFREejRj6makLoYh1nXZ2hgNW3Qw4oT/gDhHWTIrn8XgQHbih9l0FtmFQ9 KYVA== X-Gm-Message-State: APjAAAWzjCKyCcR3jXc9Iyt+JGu3AO1/0FkoPCg/5da5bfm7pdCsRYYM yJ9PoCfLnDZPwUnp41vJiG8cbd+0q+U= X-Google-Smtp-Source: APXvYqxeHh39tCrxDmfnPBawAcKrZy/jEjbUXXkjCt8zNqJ1rau99EK4ACDvCJfF/+3UWT0ynFAJ3Q== X-Received: by 2002:a65:4844:: with SMTP id i4mr16113056pgs.113.1562105577229; Tue, 02 Jul 2019 15:12:57 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.12.55 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:12:56 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Bruce Richardson , Stephen Hemminger , Andrew Rybchenko Date: Tue, 2 Jul 2019 15:12:40 -0700 Message-Id: <20190702221247.28391-6-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 05/12] net/ether: mark ethernet addresses as being 2-byte aligned X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Bruce Richardson When including the rte_ether.h header in applications with warnings enabled, a warning was given because of the assumption of 2-byte alignment of ethernet addresses when processing them. .../include/rte_ether.h:149:2: warning: converting a packed ‘const struct ether_addr’ pointer (alignment 1) to a ‘unaligned_uint16_t’ {aka ‘const short unsigned int’} pointer (alignment 2) may result in an unaligned pointer value [-Waddress-of-packed-member] 149 | const unaligned_uint16_t *ea_words = (const unaligned_uint16_t *)ea; | ^~~~~ Since ethernet addresses should always be aligned on a two-byte boundary, we can just inform the compiler of this assumption to remove the warnings and allow us to always access the addresses using 16-bit operations. Signed-off-by: Bruce Richardson Signed-off-by: Stephen Hemminger Reviewed-by: Andrew Rybchenko --- lib/librte_net/rte_ether.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h index feb35a33c94b..d7b76ddf63eb 100644 --- a/lib/librte_net/rte_ether.h +++ b/lib/librte_net/rte_ether.h @@ -58,7 +58,8 @@ extern "C" { * See http://standards.ieee.org/regauth/groupmac/tutorial.html */ struct rte_ether_addr { - uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]; /**< Addr bytes in tx order */ + uint8_t addr_bytes[RTE_ETHER_ADDR_LEN] __rte_aligned(2); + /**< Addr bytes in tx order */ } __attribute__((__packed__)); #define RTE_ETHER_LOCAL_ADMIN_ADDR 0x02 /**< Locally assigned Eth. address. */ @@ -81,8 +82,8 @@ struct rte_ether_addr { static inline int rte_is_same_ether_addr(const struct rte_ether_addr *ea1, const struct rte_ether_addr *ea2) { - const unaligned_uint16_t *w1 = (const uint16_t *)ea1; - const unaligned_uint16_t *w2 = (const uint16_t *)ea2; + const uint16_t *w1 = (const uint16_t *)ea1; + const uint16_t *w2 = (const uint16_t *)ea2; return ((w1[0] ^ w2[0]) | (w1[1] ^ w2[1]) | (w1[2] ^ w2[2])) == 0; } @@ -99,7 +100,7 @@ static inline int rte_is_same_ether_addr(const struct rte_ether_addr *ea1, */ static inline int rte_is_zero_ether_addr(const struct rte_ether_addr *ea) { - const unaligned_uint16_t *w = (const uint16_t *)ea; + const uint16_t *w = (const uint16_t *)ea; return (w[0] | w[1] | w[2]) == 0; } @@ -146,7 +147,7 @@ static inline int rte_is_multicast_ether_addr(const struct rte_ether_addr *ea) */ static inline int rte_is_broadcast_ether_addr(const struct rte_ether_addr *ea) { - const unaligned_uint16_t *ea_words = (const unaligned_uint16_t *)ea; + const uint16_t *ea_words = (const uint16_t *)ea; return (ea_words[0] == 0xFFFF && ea_words[1] == 0xFFFF && ea_words[2] == 0xFFFF); From patchwork Tue Jul 2 22:12:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55914 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A3BA71BE27; Wed, 3 Jul 2019 00:13:04 +0200 (CEST) Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by dpdk.org (Postfix) with ESMTP id F0D021BE20 for ; Wed, 3 Jul 2019 00:13:00 +0200 (CEST) Received: by mail-pg1-f195.google.com with SMTP id 196so81431pgc.6 for ; Tue, 02 Jul 2019 15:13:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nSVFX0yQVcGBa1r6QYEZh1MHAfeY/re5mRSHtJ+79X4=; b=PIeRCpYRNyiD9WjvKI2wQdVZ33vQhv+1o6dO0JJxvx0hShBgz8AooZ38/BVGe3Sz2p +jtp8OFXRMErRy768XaBYmywJ9phpk4qOuR6CLAzzFCcrv2tc/+Z+juSjdJvpdhPKli7 EykfhC6cVkpMC0Kks5g/LGArPhnwEeMSYn99S+7r6l+S/yIo8oe5x3NST3NOyi0L411Z tLa9Tpv7kEexGbJiqHrhvnfgcaMvWRa6pA5iL4aT4wj6rekuEyGwM439enVXTZZPiC0y oHeebNwai5VjlqbMGBKvmixhYI7rQqxBlEMJn+cRqWs/Ibd/Gs+ZMILmLbwMkzaVTh+b MLdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nSVFX0yQVcGBa1r6QYEZh1MHAfeY/re5mRSHtJ+79X4=; b=sdXtc1zSVT7GYLuA6O+aCmrLkIpjr4/qiSUfJD44sbpwAKdXZIriZlCHVQYA3AUohq euF+1/rZrOYnte1EEClJrJeMHM7xSxFFmAmVtOL6aTGi6dW9f4XpBQrNUYoLVjeA8ALv NzzlZB3tuXynNaw5YKoswmuOo4sImjN2vYWWTZBd1jazUBTiweQEb/Ho000DwliPsoRD c9bqZLynXFVh914IgOpYV+Oj+YX9IgHiIl2Zjyk25X4s/GvsUFlWoN9v7S5zEf/dPEkY QrPffpBfpz4vmVxyKca98e5vPqpdB2PeUDltAmx0vSPZpTieVRzB07spD9ZNah3gwrhV mhnw== X-Gm-Message-State: APjAAAXtO8P/EK8R4+tsCCYEHW4+dGfpossIugEsbO1po0xEPCfVU3z0 3ThiPFuJoxvMMwHn5d4GjURrJdPTBc4= X-Google-Smtp-Source: APXvYqxb+LKWuVd/sZ4ownDYwYY9OG02540RJLJbg39e1k4A3OtOTCfrq7iKw2B5JjBESujLu+MBTQ== X-Received: by 2002:a63:d950:: with SMTP id e16mr34484295pgj.271.1562105579752; Tue, 02 Jul 2019 15:12:59 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.12.57 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:12:57 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 2 Jul 2019 15:12:41 -0700 Message-Id: <20190702221247.28391-7-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 06/12] cmdline: use new ethernet address parser X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Now that there is a version of ether_aton in rte_ether, it can be used by the cmdline ethernet address parser. Note: ether_aton_r can not be used in cmdline because the old code would accept either bytes XX:XX:XX:XX:XX:XX or words XXXX:XXXX:XXXX and we need to keep compatiablity. Signed-off-by: Stephen Hemminger Acked-by: Olivier Matz --- lib/Makefile | 2 +- lib/librte_cmdline/Makefile | 3 +- lib/librte_cmdline/cmdline_parse_etheraddr.c | 71 +++----------------- lib/librte_cmdline/meson.build | 6 +- lib/meson.build | 2 +- 5 files changed, 15 insertions(+), 69 deletions(-) diff --git a/lib/Makefile b/lib/Makefile index 82b2c4bfa8ea..cc36fe7591f0 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -20,7 +20,7 @@ DIRS-$(CONFIG_RTE_LIBRTE_TIMER) += librte_timer DEPDIRS-librte_timer := librte_eal DIRS-$(CONFIG_RTE_LIBRTE_CFGFILE) += librte_cfgfile DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += librte_cmdline -DEPDIRS-librte_cmdline := librte_eal +DEPDIRS-librte_cmdline := librte_eal librte_net DIRS-$(CONFIG_RTE_LIBRTE_ETHER) += librte_ethdev DEPDIRS-librte_ethdev := librte_net librte_eal librte_mempool librte_ring DEPDIRS-librte_ethdev += librte_mbuf diff --git a/lib/librte_cmdline/Makefile b/lib/librte_cmdline/Makefile index c64142b8d5a0..04057d7c671f 100644 --- a/lib/librte_cmdline/Makefile +++ b/lib/librte_cmdline/Makefile @@ -7,6 +7,7 @@ include $(RTE_SDK)/mk/rte.vars.mk LIB = librte_cmdline.a CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 +CFLAGS += -DALLOW_EXPERIMENTAL_API EXPORT_MAP := rte_cmdline_version.map @@ -25,7 +26,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_vt100.c SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_socket.c SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_parse_portlist.c -LDLIBS += -lrte_eal +LDLIBS += -lrte_net -lrte_eal # install includes INCS := cmdline.h cmdline_parse.h cmdline_parse_num.h cmdline_parse_ipaddr.h diff --git a/lib/librte_cmdline/cmdline_parse_etheraddr.c b/lib/librte_cmdline/cmdline_parse_etheraddr.c index 24e04755cd9e..2cb8dd2a1267 100644 --- a/lib/librte_cmdline/cmdline_parse_etheraddr.c +++ b/lib/librte_cmdline/cmdline_parse_etheraddr.c @@ -12,9 +12,9 @@ #include #include #include -#include #include +#include #include "cmdline_parse.h" #include "cmdline_parse_etheraddr.h" @@ -26,69 +26,15 @@ struct cmdline_token_ops cmdline_token_etheraddr_ops = { .get_help = cmdline_get_help_etheraddr, }; -/* the format can be either XX:XX:XX:XX:XX:XX or XXXX:XXXX:XXXX */ -#define ETHER_ADDRSTRLENLONG 18 -#define ETHER_ADDRSTRLENSHORT 15 - -#ifdef __linux__ -#define ea_oct ether_addr_octet -#else -#define ea_oct octet -#endif - - -static struct ether_addr * -my_ether_aton(const char *a) -{ - int i; - char *end; - unsigned long o[ETHER_ADDR_LEN]; - static struct ether_addr ether_addr; - - i = 0; - do { - errno = 0; - o[i] = strtoul(a, &end, 16); - if (errno != 0 || end == a || (end[0] != ':' && end[0] != 0)) - return NULL; - a = end + 1; - } while (++i != sizeof (o) / sizeof (o[0]) && end[0] != 0); - - /* Junk at the end of line */ - if (end[0] != 0) - return NULL; - - /* Support the format XX:XX:XX:XX:XX:XX */ - if (i == ETHER_ADDR_LEN) { - while (i-- != 0) { - if (o[i] > UINT8_MAX) - return NULL; - ether_addr.ea_oct[i] = (uint8_t)o[i]; - } - /* Support the format XXXX:XXXX:XXXX */ - } else if (i == ETHER_ADDR_LEN / 2) { - while (i-- != 0) { - if (o[i] > UINT16_MAX) - return NULL; - ether_addr.ea_oct[i * 2] = (uint8_t)(o[i] >> 8); - ether_addr.ea_oct[i * 2 + 1] = (uint8_t)(o[i] & 0xff); - } - /* unknown format */ - } else - return NULL; - - return (struct ether_addr *)ðer_addr; -} - int cmdline_parse_etheraddr(__attribute__((unused)) cmdline_parse_token_hdr_t *tk, const char *buf, void *res, unsigned ressize) { unsigned int token_len = 0; - char ether_str[ETHER_ADDRSTRLENLONG+1]; - struct ether_addr *tmp; + char ether_str[RTE_ETHER_ADDR_FMT_SIZE]; + struct rte_ether_addr tmp; - if (res && ressize < sizeof(struct ether_addr)) + if (res && ressize < sizeof(tmp)) return -1; if (!buf || ! *buf) @@ -98,17 +44,16 @@ cmdline_parse_etheraddr(__attribute__((unused)) cmdline_parse_token_hdr_t *tk, token_len++; /* if token doesn't match possible string lengths... */ - if ((token_len != ETHER_ADDRSTRLENLONG - 1) && - (token_len != ETHER_ADDRSTRLENSHORT - 1)) + if (token_len >= RTE_ETHER_ADDR_FMT_SIZE) return -1; strlcpy(ether_str, buf, token_len + 1); - tmp = my_ether_aton(ether_str); - if (tmp == NULL) + if (rte_ether_unformat_addr(ether_str, &tmp) < 0) return -1; + if (res) - memcpy(res, tmp, sizeof(struct ether_addr)); + memcpy(res, &tmp, sizeof(tmp)); return token_len; } diff --git a/lib/librte_cmdline/meson.build b/lib/librte_cmdline/meson.build index 0fa61385fccf..07334c1b0956 100644 --- a/lib/librte_cmdline/meson.build +++ b/lib/librte_cmdline/meson.build @@ -1,10 +1,8 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation -# This library is processed before EAL -includes = [global_inc] - version = 2 +allow_experimental_apis = true sources = files('cmdline.c', 'cmdline_cirbuf.c', 'cmdline_parse.c', @@ -28,3 +26,5 @@ headers = files('cmdline.h', 'cmdline_socket.h', 'cmdline_cirbuf.h', 'cmdline_parse_portlist.h') + +deps += ['net'] diff --git a/lib/meson.build b/lib/meson.build index 9398a3ac04e3..c133f2f35ff3 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -11,8 +11,8 @@ libraries = [ 'kvargs', # eal depends on kvargs 'eal', # everything depends on eal - 'cmdline', # ethdev depends on cmdline for parsing functions 'ring', 'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci', # core + 'cmdline', 'metrics', # bitrate/latency stats depends on this 'hash', # efd depends on this 'timer', # eventdev depends on this From patchwork Tue Jul 2 22:12:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55915 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F14711BE31; Wed, 3 Jul 2019 00:13:06 +0200 (CEST) Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by dpdk.org (Postfix) with ESMTP id 190451BE08 for ; Wed, 3 Jul 2019 00:13:02 +0200 (CEST) Received: by mail-pf1-f196.google.com with SMTP id p184so123516pfp.7 for ; Tue, 02 Jul 2019 15:13:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=i8sEf2BqVxRRW7Hf5r4EMIM/xDPKtZVL0Pik8O21io8=; b=zNZXi5qh4M+5WdMAkBdNnNKkm15LWGc9L4lgUF2sbRVE6NeF7qPEOz5cZSptQO8XZM A3TAmCwmcfLBvBGNvnrcsOFY9GYMmfSsEb7Ygr+q+X7G/8G3LyZG2r4mRkeiIvl/8Y5a +uuYLje8my+ZWghroR/L6BKENfGNYFTVRHDNsOZRU4mvFqCzmJOfJTrbaFkhN7hd6UzI IHMIYg36RdGcyLEoOpZmNEjOhpP1e1Bc8+uA9FS7OshdDYgfZwTTe/MvOMGql7x8AzuN d1D9/hySjq0HDI5aGbUygy0GakteiMzozY+QNmM76e2q27kqp2PBLKnI8gkEqzcWwj/0 ++Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=i8sEf2BqVxRRW7Hf5r4EMIM/xDPKtZVL0Pik8O21io8=; b=i9nMbe+kBERkqgDTKNA3aC3fENeq0PARobH2h/FBobofFnN9J/Ehg/dE5eNf5JCkBH LSJSUWm+0WLRtX9as3Qi/lS9FOJ6ZVxjGqXew+j7CH1J+olN6yPLtsutXjSntrk1Tv5m gVn0J80s9eNmsOUTOHhgh9EB6HE4bQdUG9XWZ7OyxD4nSeUpkLedVRdzcqizfSrDLg23 R4RaOyjBDAnisOmWS0kboz6/+Lmlu1LlFWEARfcL2Tvp+EJLU5MsRx5sP0W2Du8pNrk8 k+OvGtHNwvls4WEqzn67E9twwszSB2bdqIlaT9M7BxwchODZYtF/a0EiO4ujSJHlakuR HMgg== X-Gm-Message-State: APjAAAWAwrOlDHTKzyB3/pWRvnNbpzhpSqfvh9Yzhr//AiBhLVzK6n6I qWrGxMw3cfkYkI88uv/1hjAZMwUc X-Google-Smtp-Source: APXvYqw63rps8r2NK+6QwHXioJZrMBqs2l0trbdicn7rGk1Ju2xM2F76pQv1rressF2k4BXBmTra9g== X-Received: by 2002:a17:90a:3086:: with SMTP id h6mr8379381pjb.14.1562105581042; Tue, 02 Jul 2019 15:13:01 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.12.59 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:13:00 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 2 Jul 2019 15:12:42 -0700 Message-Id: <20190702221247.28391-8-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 07/12] net/bonding: use new ethernet address parser X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The cmdline library used to be the only way to parse a mac address. Now there is rte_ether_unformat_addr. Signed-off-by: Stephen Hemminger --- drivers/net/bonding/Makefile | 2 +- drivers/net/bonding/meson.build | 2 +- drivers/net/bonding/rte_eth_bond_args.c | 6 +----- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/net/bonding/Makefile b/drivers/net/bonding/Makefile index 1893e3cad313..26c1782554cd 100644 --- a/drivers/net/bonding/Makefile +++ b/drivers/net/bonding/Makefile @@ -12,7 +12,7 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API CFLAGS += -O3 CFLAGS += $(WERROR_FLAGS) LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring -LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_cmdline +LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs LDLIBS += -lrte_pci -lrte_bus_pci LDLIBS += -lrte_bus_vdev diff --git a/drivers/net/bonding/meson.build b/drivers/net/bonding/meson.build index 00374edb2a9d..6267210adf5f 100644 --- a/drivers/net/bonding/meson.build +++ b/drivers/net/bonding/meson.build @@ -8,6 +8,6 @@ sources = files('rte_eth_bond_api.c', 'rte_eth_bond_pmd.c', 'rte_eth_bond_flow.c 'rte_eth_bond_args.c', 'rte_eth_bond_8023ad.c', 'rte_eth_bond_alb.c') deps += 'sched' # needed for rte_bitmap.h -deps += ['ip_frag', 'cmdline'] +deps += ['ip_frag'] install_headers('rte_eth_bond.h', 'rte_eth_bond_8023ad.h') diff --git a/drivers/net/bonding/rte_eth_bond_args.c b/drivers/net/bonding/rte_eth_bond_args.c index 01bbb06c1a84..936440fb8491 100644 --- a/drivers/net/bonding/rte_eth_bond_args.c +++ b/drivers/net/bonding/rte_eth_bond_args.c @@ -7,9 +7,6 @@ #include #include -#include -#include - #include "rte_eth_bond.h" #include "rte_eth_bond_private.h" @@ -281,8 +278,7 @@ bond_ethdev_parse_bond_mac_addr_kvarg(const char *key __rte_unused, return -1; /* Parse MAC */ - return cmdline_parse_etheraddr(NULL, value, extra_args, - sizeof(struct rte_ether_addr)); + return rte_ether_unformat_addr(value, extra_args); } int From patchwork Tue Jul 2 22:12:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55916 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0A87A1BE37; Wed, 3 Jul 2019 00:13:09 +0200 (CEST) Received: from mail-pl1-f195.google.com (mail-pl1-f195.google.com [209.85.214.195]) by dpdk.org (Postfix) with ESMTP id 363C91BE17 for ; Wed, 3 Jul 2019 00:13:03 +0200 (CEST) Received: by mail-pl1-f195.google.com with SMTP id a93so29508pla.7 for ; Tue, 02 Jul 2019 15:13:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=xdUsjvA+XM/A8lvdK1H1mldU1CJ2JFzy3kElJGpilZc=; b=1QdZXIwbgw8vnK4F88QuduR4/e9n5emu3AtzooOoFoz+/oWO8TM+Cz5J9vvBJDGKr0 pbGG2QElDISsTbvmUur+JOO5bvjKFdJnyBQRKOSNjVRCg88diNeO08J3rKRiPAU8C+04 kMM8MTk0K4LRUBUrGYrv9PjfQrCynyRRGT4CDlYi2kS5IyhG28f/mn8E69cbGmseMA0+ ABLuAAFN+3AIXvnrIrm3mcTDfUzeRMg/MlAIfzzMID9oL5VCEGY75plEk3pbBOP1cXZa CRywmEaAX8GqqDSNHa9UDkbo4nigxzwwQinzhjgnlh1luotHUfRbtVewM6rtG8GfZiRC X2uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xdUsjvA+XM/A8lvdK1H1mldU1CJ2JFzy3kElJGpilZc=; b=f+K1cPjidi8Sm5GTzfZem/+wht6+kk1rnCh98ziR+4sxEe3sMWadczFBGXdPwNstjH lMPvztmsM3MTZVUuc0kxDCiyoHPHG55xHoiev7Te2nDewzmvoUhPYTLJIa5TsrmM1kZV gzSYn2SksDoDMWhTmSdLOLtHO5m/yj+3OgRh6EqrI4XlNapcaSrJxQO+mQ7zM73DHBGv DzpR1lNMQL+utW6YWXTOzZFB/cxij3l4UXSqxIAPBBDXIK5x1rCWxCO4xBi/VsP0yj9P 7DuAJ+qYFfzhyuLM/e/8dPA3j5+V7EjCvPhn1qAHwurVhdXDgFq7MgOtNwZ7TLth3StX TrUQ== X-Gm-Message-State: APjAAAV2VISPqO6VcF/h08OvnVBgcO0XYtyCwzg++nkL4y3CvAzAsBLH gultcFSwtSS2/4UnwHRWw7nHk8OLNPo= X-Google-Smtp-Source: APXvYqzQylfKT2SLUbtTJOsWdANENRZdRYudWOiRVQtdFx+Pmk270LFx8jkuCwa3E++SoESmRzxkYw== X-Received: by 2002:a17:902:583:: with SMTP id f3mr37549953plf.137.1562105582120; Tue, 02 Jul 2019 15:13:02 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.13.01 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:13:01 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 2 Jul 2019 15:12:43 -0700 Message-Id: <20190702221247.28391-9-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 08/12] app/testpmd: use new ethernet address parser X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The cmdline_parse_ether_addr does not need to be used everywhere in testpmd. Can use rte_ether_unformat_addr instead. As an added bonus it eliminates some code for copying. Signed-off-by: Stephen Hemminger Acked-by: Bernard Iremonger --- app/test-pmd/cmdline_flow.c | 5 ++--- app/test-pmd/config.c | 10 +++------- app/test-pmd/parameters.c | 15 +++------------ 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 201bd9de56e0..2b02ca29b7ac 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #include "testpmd.h" @@ -4627,8 +4626,8 @@ parse_mac_addr(struct context *ctx, const struct token *token, /* Only network endian is supported. */ if (!arg->hton) goto error; - ret = cmdline_parse_etheraddr(NULL, str, &tmp, size); - if (ret < 0 || (unsigned int)ret != len) + ret = rte_ether_unformat_addr(str, &tmp); + if (ret < 0) goto error; if (!ctx->object) return len; diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index ab458c8d2837..1d804705d96c 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -49,7 +49,6 @@ #include #endif #include -#include #include #include "testpmd.h" @@ -2278,19 +2277,16 @@ pkt_fwd_config_display(struct fwd_config *cfg) void set_fwd_eth_peer(portid_t port_id, char *peer_addr) { - uint8_t c, new_peer_addr[6]; + struct rte_ether_addr new_peer_addr; if (!rte_eth_dev_is_valid_port(port_id)) { printf("Error: Invalid port number %i\n", port_id); return; } - if (cmdline_parse_etheraddr(NULL, peer_addr, &new_peer_addr, - sizeof(new_peer_addr)) < 0) { + if (rte_ether_unformat_addr(peer_addr, &new_peer_addr) < 0) { printf("Error: Invalid ethernet address: %s\n", peer_addr); return; } - for (c = 0; c < 6; c++) - peer_eth_addrs[port_id].addr_bytes[c] = - new_peer_addr[c]; + peer_eth_addrs[port_id] = new_peer_addr; } int diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index 245b610641ee..975a97807009 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -39,10 +39,6 @@ #include #include #include -#ifdef RTE_LIBRTE_CMDLINE -#include -#include -#endif #ifdef RTE_LIBRTE_PMD_BOND #include #endif @@ -227,8 +223,7 @@ init_peer_eth_addrs(char *config_filename) if (fgets(buf, sizeof(buf), config_file) == NULL) break; - if (cmdline_parse_etheraddr(NULL, buf, &peer_eth_addrs[i], - sizeof(peer_eth_addrs[i])) < 0) { + if (rte_ether_unformat_addr(buf, &peer_eth_addrs[i]) < 0) { printf("Bad MAC address format on line %d\n", i+1); fclose(config_file); return -1; @@ -727,7 +722,6 @@ launch_args_parse(int argc, char** argv) } if (!strcmp(lgopts[opt_idx].name, "eth-peer")) { char *port_end; - uint8_t c, peer_addr[6]; errno = 0; n = strtoul(optarg, &port_end, 10); @@ -739,14 +733,11 @@ launch_args_parse(int argc, char** argv) "eth-peer: port %d >= RTE_MAX_ETHPORTS(%d)\n", n, RTE_MAX_ETHPORTS); - if (cmdline_parse_etheraddr(NULL, port_end, - &peer_addr, sizeof(peer_addr)) < 0) + if (rte_ether_unformat_addr(port_end, + &peer_eth_addrs[n]) < 0) rte_exit(EXIT_FAILURE, "Invalid ethernet address: %s\n", port_end); - for (c = 0; c < 6; c++) - peer_eth_addrs[n].addr_bytes[c] = - peer_addr[c]; nb_peer_eth_addrs++; } #endif From patchwork Tue Jul 2 22:12:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55917 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5C92D1BE43; Wed, 3 Jul 2019 00:13:11 +0200 (CEST) Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by dpdk.org (Postfix) with ESMTP id E28591BE29 for ; Wed, 3 Jul 2019 00:13:04 +0200 (CEST) Received: by mail-pg1-f193.google.com with SMTP id 196so81505pgc.6 for ; Tue, 02 Jul 2019 15:13:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hwEmjfBCDm2MyBGuk9lC8m9EUUnn0LmDNhMzslFOsA0=; b=0kh2uWhgIed6rTYBhqbYu5oVjI+X+Vfzmx10KI1miXI2j5FBamNBYwKXs9jikuMq4I WrHtvXhpGHegpbL1u9MO6V2sH9gssFt7FR6B9uzOysxpn2rJcRw0VGE/FWZxZUqNrcLF JfOi5k00oAlRbutvdFSzcVgUDYBS4bl0Mg01xnNiNuHRF0iG9uz14fu9Vh6eL3wWD7Oo btAku5NFFY8nzmeJafqkRZhrmPg4SOy4IEqUcDBAR3NuXSJOEtFEXYMFhc12CGFnRynu bYmGf/i3Nog5ZNvLfHGKp8CdpvKyeei0bOPODx5fzGnILWlqpqbAaKaMAP7GYueQQs5E k2lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hwEmjfBCDm2MyBGuk9lC8m9EUUnn0LmDNhMzslFOsA0=; b=E2lXH8WPTIXDZ9+Jwhvcxpur9MCWYIsyEzwXD+xje7hN0JpCkVVxXpItIZaqwxvXQi 3AqNlwGOWKznJbrriTZnbbdTGMd9BwgAwIj5QFh/pDbY9RQQSvXovZFikQDdrQqyahIu RAS2ergxErooyyyzCvSnLtCwMDnKpkIYgTSEp5V72N7K66JpaIPM5f2Vi/PKV7GEU+Jc K7063srKMqBXiGG56Etc+H0HsVNJJWaNL/dfQ5YSq+33laOkGKWI4PK5w/8IHA740g/p ueoAcqSVWHHyijYtCzPMV8KMVqXuke6/4bRO2DePzkl0mtYRj7KKmXimYs00RTEvJmvZ j9Iw== X-Gm-Message-State: APjAAAXqJXDbF3iwf3VxN/ggmlmQk6ckkzA58ut1pa3lw0AJSsJPlkpO 4Sw5Yo29BH2FrNCh9ZRRFITHn9xv X-Google-Smtp-Source: APXvYqxGOPnjxJdIv8T3hG3GWtDOg7BvBiDJxT5AQL34LCsTw87yTS3AKkCF7Z/ZS2D3T9xoTLoCOw== X-Received: by 2002:a17:90a:b908:: with SMTP id p8mr8191208pjr.94.1562105583488; Tue, 02 Jul 2019 15:13:03 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.13.02 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:13:02 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 2 Jul 2019 15:12:44 -0700 Message-Id: <20190702221247.28391-10-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 09/12] net/virtio: use new ether addr parsing X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Use rte_ether_unformat_addr rather than sscanf. Signed-off-by: Stephen Hemminger --- drivers/net/virtio/virtio_user/virtio_user_dev.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c index e743695e4510..0bac725e7cdd 100644 --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c @@ -225,17 +225,13 @@ int virtio_user_stop_device(struct virtio_user_dev *dev) static inline void parse_mac(struct virtio_user_dev *dev, const char *mac) { - int i, r; - uint32_t tmp[RTE_ETHER_ADDR_LEN]; + struct rte_ether_addr tmp; if (!mac) return; - r = sscanf(mac, "%x:%x:%x:%x:%x:%x", &tmp[0], - &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5]); - if (r == RTE_ETHER_ADDR_LEN) { - for (i = 0; i < RTE_ETHER_ADDR_LEN; ++i) - dev->mac_addr[i] = (uint8_t)tmp[i]; + if (rte_ether_unformat_addr(mac, &tmp) == 0) { + memcpy(dev->mac_addr, &tmp, RTE_ETHER_ADDR_LEN); dev->mac_specified = 1; } else { /* ignore the wrong mac, use random mac */ From patchwork Tue Jul 2 22:12:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55918 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0635A1BE49; Wed, 3 Jul 2019 00:13:13 +0200 (CEST) Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) by dpdk.org (Postfix) with ESMTP id 4C76B1BE2B for ; Wed, 3 Jul 2019 00:13:05 +0200 (CEST) Received: by mail-pl1-f194.google.com with SMTP id 9so34480ple.5 for ; Tue, 02 Jul 2019 15:13:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3/kQl1j5SyxKKzbEezksBjCK+/0wdFo2ezqWlQlqQR4=; b=YFgGbP5NeZQGBpnoQvjKD7lBYqKQzpN7xc4v9rb42z2pLUzp9vf2dDApbbpw5lIEXW U1eDkQvNAmW9jeUVvGalTSbHMgKcurRU6BlD0x6aWZrkS5k++Gx0WL9ertEuOZqbRTbg cbaIbfd0JknP5b4zqFdzayai/wZ7t4MW/SjZ3gWrBwXSDU3jWx4KgtW8oHXezjt/HS+8 lX3qGYO9akn0HjdMUB0KkeTdgOVss26KD6RSXhjcbwtUwQbPDmKE1pDDMzqF+QF5Z0sV UF/c1wMcrEaPhqMvwwSPqcvEkoa3pmLuwfMQ4f9DarJmMbkmAncRglUGSmyhuXy03u97 dnHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3/kQl1j5SyxKKzbEezksBjCK+/0wdFo2ezqWlQlqQR4=; b=kTbZ+m0MUmIGOZ4yUCcfFJZbTLlLFzb4s4VPv82iHVK6g3q21hv7B0HrtkHFkOoRL6 D9r1Cy5BcjtXqyva+gyi6zose7wfWzoIcAN2c11OGiq5o6KVAPMk/NRTwhP85rX7EGey USp5lpH0uN1+lYbxNyF6yl2+MjUmlW92dgxPPimN3D/ihLbEUcLPifgvGGg4dDBXoquc 5bMZgMrLhvoxH6qiot22Nssbk+8mzy7aFbGu0QrlZnkXviXSFhZ/1tmNfKSvFI89Chva y4jivUVqRNewAIEV18b72BBV9fnZksPfDcpBttWj+D59so0EZCT/ZcE0Gya6zZgRXe5P Sahw== X-Gm-Message-State: APjAAAW+/eccM3opuijuDsUDoClGidq+eXOljCHzMR1LD7RNOzSnNzTj kFDhz0NryIF8hFR5xx/vIdNPtY836ng= X-Google-Smtp-Source: APXvYqwy3I5EcMohFPXLsQCSD9C7XmYZbKABs1wXhqShgxRaItsi6OdobPi56KmvLss9dN8PS3uwcw== X-Received: by 2002:a17:902:29a7:: with SMTP id h36mr38818423plb.158.1562105584190; Tue, 02 Jul 2019 15:13:04 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.13.03 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:13:03 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 2 Jul 2019 15:12:45 -0700 Message-Id: <20190702221247.28391-11-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 10/12] net/failsafe: use common ether address parsing routine X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Use rte_ether_unformat_addr rather than sscanf. Signed-off-by: Stephen Hemminger Acked-by: Gaetan Rivet --- drivers/net/failsafe/failsafe_args.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/failsafe/failsafe_args.c b/drivers/net/failsafe/failsafe_args.c index d2e725bcea13..707490b94c4e 100644 --- a/drivers/net/failsafe/failsafe_args.c +++ b/drivers/net/failsafe/failsafe_args.c @@ -368,15 +368,11 @@ fs_get_mac_addr_arg(const char *key __rte_unused, const char *value, void *out) { struct rte_ether_addr *ea = out; - int ret; if ((value == NULL) || (out == NULL)) return -EINVAL; - ret = sscanf(value, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", - &ea->addr_bytes[0], &ea->addr_bytes[1], - &ea->addr_bytes[2], &ea->addr_bytes[3], - &ea->addr_bytes[4], &ea->addr_bytes[5]); - return ret != RTE_ETHER_ADDR_LEN; + + return rte_ether_unformat_addr(value, ea); } int From patchwork Tue Jul 2 22:12:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55919 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2410E1BE4E; Wed, 3 Jul 2019 00:13:16 +0200 (CEST) Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) by dpdk.org (Postfix) with ESMTP id 8BC691BE21 for ; Wed, 3 Jul 2019 00:13:06 +0200 (CEST) Received: by mail-pg1-f176.google.com with SMTP id z75so84532pgz.5 for ; Tue, 02 Jul 2019 15:13:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4CfiP0PExkw4Vs3xMlc1LVPAlGrPbQ/hj++m20DmMLU=; b=ml8OdyCs0P9C8ouG+fA92xuEGG9XXVssclfDrq5LxP7e3/4fHf+Ubc8o7sbmQoZZ6b J+bd0+34IPt76/f590Og7LrUuHlguWi9jR4QC96DzpCciI41idYhKwKrsqa83FvPs1Ug C4vNvAPtCOjEyIfGwK2rcDlzStnb45ab2gBfrg5PpE/sbRYsJkbJZEgXulwzHf9UcvEq XAcnELrOuZEKRi7KJwM7aox5cZAZhcsm/UGPXReygg+EzGi5R3zNJ/BbYqXy5UaKCs8n HOWkaMPi4nKs/TOxBMJStXzp/7eakGdcF/+RB4cT9gHVwYfncyOM3+1RByr7ZvV3BdHJ Do2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4CfiP0PExkw4Vs3xMlc1LVPAlGrPbQ/hj++m20DmMLU=; b=nbzfFQTqvy2rwktf13YoVSmO943EDYvcXWgEINvFIw/P03/+jA1SLfrRVKlCuSETSx f3Jf9XNs8A3qeggntEZmGU52oaWSU3fmJ08VuyFPLu6HqCWc+yJcgcF7TNSqiycpdF19 ew4ZtZ9Lo9AT1g/HpZgUfBKu/x66IDxEls3aOr0gvKFuOJuRSiASIGPPT/2Eiz7kw8ES Kf3yJWmvOQ4UjGXmuF7hOIk3H7pbCohZ+PpDNpT1xNvmnjK7B322PjHpvQ+r9ey7eNzc 6Z6tYOpZKMRtriRakQgTGlaJ793FU0mbS1nYGKGIKjWqNuqKk9TH1tDMGIZ7bJteRJ2y yKtg== X-Gm-Message-State: APjAAAXUoOs5BKxaeepBlOXEsZm0GhvXqPHpI0A+uvhdb5v3vhkDCoDE /lCoSDAEP46QljbW+936gEyBos6IvaA= X-Google-Smtp-Source: APXvYqyhu0qCAB6ReVa5YiI91Jd0GxJ0YwTKpJLfGlYvk/NbjpesYHOGD7488sL83UcpPs/Cdid+bQ== X-Received: by 2002:a63:c0e:: with SMTP id b14mr32828801pgl.4.1562105585353; Tue, 02 Jul 2019 15:13:05 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.13.04 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:13:04 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 2 Jul 2019 15:12:46 -0700 Message-Id: <20190702221247.28391-12-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 11/12] net/vdev_netvsc: use common ethernet address parsing X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Use rte_ether_unformat_addr rather than sscanf. Signed-off-by: Stephen Hemminger Acked-by: Matan Azrad --- drivers/net/vdev_netvsc/vdev_netvsc.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/drivers/net/vdev_netvsc/vdev_netvsc.c b/drivers/net/vdev_netvsc/vdev_netvsc.c index 1fcf90d7bc02..be8f19c0c63e 100644 --- a/drivers/net/vdev_netvsc/vdev_netvsc.c +++ b/drivers/net/vdev_netvsc/vdev_netvsc.c @@ -529,15 +529,7 @@ vdev_netvsc_netvsc_probe(const struct if_nameindex *iface, } else if (!strcmp(pair->key, VDEV_NETVSC_ARG_MAC)) { struct rte_ether_addr tmp; - if (sscanf(pair->value, - "%" SCNx8 ":%" SCNx8 ":%" SCNx8 ":" - "%" SCNx8 ":%" SCNx8 ":%" SCNx8, - &tmp.addr_bytes[0], - &tmp.addr_bytes[1], - &tmp.addr_bytes[2], - &tmp.addr_bytes[3], - &tmp.addr_bytes[4], - &tmp.addr_bytes[5]) != 6) { + if (rte_ether_unformat_addr(pair->value, &tmp) != 0) { DRV_LOG(ERR, "invalid MAC address format" " \"%s\"", From patchwork Tue Jul 2 22:12:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 55920 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 467F41BE5B; Wed, 3 Jul 2019 00:13:19 +0200 (CEST) Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by dpdk.org (Postfix) with ESMTP id C29CE1BE34 for ; Wed, 3 Jul 2019 00:13:07 +0200 (CEST) Received: by mail-pl1-f196.google.com with SMTP id w24so41628plp.2 for ; Tue, 02 Jul 2019 15:13:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LPaD72bknJnDwjBzFhvftEOmVauSwgLOU6kl7GVvQFA=; b=ULTt3D4gCXrYYfqJplHvsin9lpEz0aBhn+tGWrDEVuB11rTYrC5OQjz1cxjO28GxVY gmWI4WJVUwMhsNu+k7s97UioZjffDo1HSds9P2uluPri+gDbxjk5J2hn0KWwz7UUZtFp z/LA3E1v6j4vnQvYAYZdWwX8gLFwZOGY/ToM8f0+s0PG5XIG66os41WKuZwy87OlynMd BEV2cFjm+wRzi6Q4VLxOz7G8t2rOlWb5Js9CtK2niRZpPKjRbyKvKIHN9KjY8K+/L+rM 8JHwIwlsFtxLn0lg8Jiay04lRYET0p1bVKcV8pDYascGMsajUTOttyK0OH9om+CTSUWe g5zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LPaD72bknJnDwjBzFhvftEOmVauSwgLOU6kl7GVvQFA=; b=qCVhJWUqWagfZrdsoMrONiBC9BfO5kE5lsRW6Wu4KAVxRwEj26pB1/p1Am1BWUJaVD LancDXV/HgDwmJRMWmNhcS1BMWByA1fS4DGl+PjueGzmAXzzs/v9kIHcHG1YgNSYBpyA 18rxeesYdHeZMBc5fuKVuch5EDubslKMI7u3KVRcuelYKXK3TYIYJ/L0t2r+nIl9Zeg7 vwQcUg2+Ou7TawJVhsLEhCL49ihzJIJf3SM2fUF5qM9oIKo1Wt7dtIOoFEUtRnkxD/bz fdbYLHFmOS6D7cm3StP7lD3/sDZZb8+vB5OhxhEMsBHQQ3u1ZG5BSJ/IZs4s/IGCERtM JL+g== X-Gm-Message-State: APjAAAVkmjgagZB7RIGyBP99r6rY9qXDvF7woaQjDt043dmwO+k7hslA QDL9zvjw0hiMq7IvdaRstF68WW9c3KY= X-Google-Smtp-Source: APXvYqyiAgsb5xp2kwic5JvaWAdF05ygxYZMQaAust25AVCZH4GL0HPxWkt3jjPccZV0ZKstZLoI1g== X-Received: by 2002:a17:902:1129:: with SMTP id d38mr38330556pla.220.1562105586728; Tue, 02 Jul 2019 15:13:06 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id q4sm25035pjq.27.2019.07.02.15.13.05 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 02 Jul 2019 15:13:05 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 2 Jul 2019 15:12:47 -0700 Message-Id: <20190702221247.28391-13-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702221247.28391-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190702221247.28391-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v7 12/12] net/memif: use common ethernet address parsing routine X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Use rte_ether_unformat_addr rather than sscanf. Signed-off-by: Stephen Hemminger --- drivers/net/memif/rte_eth_memif.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/net/memif/rte_eth_memif.c b/drivers/net/memif/rte_eth_memif.c index e9ddf6413597..00c9b396ab85 100644 --- a/drivers/net/memif/rte_eth_memif.c +++ b/drivers/net/memif/rte_eth_memif.c @@ -1224,13 +1224,8 @@ static int memif_set_mac(const char *key __rte_unused, const char *value, void *extra_args) { struct rte_ether_addr *ether_addr = (struct rte_ether_addr *)extra_args; - int ret = 0; - ret = sscanf(value, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", - ðer_addr->addr_bytes[0], ðer_addr->addr_bytes[1], - ðer_addr->addr_bytes[2], ðer_addr->addr_bytes[3], - ðer_addr->addr_bytes[4], ðer_addr->addr_bytes[5]); - if (ret != 6) + if (rte_ether_unformat_addr(value, ether_addr) < 0) MIF_LOG(WARNING, "Failed to parse mac '%s'.", value); return 0; }