From patchwork Fri Jul 5 17:16:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56172 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 CEF521BE1B; Fri, 5 Jul 2019 19:16:39 +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 8D1151BDF1 for ; Fri, 5 Jul 2019 19:16:36 +0200 (CEST) Received: by mail-pf1-f196.google.com with SMTP id p184so4571509pfp.7 for ; Fri, 05 Jul 2019 10:16: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=/p8EL3C6Wse7N0Loz1qhcs5fm4pxbB+kaNXMKFNLfIU=; b=zO4NHqgaVSeF/f0KBAcxeIl8Ama3vHw83HcxI1+WuktqHarG+exs4EKm0CVUBaJiyl dPKgD5pcNVmdM5OXsj5rs9fMLECMZRB2255+Y/TNtyVSsdRqQEc/Nhrp4eLs1IOCh6Ib 1ft6Q+zmMw6Qi4ti3VyWGALo8NS/PgxWpVu4fdWIEGwSFMkJDLfh3/zS3STFpfot9MgO aKlgWAmxINHO32CJlC+nVpWCBxWHIAxMUBrRmfagrbo/JnWe72BwI5RnBCVVf9bHq2Ve uGxsE34nbyW+mU1daSpNL8AMYrRQkyKiCsSbUM0F2kmI9/Gijg238wyBv1Qz7rntGCce 1IFA== 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=/p8EL3C6Wse7N0Loz1qhcs5fm4pxbB+kaNXMKFNLfIU=; b=oMlIMpGwicjmYXMHRi+KncJQs4rkMxcXzTurJqrr7en9QnD1ur/7oZfIxqed5aLRnU ar1OIO+gHw/4tSvAlL7/bldx2ujB3swtdnIZI8BIiQYuEjQdxXm7DWqAQsgrsPvfdtnv nRVLCKM1NU2wuqq9qSeza+twhEU/UBbtruSg8bXQI85T2KHyk6Ess6wwHqjUg+HHeAtn ryzExWI/L45kg6cPbGCGYsfX1OWrU6MF5xonS06vbbd0gKmV4GK8o7yRiw01EEJUbnNR s8MaJrGY7sLKM8R7toBgziddrRytVa1cW/q0n8lZ7zwe29+FO/EUkCOyOmOSolqxFvY6 yGJA== X-Gm-Message-State: APjAAAXwD0N9Kk0ZqEee4A0hQ7iXCxIHjvq5xk9Di/ZeapDPmLkLPq1b KiipNc66k1f2ohtol+Z6N5xi0y+kUJw= X-Google-Smtp-Source: APXvYqxxrnCHew0Qn+NtfKY8hlAxe0ZJtNuBZGUSBiNtEU7KnVm+U+iRy4VbU4W2xfYBK/RTKTXVdQ== X-Received: by 2002:a17:90a:cf0d:: with SMTP id h13mr6821216pju.63.1562346995493; Fri, 05 Jul 2019 10:16:35 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.34 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:34 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Rami Rosen , Andrew Rybchenko , Olivier Matz Date: Fri, 5 Jul 2019 10:16:16 -0700 Message-Id: <20190705171626.13448-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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 +- 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 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 Fri Jul 5 17:16:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56173 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 AAB191BE22; Fri, 5 Jul 2019 19:16:41 +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 BDD961BE17 for ; Fri, 5 Jul 2019 19:16:37 +0200 (CEST) Received: by mail-pg1-f173.google.com with SMTP id m4so4586092pgk.0 for ; Fri, 05 Jul 2019 10:16:37 -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=Y1zAOb8suMugKAouz99hkW6wuVHhiOxhQ8JKyiML5KiQfFiCSIM0b+mP/6L1dBYx0Q jqzbD9f9A2s7CFF0kHnhKz6wi8hY5n7eAFxGq3ubymPTZic/bKX1JwGRU03LL6iJYjP1 bxSRoWET9708UUeKdthbo2fCV0nUZkK8PvPsVfU8YClCclv1KjoOQwSKEJyDovKlK1Jk hAIl7k8NT9uenOYNzmuapXRIiURIlIRHqAGJCCE5FE0qHFyBpTCe2RP+O2ucat8iXhbm yHS07Ww6idw42v2xE4Ghui8ejay/FohwJBO77N1t6hDC9/blhiXwnnO8uYe1C3a8gm8x pGBQ== 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=HuTtW0/l394mVrh9giIIb7w4k8oK+P8gQHeAQVO92R8rkDCbLNPr189Nc2dqM8Z1xt dgoltPzOATDJ4eD+Zsor7pv5yUfOKZS/6xpeeaPgKWvO8s9qA6JzQkwzW1exz3EO8R9A JQzkRm8kVSRQS1t3boR6Ap7uFNg+/yMMkwj9JxsL6F4ivKfg/M4ghu36hwghfweEyhg4 bk9xlPwe4PNLTFJdDf6XJONRmSXaTohmpqBFgB08bO2XaY3xEh8qStXeN92VIaA8hc4R J+IjHYVeltguVQWYofCv9chRuJ3khvMzOOF+mMWGxrxZ3DN+JIKJG0K4+/FZLedS4Xl9 TvKg== X-Gm-Message-State: APjAAAWMD9MZoazj8G7GlP/SJVpuIEmuNcFlT7DhKjOBTc54QhmgOo1l v7IDery6FxAnU+9NotpV1nDTYUDbW6k= X-Google-Smtp-Source: APXvYqyEdA72rzsr4LsqdYA9MH2REPIQYlcbj9w69Jr06JzjqSvm5UWjB7BGtQxV56K4c2s1mD1x7w== X-Received: by 2002:a63:8f55:: with SMTP id r21mr6622057pgn.318.1562346996553; Fri, 05 Jul 2019 10:16:36 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.35 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:35 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Andrew Rybchenko Date: Fri, 5 Jul 2019 10:16:17 -0700 Message-Id: <20190705171626.13448-3-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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 Fri Jul 5 17:16:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56174 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 1A5FC1BE27; Fri, 5 Jul 2019 19:16:44 +0200 (CEST) Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193]) by dpdk.org (Postfix) with ESMTP id 030211BE1A for ; Fri, 5 Jul 2019 19:16:38 +0200 (CEST) Received: by mail-pl1-f193.google.com with SMTP id cl9so4859104plb.10 for ; Fri, 05 Jul 2019 10:16:38 -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=TWfARd0PBCeC9NO1RXoNeH0Z7YUFHTvBpQTTxR5NBUjVxWK/3WSp881MuMISZjWbVj iEZwFBJQ1OpBqMkQnnbnrSjfPOERx6UTdJoBjkF3u3Ju/81idlnDxjxwtr1YJWUTd7+I 1RnRYWxpr3LYTdYhnChywWH+o1OApkTjqMvJTdS4ON0KhIMsGe51DfQjUZ+8H+NubJOe Wsbt4o20RiS9oGl0SlPO1312lkrMgThFbiswGkLY8fMhU7Jh+q7gStvDpZ9wqx1u5/+B z/e4lzhUWsCggXJyOhsLFSlyYyf2lCGPi3cCHzJGZW65UTE5OVMDtsrX/rLfedjsUiWi +8Bg== 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=pZoOdXfgKoCrzKl3FMOf8GhKZQRe4Umf33LYFxMBNtmaQR/Sss41Y1Whn3MagUiLcV FFN9yPrLMPi+wl2rP0sZC4B9A/NaFJqspug9w3v+oySyFCC1kYMowRVY/CfDVNiWwOU2 Z2o4kwBQDtRCdKNRRP5lNeogmC3R0uOEImJgfghpz8iHW0wJAJZaL5D9hn9AtNqDxs2S QPXqWrNr9Vqh+Ha3Zo91/AUwJWaQP4zESxiugZ2zV7yfblgW+jgLFHUMcuipf/iwcjOQ D+7ymbzaucKLFb/JlikQ0v/BLJJ470EYBwepEFerBfWGYFLuVi1fDtwMvO01QiFWiK7l QkfQ== X-Gm-Message-State: APjAAAUrat95YEtfULG+3igk9gQXdZtltt2XCD52mtLubeMXsG/tIyMc LIKrb7w6FTq6K6WOqCKtz64yvWlp2Hw= X-Google-Smtp-Source: APXvYqyQ6pSnLT1BeHDw7nCwDBTSt1xW0JPXIne5Qza/dw3qv8Hkb3XPrctLOVxMkJ3DHRHZTM+ZLQ== X-Received: by 2002:a17:902:7087:: with SMTP id z7mr6771942plk.184.1562346997987; Fri, 05 Jul 2019 10:16:37 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.36 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:36 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Fri, 5 Jul 2019 10:16:18 -0700 Message-Id: <20190705171626.13448-4-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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 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 Fri Jul 5 17:16:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56175 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 70CDC1BE33; Fri, 5 Jul 2019 19:16:46 +0200 (CEST) Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) by dpdk.org (Postfix) with ESMTP id 4373E1BE1E for ; Fri, 5 Jul 2019 19:16:40 +0200 (CEST) Received: by mail-pl1-f180.google.com with SMTP id a93so4893249pla.7 for ; Fri, 05 Jul 2019 10:16:40 -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=pbhNqbe8zA17fyuuhuZitxHMGtAIwnKdN53RRi/IzxPbo0C3uQ5U6CiBAcDawE+UDb AWGB1zAEhjt7iIMJg4X139c9hjiz0x1uHBLQUoT9Ne9YExl09i+tPEKUcHYRlX/Xakli uImEXV2A425kmL3+u58gOmRpWdFchU+tuoBunyPsnQ9nJ1owIbz3+fZ1BEIcoNOkuFoa g20r51PojBruFJMQqyO83unmTg2HSWqz4N7i9nA15RdX0eDinr15Ci6Iext6u35DxlQB Y1kS2pk9cCas7VadYqYmM5hUayVY9urMH9pzGjxGjZv+Oc04S8KHI+lixSfv/798xVKv 39kA== 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=VBYUsFntZI4AqQ4/ehEQNA4/ExFJntt+nYX3Dl+L/g6h4Ud20N33q4rfJdl7zMlZKT fMtYhgPcI5WbuHJxfxwPKlNVqetE0saZr50/zAoYBHmipa85Jp+lQJoDXB/LIEN9wM2P +NxHgkPx+rxN6KOlhEAVqKLoofS0OE66tt/Z5VXudlmuQl///7eKmAqlIGzY/6zzXvX0 EkGbas7lSotyq/eTgtBQ4gEil+046tlYBYoT5Y0x3QhR9/9ny+xtlQX3d2gRAZdMNkMI eYhg3X/ycF6mI8+3OSs84mc/wVDJQ37mmrpMLV/t1W2icB/TYX7roRlYMUyNJQyaiLLZ tkYQ== X-Gm-Message-State: APjAAAXl8E2pEgVXU2bf2IA5bGKX+rGdIA3QVuHDrUQunzobCxasOJjW MmLvOvYkGEyGKsL1+cvRfRWrEE6bsvs= X-Google-Smtp-Source: APXvYqyYVd5FZbVA4R6rWZ8CHIT6LIbPonUTY8pj82KT6QscEslRkXzeXebaJis1aF0D1ebQ2rkKJw== X-Received: by 2002:a17:902:e65:: with SMTP id 92mr6611931plw.13.1562346999243; Fri, 05 Jul 2019 10:16:39 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.38 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:38 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Andrew Rybchenko , Olivier Matz Date: Fri, 5 Jul 2019 10:16:19 -0700 Message-Id: <20190705171626.13448-5-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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 Fri Jul 5 17:16:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56176 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 791F81BE38; Fri, 5 Jul 2019 19:16:49 +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 64E7C1BE1F for ; Fri, 5 Jul 2019 19:16:41 +0200 (CEST) Received: by mail-pl1-f194.google.com with SMTP id c14so4882249plo.0 for ; Fri, 05 Jul 2019 10:16:41 -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=GLfvj3RacpzpoOYMBKX4YgpHbXTle+wSJNNNFGyAZ4g=; b=FS6u7qtz0y45gYXlV+V77nd7okEYvqA4j+PxgCV0aB/IvxxZTK2bpm5EdmJfHS1icY jCRXGXcPi3EfkAfw7CJUoO/M03r45JN/lDHMsnRvbcb6Oh1soHTmQxnHlcGzw00QHqaM v4ERdkGga/JBmqdEKg38uIVMAFEiw+8KDitGabkgRkS7KYW8s16xuCCYES6u1fHNjoig C7uLQIhD5SQn/OxUV2n2n9r10qsOdrn43YiyK9CQuG7AejAZlpuxbBJByG8Vx+krEng5 /K+6WUFv+G8EqbOxn2K35DNp1mS/Go1H0r4OvvZgZFMu3K7UAblLNNcoHpwm9/cYcZ5C SsVA== 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=GLfvj3RacpzpoOYMBKX4YgpHbXTle+wSJNNNFGyAZ4g=; b=lZ/OUfCqy0ExHcZh7+jipaldyDijh83r3xmHjkXwbgGL8nswsr30cFN8y4KhAql0Fe ZphSKDZTFCdJ1i309CCvF6pp03PROGAeOsoi7NFiw4X95YNaEVQvjmkh8iA7zR67eI6I lmFcU76IvXYGRAenmOw2ftOOJ5lekltAPJ+425J2bL5tO1EJhXEJEZGAE98/v/AtG95P p/BeCs7DPGHOACZIx6J5F8WW5z1hHvWsfEyUBri6NAr0rIhshHviJivYRIKlc9jLko6z bR48rC3lTbPide70aNJkNjg+Px9UbWIeua6uqfoiDvjj29R0zCy7Q3krQNc8df8ivhHa l7Wg== X-Gm-Message-State: APjAAAW7LgAEjxRXoHhCeqbQQ1L2cE+kefBSEjIKa3JtXPun3jqukab3 qQ8QsRY9RoQigM6HHSTm5kWaK7X5Tgw= X-Google-Smtp-Source: APXvYqzUeCfc3a/nwWjBFwR/rOndeEcXenUFdl5iTRqcE3liK7fwQrbbLuG35jLPpKCW9Bymc12VvA== X-Received: by 2002:a17:902:4c:: with SMTP id 70mr6825273pla.308.1562347000312; Fri, 05 Jul 2019 10:16:40 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.39 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:39 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Olivier Matz Date: Fri, 5 Jul 2019 10:16:20 -0700 Message-Id: <20190705171626.13448-6-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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 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 5ddf1ca116e5..38e6ccf13947 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 Fri Jul 5 17:16:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56177 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 7D7071BE45; Fri, 5 Jul 2019 19:16:51 +0200 (CEST) Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193]) by dpdk.org (Postfix) with ESMTP id 9F5C71BE0A for ; Fri, 5 Jul 2019 19:16:42 +0200 (CEST) Received: by mail-pl1-f193.google.com with SMTP id 9so4885816ple.5 for ; Fri, 05 Jul 2019 10:16:42 -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=kGZYQUZDMMY1GEjzaZlvo1eXwhFDM+CkJWUzShfbxP5UPXA9gubJWX1r6BMDij0jtc QFLotFCVCALr+Tq/swwku6ubuyp+qtCvQ6xmxRK6tcp0SNVqFBf76cV8ygxE/dmYFVzI HFWGuAPCMKN42K/rGg+pe8MGhJ2dwbBC6Yxz7/X1wKGEQvCQ7tZd4dGviUABuT5yKoS9 zAC4aR+cNs9urIXAmpGFD81iWI4nFllqMQMKqadHdPxNWsgSWrWlvG+cl3ob0j1spxYU 57Sg4bL6MjTBoCePs1dBYfEGMiFbEji/LeB6D2ozsUI/X4qTAzynMthqGyK9H4cdBC9c 1Sqw== 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=UIfp9+IEzxIP/t6HMhQhu7aRvQqJniqAgQynEEjMYmXP1xobSAQsf773vhxbiI84MR eUg6Xh8H8aTbh40MOj490qzkMyOVAlFZmPYDWvc5oytkxyeeKyOoX73gj9nhrsAs5o5i bSO+8MwYya7/svSx9lkR0kT7WnjszjLPwBt7zKHp6IRVtWb7F8SH8xDJffUtk3ItKNnA EZhkltMDSWfDoI37bUaGFpfv+A0rZN/4GVoyEyQpcuJ15ov0ZUyAfShkIpRSKpqLWNvZ h8vL5gpqJNjYIgHc/IDMVcnAlkU8FWlnTjO44ZaBE0a0+KST3Lhjn7GvHnPEZYyrZIr3 Ivrw== X-Gm-Message-State: APjAAAV2YzUKYwvm4WI5DAGyj47uq7dIQOZ6av4F6e5q7eMFC5EPFzEi awEDRRgIZGsYRxHZzm3e2u7o/ppCiM0= X-Google-Smtp-Source: APXvYqyyex3jsZugPR3oGOR/8FZdHsrESG4/avGvvrDTbQI8cABwECjad2hlfjX2p9At3JhWN+Mqtg== X-Received: by 2002:a17:902:b612:: with SMTP id b18mr6842918pls.8.1562347001635; Fri, 05 Jul 2019 10:16:41 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.40 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:40 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Fri, 5 Jul 2019 10:16:21 -0700 Message-Id: <20190705171626.13448-7-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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 Fri Jul 5 17:16:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56178 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 EDDAA1BE4D; Fri, 5 Jul 2019 19:16:52 +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 D9D9F1BE1F for ; Fri, 5 Jul 2019 19:16:43 +0200 (CEST) Received: by mail-pl1-f196.google.com with SMTP id t14so1796379plr.11 for ; Fri, 05 Jul 2019 10:16:43 -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=fu2bChbB/7FMUC9HqFzW2ay8WOSjmyXPcneJsqiHs8Y=; b=ijcbYN2ttg8gJZItBtCrI9mk331jxRk6SCnCKTOz/rjo6eNyrhrbqzoPiN4Au2J2Zz 4idLmtT4YO8hZgrzDOpC/JImaLpEgTReTFWSekI+8tYna5E5sM9SP13t5KB+8PkvvYaX WJEdVoUNWOKizymaAd5HXaJhkIaNsz9rwGp/Qeiv8vY25s2mdWRXc5hP5SfOSt8ZAAGU tlK5QsyvgeHfrSms29Uf7mJp+j0DYd2JpMooih9H/b0VS+HFdk9fJd0NphgzV3oUWFsT tg581M1jwBCaIPipPfVuAdwlJO4OJFhzPGcnfxW7iUy3qxl6PS33Y4x12jRd50JrlD6W ihHA== 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=fu2bChbB/7FMUC9HqFzW2ay8WOSjmyXPcneJsqiHs8Y=; b=gc5m/O93NYedshO11Aig5iTg7qGIHjjwD8NaG4FpXaU5k3shn3A0BA/3mkj7SH12aj kVYGa2e6kFcaF1gQG/H788ISWlf3GJfOTnAT8pXozrezaSzGoi2jFCxOMLvfnHjVez7g /p1T1Kh0/mbE/PKQ+3nm5UwpzIudcljnbC7BxH4PcTqzgIi6PgyXm+MxK1Nw6tD4MX4E r9iAagApwoVDOd4F5l7L13VOYHhCG+qrcnx7LcXACwqDFy3ndVDlHZl2HgH25wFzQgsO tTrSfRE9Uov1AzsRUALzhj9BLSarxVlkd7HXfD/Q7K3iJZ3p64sbV+C+XhXKA2SGfffE 9YuQ== X-Gm-Message-State: APjAAAVw7MX4imNzfvFcG1cMDFBaQeCxsFqpLn40HDFGgjp6dNZM2yYD 0bCNvZZ6canGQnwEpnc52gMrQsLvlL0= X-Google-Smtp-Source: APXvYqwF/hcsfJAMuh4NdoRBW59TeahcVRfJgooFbgtW6agkxObBZS3KIKcVWQoUj65a5n0FSaCeJQ== X-Received: by 2002:a17:902:e40f:: with SMTP id ci15mr6858555plb.103.1562347002786; Fri, 05 Jul 2019 10:16:42 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.41 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:42 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Bernard Iremonger Date: Fri, 5 Jul 2019 10:16:22 -0700 Message-Id: <20190705171626.13448-8-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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 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 Fri Jul 5 17:16:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56179 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 92F851BE57; Fri, 5 Jul 2019 19:16:54 +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 26ED41BE29 for ; Fri, 5 Jul 2019 19:16:45 +0200 (CEST) Received: by mail-pf1-f196.google.com with SMTP id r1so4558993pfq.12 for ; Fri, 05 Jul 2019 10:16:45 -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=STPG36kStuIdOqB694tQF/jXWcSCbokAw/TP1zVi51DPshVCyJhYRT4uuIeqwkG7Hw 9qfK8AAiVHLLz/aa6DW8LNCEeBiH8fpyv8LC/IlotvvKtaS8NIErcNnyiTJ8yRuyARh6 VB6NDCHQpRWi1oa+IaHT5z7+hMJS/Pnpjy56arFL3qbeQqbhd6RzSEgmKtMgxTEKMNn9 T8En33qdv886vKBBRkmjk1a3rVzA3jG8+5C0X6OWfMHBIpCdr4lUQpSy0Jkdu2jzMiP2 FJu7dEZRgecz0K2PCc6mMjcyPTFIa6mN3XOwDiSLK2+yyBcxncCUnp/UcBWxM99g7Szz xiZA== 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=fF7Am7HDTTs0HpCcxF4KEEhmYZXLuBcCnsB8x5CjdrvRUZBFRXkb95zeztbOAjM4Bw +OFA2MMSLZyiTqIgpVIKYzxBa/tsa1ZP/2GvNkD/kmvypZEiZvJDOPwNkfYYRDU88Wi8 lBmY7EtHR0J12RC4WHXYuR8+HIAUog51vBkwINNg/9NABIyH4/pcu/tKAE9yVxURQR6I +rQvZC37M9eT0Jch8LbPe7g3lcjxsEdRmcbhEXMdsn1MkLtR+KDTVwe40UbfRpVbrsDO lnPcui1sKZ40FiFNQgvhheEAIaJL1ynRYCKZQM7GWshPLjryv+lLubsa9slQ3aYhlkD+ pfFg== X-Gm-Message-State: APjAAAUJCoQfKPw5lfcXQ5/1nJ3sVE2n9TpvKiI7EPcGA4fEyWxvQ0Tr Hp8dq8xhQ9WCY4btCaQf1ox+HjKYLSs= X-Google-Smtp-Source: APXvYqz/ytM6aYBptQp9nRQ4JYd5GOnJcyjxsi68BEf2dGHmh4RnzB3Amyuohp6kKG2QcoxQjrc4oQ== X-Received: by 2002:a63:e20a:: with SMTP id q10mr6561551pgh.24.1562347004036; Fri, 05 Jul 2019 10:16:44 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.42 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:42 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Fri, 5 Jul 2019 10:16:23 -0700 Message-Id: <20190705171626.13448-9-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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 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 Fri Jul 5 17:16:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56180 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 E39321BE62; Fri, 5 Jul 2019 19:16:55 +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 4FE9B1BE31 for ; Fri, 5 Jul 2019 19:16:46 +0200 (CEST) Received: by mail-pl1-f196.google.com with SMTP id m9so1217528pls.8 for ; Fri, 05 Jul 2019 10:16:46 -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=EhlaAIl9pzc0wslphhmLzkjhfuqIbkfCedKeUPmQRt3OLLnIH5M9wU0FogfPoUHAY3 49KICvBvnlP5x9VkQHa1DFcl8RzVtrnyJt8NFS/YjWnPztSbUUG7YdkQUaAc00tLaIWx 7qy+Dm1NrPYsGaHyPDZSfIBH/xZ+DzGgDT8/R083OKicD/xdKkEpIMtp9DCC2FMa2vgG bN6xJwcGf8o5+6mfC5j8pWZ5icxctEoc1nfyrJTPSUKYDxBF0XtwodNZ6nU52cYeTkqX pVn8KDRcPd6u8bh8W/EGRlxDWT/OfeCzMz4Yz5zm+wiSZ9glwJ2K2Dk5BJhnrlw1qyim GIMA== 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=l34unhvo4VLJdX6PeD9jIwvfjvrME5K6pXxO7oqFMVxOIw7gK3z5EFl/5KdY5SkDnM ws+daiUIeLs122ODPwUnNkXwxckw3DrZM4oKQ1+/eV5xQYk6tlZN1+TpUoIyU/a0EnDl 37fO0AyZ7W4qg6JeFWlaLEI/XeiDCvTeKwhVbIrSraHEb0puOT53TeqxXneHkiQ0qRlr ukFFVRgK2s5vPyZYC+WzW9N/1ltjdzDr4xBgQnfagPigwaAUrGyJh+2wtQnvbMRymh4T qn+8qpHITQAbP9TBGH2OZQRDh0Nj2mMwJQimpPRZSg8F7y5Sk3iTxHq1w/NsmVwd6dks VHPg== X-Gm-Message-State: APjAAAXrtsUdJtYpMXJsmcYbEu5xQdGQecbqSnrNwWrmrIlFOaAvLNDt vOVH2m8H7VN4oov5FEp/b/HgGK1yX1Q= X-Google-Smtp-Source: APXvYqzX7Qe4Af49QXcXWFJfyD0Ruun3BORoXwI72rcGio2lnNihmQ7vplDwJ3lmqpoXGdR5QbZMnQ== X-Received: by 2002:a17:902:2006:: with SMTP id n6mr7007973pla.232.1562347005323; Fri, 05 Jul 2019 10:16:45 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.44 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:44 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Gaetan Rivet Date: Fri, 5 Jul 2019 10:16:24 -0700 Message-Id: <20190705171626.13448-10-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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 Fri Jul 5 17:16:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56181 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 D13981BE73; Fri, 5 Jul 2019 19:16:57 +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 60A281BE31 for ; Fri, 5 Jul 2019 19:16:47 +0200 (CEST) Received: by mail-pl1-f194.google.com with SMTP id i2so4891619plt.1 for ; Fri, 05 Jul 2019 10:16:47 -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=IoRpJeaXQvcY9jE/DmR+NlDhCByOX6ts+m68i4Vz+IlH2gQkOoJnIp/sMzNy8Z8KsW MLEv1nd6za+8L2Qcg0PPgGaett7gzhXRgHvZBG6KwEKpJdse6VqBtj08Uh2POL8W58b+ uVdD2NHb7OH8wimLmJy23N+g9inIODwq9upxmfG4ayo/lBpXNvde8Kzrf4MgyEkvJ5fU tDKBpD7H9FAc8F5mAY7iXR18JkbS++yY469GSs1FIaXiwSMC+ADD+wzeuJBYerGpKrKP il3OREjZ3OCGH181OVc1Xi4q32BIT3+aM7qejX7HPonfXf6pvbFpM7dKnnOpsxyyvuv4 iuGw== 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=E6GObVLYsthQ2oArCX7PodxxmCh1EBFE5RHx95eTqHjXD08I4L5l5WgYahfllvdvby we5k/I4O5pP9GoUoY0MeQO4R5grIQuCaCkpVcKIzyuWFVpvuVsmxTpK/bcyjfExo5RqI YjLYI2k0XdmZ2BSCgB+p8LvuoWI5pIFyVMb931qAl5xoSiXJbMuvSh6yf5Q767Cmeb1K mWqehZVVMLQR58weJPe1zrEgBeetIzv9MSEYlobCcZ5tks0Gja/F2i276Yc/X1nJKSNX QCuOfh2Yqz4XVZtKXjx5OuBnHZmgzkPhyEoNTSdVtpuP3yiaWUd0jDsDm9tCJ5K6Zp2Z gkcg== X-Gm-Message-State: APjAAAWsXmdGUbDQm6yVk4U/1v5dUiXBw1UIMZeTYXeBOB3mxgWkIU8L 3gncltEMfiuQqTL6hG7f46nrsBDiKlM= X-Google-Smtp-Source: APXvYqzNRqnhlSYT2YWWGFpbkcO1PAUblC9fERzzuerLLk6KVSs1MC5s6LrK8w+jy/75WPdHLrgFfw== X-Received: by 2002:a17:902:2a27:: with SMTP id i36mr6734640plb.161.1562347006392; Fri, 05 Jul 2019 10:16:46 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.45 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:45 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger , Matan Azrad Date: Fri, 5 Jul 2019 10:16:25 -0700 Message-Id: <20190705171626.13448-11-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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 Fri Jul 5 17:16:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 56182 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 68B001BE7B; Fri, 5 Jul 2019 19:16:59 +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 94FA81BE38 for ; Fri, 5 Jul 2019 19:16:48 +0200 (CEST) Received: by mail-pg1-f195.google.com with SMTP id u17so4090804pgi.6 for ; Fri, 05 Jul 2019 10:16:48 -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=d6q0jKiO15y39WrQggygBzL9oKWF/HaWpab1OOAzX5u0RzbotaugVD2prxlqSvs1R5 DekAgQ5rWjN/prRJQTdeaimJ0LrGLerwhas6XqYY+IWo5SUUFVXqYff7x3VQhzJ6rnVh 4wezaVdl9AkVIegxVWxPxNVrqsQUD9BYuEiRtR5CDQoAufLNtkZrYX1kqUpO1rbq6FIk jl318E1DWR+vCXD0HBPRpaJipcf8adOjqMwKf+Mrz2dU6pwbPIshDW+6OizhDjd6Kqc1 kHk4UVI63cMCbHYFqnV2D326R1Bm3Xf5IQEXqJPSzFJPczUx6JvRJrvBmEtRIEAYRjUP 6dJg== 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=t6WtRMVx9vHA0qTCS4ZEftRi1o9rUANM3I6Z+O5qGCNeb0DKAdHL5QzZ/IHnzIRBqU 2L7jxQjcu1TlX4w44lgrjWGdmlL/6jjgzlG0YPPZuWr+HEOFt20WFm1Gw7u2buL3R1Ex cxe7fcq5ulKeMQqFaIewRktpVv5BlBNXuIAWVPbH3/+K7UgLFo2sV4rpYLuyIauL9+mm 883RwVPHWlxgrT7Hl7vH5NY+SOLCp4A0CR4bRzeCUaMoS5BNK+6A39e5QW8baVLOvvfS mHfcTPll//mfWwMTKQ+XnxOojeaCNXV/o/AtDdcMyNx6jvO8GYw+yIG6j+thyYUk8oHW lU5w== X-Gm-Message-State: APjAAAUh73vUL04RGWsIgQfxeeQhCn3DCmyzwdNaxM4mjEYUAkDjXHXB hDALRB+8+1kuBc6gcUtJyAjV3ONlrww= X-Google-Smtp-Source: APXvYqwZzRfuWEMkPnfylx7Dv3q5RJ59LB+q4NbmPe0E96W7BLadmqcPMcr/eQu6aW4GiapH2MwNTA== X-Received: by 2002:a65:458d:: with SMTP id o13mr6638273pgq.34.1562347007472; Fri, 05 Jul 2019 10:16:47 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id 21sm8991014pjh.25.2019.07.05.10.16.46 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 05 Jul 2019 10:16:46 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Fri, 5 Jul 2019 10:16:26 -0700 Message-Id: <20190705171626.13448-12-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190705171626.13448-1-stephen@networkplumber.org> References: <20190516180427.17270-1-stephen@networkplumber.org> <20190705171626.13448-1-stephen@networkplumber.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v8 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; }