From patchwork Mon Jul 8 18:26:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56245 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 D8FBB1B9B5; Mon, 8 Jul 2019 20:26:26 +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 1DD98160 for ; Mon, 8 Jul 2019 20:26:24 +0200 (CEST) Received: by mail-pf1-f196.google.com with SMTP id t16so7985884pfe.11 for ; Mon, 08 Jul 2019 11:26:23 -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=IeM4LNgtvtKU4gnalVSLauP9MlAFSjxzoGMJy258h28=; b=K2+JWEDybFmw8Nq8ESYY8BnhSd8hzNyNW1urHalBONCFtGFe+BKLzi8f83v4WJRI+x JNguVNJ+lPvP0WqheB8ulVqf+vXObN09IiDKnPWMMCtUIw49JrfrOeQjkpGsvTGW6AEc OQDJqxKofzzIhO4Mlq4P8mt5pOTK0dsGXsRZ6nhW/lT7mEuCvJd62OlaRXOa7X90mliD arsMQq7ExrC7gmuDSWQuk7tHnbtmt1bUifRMgw154OrESL7xSfJ0lGC29MS74Hi8XiqN ra7dp7ImktgO07ToaUEphvyolTGVvRTSe03KeM4do+1nKPwYdo1LgEf5KvZ9rTfSVolp SONQ== 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=IeM4LNgtvtKU4gnalVSLauP9MlAFSjxzoGMJy258h28=; b=HnE32lCkgP951iFMAjhZwPeElfwpCsjQzWQ/+jXITTSfQAgU8gJIjw7ZEqIsPVqMUD Chw3ovs2Ae90Jt7KWuSRRSdx8BManJprHkRLPZDAapRMtX9QJp/ukGQ9t2fh60ssAGFD ENECFNJwAvi9ZVBIy+m0hbw78yn8bkJWs2bw7ByHGvr2jR+dlTNSC3e8n9KFh5AxftIc lln61R0tdQIvQJMPwQHWgGobxghXNOELBQfHHNpMpdjVFXZ2rlHQaGL2bTluwwLbJxg9 AUtDd2AV4HWGE+f2W3fs/OhX4RVsiAYrs2Y4bKuEQnquHfnFYK0ug6ZDHK74F08ZMu6A C0fg== X-Gm-Message-State: APjAAAX4WSZAQgV1A12HKOHjYn7cgCjOCBOF2qkw4GB4t6iDsEGOSDVn rTeQvp8hKaE/ZvuRFksW0VEYHqOkaIE= X-Google-Smtp-Source: APXvYqz/Wi0yeB1Zp5qcbq10ysZ0P/v+A3iG697Bk4LeRdC9C+SF54BIJfwpi9WInlIe7zW5NZ2pcA== X-Received: by 2002:a17:90a:3401:: with SMTP id o1mr27463954pjb.7.1562610382951; Mon, 08 Jul 2019 11:26:22 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.21 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:22 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Rami Rosen , Andrew Rybchenko , Olivier Matz Date: Mon, 8 Jul 2019 11:26:04 -0700 Message-Id: <20190708182614.1677-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 01/11] net/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 +- drivers/net/octeontx2/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 +++++++ 8 files changed, 45 insertions(+), 25 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/drivers/net/octeontx2/Makefile b/drivers/net/octeontx2/Makefile index d08d3d854b46..66cb5f25bb2b 100644 --- a/drivers/net/octeontx2/Makefile +++ b/drivers/net/octeontx2/Makefile @@ -54,7 +54,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_OCTEONTX2_PMD) += \ otx2_ethdev_debug.c \ otx2_ethdev_devargs.c -LDLIBS += -lrte_common_octeontx2 -lrte_mempool_octeontx2 -lrte_eal +LDLIBS += -lrte_common_octeontx2 -lrte_mempool_octeontx2 -lrte_eal -lrte_net LDLIBS += -lrte_ethdev -lrte_bus_pci -lrte_kvargs -lrte_mbuf -lrte_mempool -lm include $(RTE_SDK)/mk/rte.lib.mk 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 1868cb7077d2..df1a51462a37 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 Mon Jul 8 18:26:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56246 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 CBD011B9B2; Mon, 8 Jul 2019 20:26:29 +0200 (CEST) Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by dpdk.org (Postfix) with ESMTP id 375C7160 for ; Mon, 8 Jul 2019 20:26:25 +0200 (CEST) Received: by mail-pf1-f174.google.com with SMTP id c73so3336191pfb.13 for ; Mon, 08 Jul 2019 11:26:25 -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=MeK+yID5ssi0NPFn+Lh/3/mX9Sd3TlIiRDH9K1yPHnY=; b=QB/gRl78fRwFrh1C7CxqU/119z60jpU1boYPDIjZnWX6vKR2JFeS4c0MqJkZ0Jp2hF qIGgbaRx5xrioIqYqg51COHM9lbYfQQYitDYYd9xNj9IiblxHZfTgQiAPzZPrKQTcuXb 0XFaGAFXcQSFPaTltBoZ9EWmxCFgYcq+vG2laxhOii5T7a+5zrDqeMJ/2yBjLicNbIWl USxs7EsUsmOU/WtabglmT/1Lz420EWH6icRFjKALGPM9dEl+rGrLCo7TmJv2cv+Wvw+4 NklBUmK8dVllriXhWMshb7XiB9tcsFc7wl0fJFsC9XFhh7Zzr3nJZLXiCReTzXkWmwoi Dw1w== 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=MeK+yID5ssi0NPFn+Lh/3/mX9Sd3TlIiRDH9K1yPHnY=; b=Wkc/J830QIzVweEIvQa3LZiLhdtTPVxif/17uPXjwh2Z97yfgGjZ6BPjQZFH9tD/Wu 9j9BSEExMgTnivZTnSoQpKvHD1dEmmqBXXfKIzkAwkQrUX/sMjI9PGiyWtrw3CMRnGoC frCbzaMgF1G60QWPmQxx3BZIc74hTZ9xWLwnkzBNUe9tVzIGZfBDVUMWzjBwTCuyUkpX P9Ya7jShv870cvaV8fP4x73w9zYsFIP2bRB8mQLZpR76zwbkGfI0/4mjJFlT79D/KTxY 2MfWz9Elgk5UPs4IJYnUUdID5sb5q02sKOS7R6KMyPm3ik4hT2eHg1c9i7oSmy+zoSU2 EaOQ== X-Gm-Message-State: APjAAAUeVavS8nag63CDvHKVF4LReOzw/I3LcnhuO1KvCOrTO+lC6L9D AtGyz9kgDGLteBWaC1hkaFB5p+rujME= X-Google-Smtp-Source: APXvYqwjpxg5gsxzGNXvxkup7ZSHeBQykqsy/LHU5Q2wPaKXvV2fXBSmUAX3NrUUZyfcdPAPeMJ/AQ== X-Received: by 2002:a17:90a:2023:: with SMTP id n32mr26416932pjc.3.1562610384131; Mon, 08 Jul 2019 11:26:24 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.22 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:23 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Andrew Rybchenko Date: Mon, 8 Jul 2019 11:26:05 -0700 Message-Id: <20190708182614.1677-3-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 02/11] 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 | 49 ++++++++++++++++++++++++++++++ lib/librte_net/rte_ether.h | 14 +++++++++ lib/librte_net/rte_net_version.map | 1 + 3 files changed, 64 insertions(+) diff --git a/lib/librte_net/rte_ether.c b/lib/librte_net/rte_ether.c index 974fe815b335..8d040173cfc6 100644 --- a/lib/librte_net/rte_ether.c +++ b/lib/librte_net/rte_ether.c @@ -3,6 +3,7 @@ */ #include +#include void rte_eth_random_addr(uint8_t *addr) @@ -27,3 +28,51 @@ 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) { + /* Standard format XX:XX:XX:XX:XX:XX */ + if (o0 > UINT8_MAX || o1 > UINT8_MAX || o2 > UINT8_MAX || + o3 > UINT8_MAX || o4 > UINT8_MAX || o5 > UINT8_MAX) { + rte_errno = ERANGE; + 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; + } else if (n == 3) { + /* Support the format XXXX:XXXX:XXXX */ + if (o0 > UINT16_MAX || o1 > UINT16_MAX || o2 > UINT16_MAX) { + rte_errno = ERANGE; + 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; + } else { + /* unknown format */ + rte_errno = EINVAL; + return -1; + } + return 0; +} diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h index df1a51462a37..77b4569b1ad4 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 Mon Jul 8 18:26:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56247 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 5E3951B9E9; Mon, 8 Jul 2019 20:26:31 +0200 (CEST) Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by dpdk.org (Postfix) with ESMTP id 2FD51160 for ; Mon, 8 Jul 2019 20:26:26 +0200 (CEST) Received: by mail-pg1-f196.google.com with SMTP id o13so8089121pgp.12 for ; Mon, 08 Jul 2019 11:26:26 -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=tF1BYpkGO4EzJ7Sl/MOdogw+SrohF63ea20yBJ8c2jM=; b=VVLKyVbJoDax09kRlsMCzW+P5J83SGz7XTE8Qb938Un0tD9M5eLDkdtatnd6TADZm3 +6MpAVoYXd1pd6q3Gk7oKoMa5inFSOmTgfUTK0nsHXLkdYioJoWKgK/u/ryaMyFzxWGE c92WjZ5lrZIQV5cXz+NVXuBMRRIs2njixktwpKJTohsuo4I9wtMfjgTGoJESxzOPq+5W mqiTvOa77TxnPd6a4FTUBfGlp/ktbJCTPd+OvJ06rSwokDt730bcfyjiPP1APJywAR1I TvS1cbIgZanmiQdfDQmnv1/njhTXd9q31TfR8l9G7HF4F/2bBYfwhPzlYz6LdpkHGp4R JV7g== 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=tF1BYpkGO4EzJ7Sl/MOdogw+SrohF63ea20yBJ8c2jM=; b=VO42ZQsvW8aPTw1LHcLMos8mLyd++hygB7x/cJhY79LBqn/lLU9Nx06/CAA9mFreel sFWvKYxUS6LXX83eRCN1hIrXlWa9QBnA9vpYKP7jUf+oOa22WxMQyw3LODtrOhNYcLCD z8dQwWK9Go5pJxZJ6iJpar/8vQ6u4AK8DvVlqJaHiWBEeWzljwCMGshleqOOxPy1EO9K szgw/jLgg1CdKe5ULB5YBKr8RbVPhtFLX6FmLZvwfLiiiKu+r6YiBFWGFIqQsXWZflV8 RFJIDmkcxD0fRtIH/jaDYvbBJ8IX2VmMuHVJ9+8+wa1dze+FgZP5DVdPYAbrKeEdL/ky WJBA== X-Gm-Message-State: APjAAAWxmODG6Cfiz6HT65vGT+HbNJsPfZ/rIVOpO8SvDyNIg2L/+irP DxgrR6aM1GhWtv2M3nI+n5p82HeU5sY= X-Google-Smtp-Source: APXvYqx5BLP3V6SOCluk1Pj7ZWe4VSaY7hoIb5CvV2kZ2uIq56v5NVV9YXfqcuqIvYPSRpKWZTShBg== X-Received: by 2002:a63:2b0c:: with SMTP id r12mr25644638pgr.206.1562610385136; Mon, 08 Jul 2019 11:26:25 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.24 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:24 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 8 Jul 2019 11:26:06 -0700 Message-Id: <20190708182614.1677-4-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 03/11] 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 3ad579f68254..493aeab7572e 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 Mon Jul 8 18:26:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56248 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 9FDD41BC07; Mon, 8 Jul 2019 20:26:33 +0200 (CEST) Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) by dpdk.org (Postfix) with ESMTP id 6FC541B9A8 for ; Mon, 8 Jul 2019 20:26:27 +0200 (CEST) Received: by mail-pg1-f172.google.com with SMTP id p10so8112633pgn.1 for ; Mon, 08 Jul 2019 11:26:27 -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=MgG6DtlT3vsBQdmLfi4W05pcLSDYewGH702P0I6PUok=; b=w8qvoHosbFcfkio+Ufa4pnVSke5M71tJ7F9+cj6HqIxb9E6V1ShaiUI5pgEESuZMBY tb6gjqmxub7T0f0JRJzUalde+X53Dm/Ac5YQ8BzIkkeuRj50x4Spe5mOLV+IJhUAo6mM mTvLvkjRzY6cGsOgqFYDSlGeDvCZt3x4cpqB+fykr5dWT7fUtUFhboiOKSFq0pb5Dmdj J7dOwQ+BO2OFolITSa4FyoPYwz4XfP8FmuB6KrH5cE2D+TlyopNIi8BRcaLMb432aaiy JwvPi/ZB0q23hH3gYShpY927UQ1YNOHi7OhMPgscgvXSzJiLvgNbsHaksYO9xM5qvOYT vW9w== 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=MgG6DtlT3vsBQdmLfi4W05pcLSDYewGH702P0I6PUok=; b=bwMBRIFASceu0lCW8Z8cNRrCS0iSpR4MYyZBosw/dMU2endU5UyvWF1vUN7DdU01uT /Iwz48F2TxeKeoGnoy75xKADqag9pAvEBhkYNEouMnQkTK1tUmkW1ThifinW+XKcSHZP GvF0fjWRBCL899yVIw3eV4Fp/0Y86HrVLbb/3QC22JcQKIy1L4g/8oCC1mGYA6Y90OaU j9hgtDekyEXZW3++pTlLREKPx8lGnAr2USWcLlUpIs/J+yY/Brpj7F4QwVMkE0VpVbac Li2PpXU4jYKgZId2tArIKf6UgxCMk2szspwXvBWcM7u3JmMkhqQNHwgxe2nkR5RjkKU3 bHUg== X-Gm-Message-State: APjAAAXVsq33LRtY45UzF6dwB3iXyp/ItHApVeO3xePufK7mTBSyyj/3 e6H1X24ihPxdBdM5NqUxdg3IQgnbRf8= X-Google-Smtp-Source: APXvYqxcIXxH6hyZCCwzZ/Sd8VUML1Jf6EZSvf2L+yrW/blXDfn4mc6KLdCq2k9WLIYtXMMtmD/Rpg== X-Received: by 2002:a17:90a:bb0c:: with SMTP id u12mr27968621pjr.132.1562610386439; Mon, 08 Jul 2019 11:26:26 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.25 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:25 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Andrew Rybchenko , Olivier Matz Date: Mon, 8 Jul 2019 11:26:07 -0700 Message-Id: <20190708182614.1677-5-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 04/11] 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 77b4569b1ad4..6c07f4696a95 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 Mon Jul 8 18:26:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56249 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 50F321BD66; Mon, 8 Jul 2019 20:26:36 +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 962D11B9BD for ; Mon, 8 Jul 2019 20:26:28 +0200 (CEST) Received: by mail-pf1-f195.google.com with SMTP id y15so8002138pfn.5 for ; Mon, 08 Jul 2019 11:26:28 -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=EFUFljh3axlAK6eXAFn522LadK+xf2lpYYPH4K1GNG0=; b=pr9Pm09mRyeJd3lgSvbr9GPGFzEakZ0Cp1NNtLpMTNIXEv7+m47/UgP1RSXz3NgzUQ /uDPdaFfs2V28Bq+T6znIRqeyX9jgLjkqDFruufRgt9HiRqVQCbpb0YTff/O5FB/SNo/ GR25+UWqkc1Fq7am8hhFSlckii3wyjkVJNm89VMv/lu1h020S9P6EFJNHMhsPgtMR1jU OYVVvjVE1gKlah1l6Db1+zGO9Ej+3qu4FbRQCH1ETeWWBw4EYTrv3ZZ69Saui7gWSS8R hvjR/FI3MxSWlflZ9U+/7w/e047nCs+JSfizGHUEmNt8CU34Kmx9SESHkdgAosVg/fzP fqTQ== 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=EFUFljh3axlAK6eXAFn522LadK+xf2lpYYPH4K1GNG0=; b=k0yhgT9Vjs6A5+O29TwAgqMjr4VV67LALk6saYq1pfHTrp5rF9aGrGGlknE2B4pgDh grbGpyVRXobPyPqt7XIozuKlFObbJsrY5T91JGCS0AwxYP95JVsEiYORYchw0MMxHB06 on5Nr7q0s23Ww2HAhNLnjX7wQ05s7/YTFodVeuGAHDPlCz2m35XKtI0vpKAOLfw8CenS 5fPgdoNWy9YUkGGjuSwB65YzNQkuaKP6SQ7AMKwfZpujN31WrZyW59Eq6lehvH2Cyzea 78bM1iILQTP15VNCyJ8kI3fDoAts7td9WX6GD7sUd/n7L5v+ptYY2iWf7SF66D3dkAJV aipg== X-Gm-Message-State: APjAAAV0A9NfoVbn08izu+JMh26jKUNoVgADcI69XvgaRAPj5ttNKA5v rGhkOQ1Bodru0vmlx5NJzMeAK6yXVP0= X-Google-Smtp-Source: APXvYqxEEfAIdTX0pggfXaQK4W7i9TPvWY+Je18IK1xJ+jaz2npyo0hwWxbW7cN5hlPplNGSDFABmA== X-Received: by 2002:a17:90a:cb18:: with SMTP id z24mr26797146pjt.108.1562610387493; Mon, 08 Jul 2019 11:26:27 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.26 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:26 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Olivier Matz Date: Mon, 8 Jul 2019 11:26:08 -0700 Message-Id: <20190708182614.1677-6-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 05/11] 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 493aeab7572e..bdb8a67e2d9d 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 3d77b1f9014a..e5ff83893489 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 Mon Jul 8 18:26:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56250 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 855641BDE7; Mon, 8 Jul 2019 20:26:40 +0200 (CEST) Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by dpdk.org (Postfix) with ESMTP id 1BD581B9D9 for ; Mon, 8 Jul 2019 20:26:30 +0200 (CEST) Received: by mail-pg1-f194.google.com with SMTP id u17so7619989pgi.6 for ; Mon, 08 Jul 2019 11:26:30 -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=PtqLsR+Yf7ZMROyJ98PH3dc6Y4SFIPNKoHMCfVy8COCrFqhL4qgG2cpLdRisagz6to 6SYa3mcJgZfqUiEi8hQF3D/8Yez4khq31hVRTemNReFmVBUNPr/FpgxIfV4tIIN8olVF hGW6su+g6ziXLI/peH6tmnHqMB1yleogzOoMCtjMFcYo/Dwb4Q+R7ZomHYc6reKIsyom CCtMSwxC0eq5Ch5n195eR+JNIwk4dSaMqyr6b41xFLZN75EoOgKnfYZnCYgF84n/yIry uvYIdTONc2yqOMI6XVG8EZz2EVB598XsM3pfT/MRqXTT1XFWhgjYTqvPCTgcQDSXZDi0 gcwQ== 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=rvzerFE/eJnweKlDs+5ewoiGBMA5Gcye5VjG0DFYbhcV4ey/UUITkm1w1M46e2zI50 z7a9uvnj7d248nn4EVuoYfBLe/mBkw01Vas6kEJhPG1xjpM6izYO+FB1ZtVnBMshyJOv ksaRBpZ4bW9It77QuuUkTf5q3G1XCTPZJKY4vyInIp4xAQjRtHALIcsVpFl95K/GTgYV XVFkhC5zSW+eU5rkSIpt4GPcYqqSnCJRqow5gV7gJjvykspJ6cL9u573V6M5OyJxGdEm 2zcruB2BwoCvXGcMZcCQljXVahzrYooRwHXSzkUjb2eMwp/W3I8kn50JvTgcOasw1H91 /2qw== X-Gm-Message-State: APjAAAUSekadpOSzq3aMJXmwWE7eEdUo2a4ULmCTKpLUA2wZqnlKRYAN Fdh5FeiwkXwk11EBNSbm1VcQRFkI8fM= X-Google-Smtp-Source: APXvYqys5mIKT/hfoc/N7+qV5utX8IJqvRx+qKzGV4RQ6sRmu2H1t4P40de2C3WHkmT9BOQBUnpzAA== X-Received: by 2002:a65:6114:: with SMTP id z20mr25981828pgu.141.1562610389000; Mon, 08 Jul 2019 11:26:29 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.27 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:27 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 8 Jul 2019 11:26:09 -0700 Message-Id: <20190708182614.1677-7-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 06/11] 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 Mon Jul 8 18:26:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56251 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 A66911BDF1; Mon, 8 Jul 2019 20:26:43 +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 1B63B1B9D9 for ; Mon, 8 Jul 2019 20:26:31 +0200 (CEST) Received: by mail-pl1-f195.google.com with SMTP id k8so8708712plt.3 for ; Mon, 08 Jul 2019 11:26:31 -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=uxofA1fH5LVJFFkYn2rPgtgSS2+9oXHF6cRk13/XoEA=; b=J8RM97GiM8SSnbA5GaPsvdXNtQBOjwT0EUTBYmOuIqrh8RefOgydtN3ZXn7Ow0VKi1 lyTWF5mlW0i01Jg+rciJCJsP5CziM//YiT/lYw6CWYt9ko8cBeVQ6fMf1G409zk4fUbQ eR1UWm6ESMA5zxoCqxcNmVxxQNPnnEij1IXjvEUp/4bHsbzymgwmCxfIHS+2PVYHNkNP GGDLhfijkEmO8ZDolKlxImNIUtRxs4WjE4/uS8RwnzCbtMqsP2VPVFhJYiu9PZQOTh5V TcZFKRN2TSKBoETl4y064nHs6V650hHfWp3JRYbl/eeAzvZA0+pLno8RBq4A5GbOuJne K4cQ== 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=uxofA1fH5LVJFFkYn2rPgtgSS2+9oXHF6cRk13/XoEA=; b=dp6lLuyb/SuAyLMg1geQQfdguBlFKlDlhwRnpyZ3/MKcV1cu8O9kfP7tY4/HqZ0EDq ytnNDaNXPI71TqKuh6K80tU2vRxtdvAZveENIiUkpigs3x/LX001b7sRGYNC0Acf5Wz/ 64bV4ma7D+Vyz5ZJQ0YMTEbeHycAfp3fdT/jXJIM4XsQih5m+IYXwwrYRPT8O1Plp47m 6DFVwDfKGQ0TZU0z6IbuUJVrSSgSbykEvC8ybCqKGdPrfitYKBVzeCv/vcB0qBRIPYDx WNf3gIxfRXFNF+/Np99To+JCiC9Os+jowaMVobvWWIYzracdOH4S6QYHMgRGStI0E+C6 P3kw== X-Gm-Message-State: APjAAAVr47t5fVk+lylkONg1onBzs5DWY5pQNcrnBFI4eLhEQCGrCViE 8l46+j/Spxmgme4yJkLGdXoHo1XwId8= X-Google-Smtp-Source: APXvYqx1j4LhpewS+blZEK+VyKwtEOyNvfDTvuyx0CU3H6HI3WngNaj65JcEBKJfmXctXhr/9atnFA== X-Received: by 2002:a17:902:f216:: with SMTP id gn22mr26173599plb.118.1562610390107; Mon, 08 Jul 2019 11:26:30 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.29 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:29 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Bernard Iremonger Date: Mon, 8 Jul 2019 11:26:10 -0700 Message-Id: <20190708182614.1677-8-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 07/11] 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 e3e8448c9421..c92c748b18eb 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" @@ -4734,8 +4733,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 Mon Jul 8 18:26:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56252 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 C6EF91BDF7; Mon, 8 Jul 2019 20:26:45 +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 3EF491B9D9 for ; Mon, 8 Jul 2019 20:26:32 +0200 (CEST) Received: by mail-pl1-f195.google.com with SMTP id a93so8703637pla.7 for ; Mon, 08 Jul 2019 11:26:32 -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=+EmzYVztBuqkWPa3J9xFCquV2rAKQo18WvoWOlsEX30=; b=ydxH3IB4nYQFo/v1FZQfq1orexlv2KALzkMsCc+L9i2M2gkQ7v9dSzRXdCIthj8K4f iw0IuXbu3OMCNvzSlZ9Rd1lkfoAj6DuZtZrdFKDP1vAEqhtLoLMb+eJaUmH6TwHEehi4 fY54j5gqV6WHD7sHwu9O85mQMOPK2BBBuOu60mLb3mNfU4VkDaU30R6HeSdxlxWNvocD Ll748MIWCygxuPUz1UJsUzYwnx4ILY1BJNv+pK1H87FBYYIQJlN9h8EApwmyEtPsvq0Z za81lyQE8Pymx3bo3iA09Ri6xqtaPRK0Vy83Da7qqOpO7GN/9TffjnqS8FhYOwYaX6Ml Oj8Q== 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=+EmzYVztBuqkWPa3J9xFCquV2rAKQo18WvoWOlsEX30=; b=F35+hvrxsaHD7vkaPqzsg+jAOSQMnzVvJV3E7mAkM6SKhDJVw8KXiLkd7+fseGUBxp NRSV8PrhExDFkiKCvCzE1ZDjKcNEqkE6TrejlPC629P2uD59TF+sPr+KHwyEWd9EuMHa e9Bobv/5nKUzzOsH8T+OWTnAFggPPQO3LnvGxGwHZx8i/xmRH6omBrewOJFQxRMIuKE8 lYV1wwxVYm7kfEPvcSrGssUHfylQ35y+NRk2Srj11EVWvcohA++pWbOXKmi9UZTCgE2V cn16OWYT4zbs6J43VFroh7btZlXV8nQ482bbLWvRsj5eXsWlQPTqc398oXvY1ghMoM3z 05nQ== X-Gm-Message-State: APjAAAWz+bYzmsC91I9FaoZ4WKUEJbbFEkKXsAHZv8/f44eTHdh4v3iO p6lciG1XN8M7nOOvHWEsyoKHqwf7sPw= X-Google-Smtp-Source: APXvYqw2PV/4EHFe7YDJ8/iN5uXfwYZuAtTc52l+l0YGez4RPn1aFjCwb/7W098tZLh8w3XmYiSSIA== X-Received: by 2002:a17:902:6a88:: with SMTP id n8mr26824151plk.70.1562610391267; Mon, 08 Jul 2019 11:26:31 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.30 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:30 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 8 Jul 2019 11:26:11 -0700 Message-Id: <20190708182614.1677-9-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 08/11] 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 c3ab9a21d107..fab87eb5b60f 100644 --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c @@ -224,17 +224,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 Mon Jul 8 18:26:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56253 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 CBD7D1BDFC; Mon, 8 Jul 2019 20:26:47 +0200 (CEST) Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by dpdk.org (Postfix) with ESMTP id 4F4BC1BD52 for ; Mon, 8 Jul 2019 20:26:34 +0200 (CEST) Received: by mail-pg1-f194.google.com with SMTP id w10so8100506pgj.7 for ; Mon, 08 Jul 2019 11:26:34 -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=uydbSbC2zGnRsZgvJFXp9jIPGPnX5Gw5KsKwpZZ65ME=; b=s0ZVCv2B5VVqba29rTjxRECwRLAObGxJFrgwTsLWBkN1Muq7YAlpVAWJC3oadqzSKe lZ94Pv9stsEwGJPplMiL7oTNjOEG3uD293xALpzDWNt7J5PEt/dhjFq6u1IhGgAMxww4 BypyMB3NLqL4mfPIgNNeT471KZt8BYK8xlr/E2MI8iERpPHXQB1cjuS1OzTxubyHACi6 7Xp0In3VUG4aADMaKYG79jo4JQ1NYfyDRdoqd4pbV2PZnKLKlAsQNAe17PpN6hTgKlPd IyYpx5eA7uz7UuKhqNk0NpC1g/Nz9EcZEVFz4ySEd/p2ElNxM3RJ8/nYxVlwimTdtQuS TNFg== 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=uydbSbC2zGnRsZgvJFXp9jIPGPnX5Gw5KsKwpZZ65ME=; b=FfY6sh8FSH7qbezGEfXhXykaFb2TA/fyoDHEupLwZD8frtwOCfd5ZWxHs1SIiZq0k8 cwQoRz4kJ/8EjfLD+57AHzq/pmTctj1N+Y2/XXOM+rD5Wp05Ylizf70/wD34C9TT4WfG VkD06X+eRW4W73hk3Hc5J4293t90jFDo3QbDQVeISUac+fyq9WHRj8Q3nrc5Z0FWI/Me +DfNmTG8wnqZPpzzsD5xCCFDOPYV3xLAsyxTDXlD7ftqwn8iYYNfHuUqt+efQ9BMQnhD wm8jfuLVZbmqAwAHysytBGz5R2sBF6WmnLN7/ay1NAsBc/fitwNw7dqfA3L7Eywh5G0+ gQqA== X-Gm-Message-State: APjAAAVtDzlPI7Jc7tExKpxVUEmj6jKvWSQF7S5WXAw4XV3B3sZqBsNB CXrV5/c1zErkhLLvXTrrdEA76UmlaOo= X-Google-Smtp-Source: APXvYqyNpoKu0NzO9KyMQDf6qg/NooMQzDbyfa9MFh//xsi0AYjLLU30BBkj7SowSfofsvMiugPBJA== X-Received: by 2002:a63:d847:: with SMTP id k7mr22722491pgj.283.1562610393178; Mon, 08 Jul 2019 11:26:33 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.31 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:31 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Gaetan Rivet Date: Mon, 8 Jul 2019 11:26:12 -0700 Message-Id: <20190708182614.1677-10-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 09/11] 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 Mon Jul 8 18:26:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56254 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 0BFA11BE02; Mon, 8 Jul 2019 20:26:49 +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 E8A141BD52 for ; Mon, 8 Jul 2019 20:26:35 +0200 (CEST) Received: by mail-pg1-f195.google.com with SMTP id g15so8109921pgi.4 for ; Mon, 08 Jul 2019 11:26:35 -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=zyCcY6Qyygvs3/n6ca08O0iKQEaNDeyO+DvEEksV450=; b=Hryng4AKmjKWnut+O8Xganr+WVZPIwdVhoDJ3SU6iu0G7kuh6VtgPjoeARv9JM9X2q nqZes+mclV9tQd5wnQbLpm8Vy4uQ8FIfTJxCyhOONcHCaqzq5hJ5bkfRy/uYRx8WC5Fg yfRIrHlr0r/7SMJkrndb5yfEL5IB0i7CEDejODYYLrU+8uPuLr7yByy04ZFObukZr0oW kPWYL9dw2Z1nMKgEbRO+vPV7pOWAHn46XA+UZ0K71E6CFPB3mGaRM+dC4HUlkDBNgqtv fNTaH4WqHY5AXS05Le/kKX/HLKtSA75oyh92QFUUeWH958PSH2gendPT666ukIX1QLI9 zPCw== 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=zyCcY6Qyygvs3/n6ca08O0iKQEaNDeyO+DvEEksV450=; b=fBexVqL3ao9akVy4AJGzJX+vG0QLifFDxKEsUgItYIscfarSmkStz1NPVFxPXh9gg/ lBkUv5qTQ9HATTNIVVRUIWLlwjjtaJSF07+MAaRdmJzIyDGjPf7O3FztG7uwbedmYwWO l2V/llvGULMwdHlkSThTtHjvAPGKNQgp9hxnIuCxzeHKZy+JOYAjs8yGVwT9RCK5+AeL pYU7AgF/qayt7SWxIdit9QmHEn7A3IlvdN5I0RUZW663lkvABbDuWAhSMnZ4XnxfgAjY 26fp/lA6QOKJ22Bh9JfKp6lJc/QKxT7EhNVtXFU1mH9OWTMu5Aa3SC6SPu2sAtS5nSZI 5hDA== X-Gm-Message-State: APjAAAW1OrbNdH4eUhnFPDDKPp3eA3/LwdyAqrwgg+7aaHCaONiUeJax coYowxXLtUMGlxCKHw0B2P5p3PCMfgA= X-Google-Smtp-Source: APXvYqy06AMgaec9crtHRhTYcrVAtpoFf19s1NoGzjTtAWDuYR5MfFAo6PA4BcET37+1X/VO42HDag== X-Received: by 2002:a63:5550:: with SMTP id f16mr12305552pgm.426.1562610394809; Mon, 08 Jul 2019 11:26:34 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.33 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:33 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Matan Azrad Date: Mon, 8 Jul 2019 11:26:13 -0700 Message-Id: <20190708182614.1677-11-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 10/11] 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 Mon Jul 8 18:26:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56255 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 6D44E1BE08; Mon, 8 Jul 2019 20:26:50 +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 0A9661BDE1 for ; Mon, 8 Jul 2019 20:26:37 +0200 (CEST) Received: by mail-pf1-f196.google.com with SMTP id u14so6812017pfn.2 for ; Mon, 08 Jul 2019 11:26:36 -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=zW7uzWonv41O7vkRxbiURtpUxY1HlOXIj9E8UngBDx++Ee10ih8PT6Gw+OY5LCdnWY hOT7zlL+dOm8rUiyp9c/hQqaqYqFx45aUWRvRXHyAnWhu8kJBz3JtCHNQnCHlk7Ixb3t 9Nxb1pz/zjVDJjXbZmUCNideTlJp4mqFgL1dWA6pfFvWdIZT+JhAXAYmhsI4r4pnYS86 qgt15yLjICOUilUgORhUm8QOQiuj8SRemPBuAWap3E6Q/3kpcSXu98S8gPbMvYOsO568 kNX8EDLQ9ng2Khv710ohInBGWb6v4fGKxuTkXxd73eqNSbaNHjcMAn/9U+YG2njAH/gK DEqg== 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=aHnNNDJ/QSQ7LKV3q1ikxejd3v8OgUBckZ3Uh2R2f19dt62qWIv+fXSSsD2BPGJJkc //jQsUi1yvuakYpfaaMv3nNKjBDFxLmIAV13phqRPd80xWo4iE+UiFAAEy1RfdrKhhGK WOMzz1I3QxpeEyhpS4Z23Mg1da+4LSSstn/111Tad+ofmBLyXW3UX/NAuypy9Om/g/cF HraINjZkoBH2dw6ejmq1AnVhjfcMoxcRsb+TtTiDSoEQ+yZKH1HTNXapR7I2a8Q6/mmt UqILu+pxpyx916Po3sDNCms5ZdmTesTZU1OkDVLX9Z0u2kG1NDx33uK9RtoP70lxKk8u yvTA== X-Gm-Message-State: APjAAAVMWqBYpDKLiPpJ4x2oq+zVKg97DD8h4RzpxSQPqJDB6uGJp9oI 41FhrQhZIj2Lg3pVLtvJEM2BfKU4f6U= X-Google-Smtp-Source: APXvYqxHH+CGeVfxLETQgxlamqhRE4FpBPneANjYxdPiJK0kbBe736HgVtn9YaJob8DiCpam/ePSwQ== X-Received: by 2002:a63:6cc3:: with SMTP id h186mr25125052pgc.292.1562610395938; Mon, 08 Jul 2019 11:26:35 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o15sm18769295pgj.18.2019.07.08.11.26.34 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 08 Jul 2019 11:26:35 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 8 Jul 2019 11:26:14 -0700 Message-Id: <20190708182614.1677-12-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190708182614.1677-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190708182614.1677-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v9 11/11] 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; }