From patchwork Mon Aug 19 11:18:48 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1149192 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="b3i0d7A3"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46Brzs6bb1z9s3Z for ; Mon, 19 Aug 2019 21:19:37 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id C926DE22; Mon, 19 Aug 2019 11:19:07 +0000 (UTC) X-Original-To: ovs-dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 0E23BE1A for ; Mon, 19 Aug 2019 11:19:06 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 1F23A86E for ; Mon, 19 Aug 2019 11:19:04 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20190819111902euoutp015ea50fc2e22cc8108ee1657fe23faac1~8TusqDZgX2005620056euoutp01G for ; Mon, 19 Aug 2019 11:19:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20190819111902euoutp015ea50fc2e22cc8108ee1657fe23faac1~8TusqDZgX2005620056euoutp01G DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1566213542; bh=EaXp/HOOQS4rFZyvnB/UAfpzcjRVvGE+L66A0NdhHWI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b3i0d7A3Ft/C1I469kQg2DFoiQFtbaZE2JTe4nnMdOVZetPQbnF5HoiaGB4BGI0S/ hC2524ekyqa4cTpgFOByGab9lHrxGUDydP22yhdxswlhzF5gEMB3ZNnUCRMm8VmtAd ZtxH28Ki10S6uWmbWxtzSxnKm1GKfQruSdKrZvUs= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20190819111901eucas1p210178d754afd0ed7342a5c88e5d4a5f1~8TusG9EsH1370313703eucas1p2e; Mon, 19 Aug 2019 11:19:01 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id C0.90.04309.5A58A5D5; Mon, 19 Aug 2019 12:19:01 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20190819111901eucas1p222b782b52e4ad8cda42e197095b9b010~8TurakuEs1270112701eucas1p2p; Mon, 19 Aug 2019 11:19:01 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20190819111900eusmtrp1e7976c5ec36af748f1b0f5d1ad20e306~8TurLm4580591705917eusmtrp12; Mon, 19 Aug 2019 11:19:00 +0000 (GMT) X-AuditID: cbfec7f4-ae1ff700000010d5-3d-5d5a85a5a6b4 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 67.FD.04117.4A58A5D5; Mon, 19 Aug 2019 12:19:00 +0100 (BST) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20190819111900eusmtip27a54e487c0510af9cd2b52280d2ae86b~8TuquOwdP1666616666eusmtip2-; Mon, 19 Aug 2019 11:19:00 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org Date: Mon, 19 Aug 2019 14:18:48 +0300 Message-Id: <20190819111849.5824-2-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190819111849.5824-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOIsWRmVeSWpSXmKPExsWy7djP87pLW6NiDS6sk7XYvqKLzeJK+092 i40Pz7JarD30gd1i7qfnjBY35+5mdWDz2Nyzl8lj8Z6XTB7Pbv5n9Hi/7yqbR9+WVYwBrFFc NimpOZllqUX6dglcGZ8fvGctmGtX0bU9soGx36CLkZNDQsBE4vCp5exdjFwcQgIrGCXOvmtn hXC+MErcfbmPBcL5zCjx6MEPZpiWnk3TmSASyxkl3u+FcX4wSkx7dpsJpIpNQEfi1OojjCC2 iIC0xOveN2BzmQUuMkrsnH4dLCEsECrxZ/ZfsAYWAVWJk81zwGxeASuJs9N3MkKsk5dYveEA 2GpOAWuJpS0LwW6SEHjNJrH11Bc2iCIXielT3kPdJyzx6vgWdghbRuL05B4WCLte4n7LS0aI 5g5GiemH/jFBJOwltrw+B9TAAXSepsT6XfogpoSAo8T5xVYQJp/EjbeCIMXMQOakbdOZIcK8 Eh1tQhAzVCR+H1wOdYCUxM13n6EO8JBYsPADNHz6GCU2Hn/FPoFRfhbCrgWMjKsYxVNLi3PT U4uN8lLL9YoTc4tL89L1kvNzNzECk8Ppf8e/7GDc9SfpEKMAB6MSD+8J1ahYIdbEsuLK3EOM EhzMSiK8fQYRsUK8KYmVValF+fFFpTmpxYcYpTlYlMR5qxkeRAsJpCeWpGanphakFsFkmTg4 pRoYp9Sx/Wb13bfrk6rCR8aOV/O6Eu6a2/qc3KU+zfrgOduHYjbxV9VYJXW6bu3Su75G7pZo KlO6qPvt0ml7itvzWEtnfurdIHxXIEA36cu14HkzejPTSxf/tZH5YSOVIytavi+Iz1LTQdX4 xJXYZs2Zj1g413zZvm3O9+tOWXsmVnnoLanx5nilxFKckWioxVxUnAgAi8Rw4goDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOLMWRmVeSWpSXmKPExsVy+t/xe7pLWqNiDR6c0bHYvqKLzeJK+092 i40Pz7JarD30gd1i7qfnjBY35+5mdWDz2Nyzl8lj8Z6XTB7Pbv5n9Hi/7yqbR9+WVYwBrFF6 NkX5pSWpChn5xSW2StGGFkZ6hpYWekYmlnqGxuaxVkamSvp2NimpOZllqUX6dgl6GZ8fvGct mGtX0bU9soGx36CLkZNDQsBEomfTdKYuRi4OIYGljBJ3ztxmg0hISfz4dYEVwhaW+HOtiw2i 6BujxMNTX9hBEmwCOhKnVh9hBLFFBKQlXve+AWtgFrjKKDFxX3gXIweHsECwxLyDnCBhFgFV iZPNc5hAbF4BK4mz03cyQsyXl1i94QAziM0pYC2xtGUhC4gtBFQz8d1S9gmMfAsYGVYxiqSW Fuem5xYb6RUn5haX5qXrJefnbmIEBuq2Yz+37GDsehd8iFGAg1GJh/eEalSsEGtiWXFl7iFG CQ5mJRHePoOIWCHelMTKqtSi/Pii0pzU4kOMpkBHTWSWEk3OB0ZRXkm8oamhuYWlobmxubGZ hZI4b4fAwRghgfTEktTs1NSC1CKYPiYOTqkGxnqTyO1fut++cvt3+qFEe8rMd4biTaqGJ+NC Hc83Nn3dqP7qq9/P6V7b3kaGrmzpab8pJvG+8e5kRS2u9CyTB5c+8s64W526qHpVyrWwF8dD LcPl9vMvTeJa7dakfMvmpYCP7tLD9dlrzCf/qZ8kPuNUftQV8ZSpa2Ykaqrve5Zh2b3pdvi/ DCWW4oxEQy3mouJEAEXIx15qAgAA X-CMS-MailID: 20190819111901eucas1p222b782b52e4ad8cda42e197095b9b010 X-Msg-Generator: CA X-RootMTR: 20190819111901eucas1p222b782b52e4ad8cda42e197095b9b010 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20190819111901eucas1p222b782b52e4ad8cda42e197095b9b010 References: <20190819111849.5824-1-i.maximets@samsung.com> X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Ilya Maximets , David Marchand Subject: [ovs-dev] [PATCH v2 1/2] netdev-dpdk: Fix not reporting rx_oversize_errors in stats. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org There is a big code duplication issue with DPDK xstats that led to missed "rx_oversize_errors" statistics. It's defined but not used. Fix that by actually using this stat along with code refactoring that will allow us to not make same mistakes in the future. Macro definitions are perfectly suitable to automate code generation in such cases and already used in a couple of places in OVS for similar purposes. Signed-off-by: Ilya Maximets Reviewed-by: David Marchand Acked-by: Kevin Traynor --- lib/netdev-dpdk.c | 102 +++++++++++++++------------------------------- 1 file changed, 32 insertions(+), 70 deletions(-) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 48057835f..52ecf7576 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -110,34 +110,6 @@ BUILD_ASSERT_DECL(MAX_NB_MBUF % ROUND_DOWN_POW2(MAX_NB_MBUF / MIN_NB_MBUF) BUILD_ASSERT_DECL((MAX_NB_MBUF / ROUND_DOWN_POW2(MAX_NB_MBUF / MIN_NB_MBUF)) % MP_CACHE_SZ == 0); -/* - * DPDK XSTATS Counter names definition - */ -#define XSTAT_RX_64_PACKETS "rx_size_64_packets" -#define XSTAT_RX_65_TO_127_PACKETS "rx_size_65_to_127_packets" -#define XSTAT_RX_128_TO_255_PACKETS "rx_size_128_to_255_packets" -#define XSTAT_RX_256_TO_511_PACKETS "rx_size_256_to_511_packets" -#define XSTAT_RX_512_TO_1023_PACKETS "rx_size_512_to_1023_packets" -#define XSTAT_RX_1024_TO_1522_PACKETS "rx_size_1024_to_1522_packets" -#define XSTAT_RX_1523_TO_MAX_PACKETS "rx_size_1523_to_max_packets" - -#define XSTAT_TX_64_PACKETS "tx_size_64_packets" -#define XSTAT_TX_65_TO_127_PACKETS "tx_size_65_to_127_packets" -#define XSTAT_TX_128_TO_255_PACKETS "tx_size_128_to_255_packets" -#define XSTAT_TX_256_TO_511_PACKETS "tx_size_256_to_511_packets" -#define XSTAT_TX_512_TO_1023_PACKETS "tx_size_512_to_1023_packets" -#define XSTAT_TX_1024_TO_1522_PACKETS "tx_size_1024_to_1522_packets" -#define XSTAT_TX_1523_TO_MAX_PACKETS "tx_size_1523_to_max_packets" - -#define XSTAT_RX_MULTICAST_PACKETS "rx_multicast_packets" -#define XSTAT_TX_MULTICAST_PACKETS "tx_multicast_packets" -#define XSTAT_RX_BROADCAST_PACKETS "rx_broadcast_packets" -#define XSTAT_TX_BROADCAST_PACKETS "tx_broadcast_packets" -#define XSTAT_RX_UNDERSIZED_ERRORS "rx_undersized_errors" -#define XSTAT_RX_OVERSIZE_ERRORS "rx_oversize_errors" -#define XSTAT_RX_FRAGMENTED_ERRORS "rx_fragmented_errors" -#define XSTAT_RX_JABBER_ERRORS "rx_jabber_errors" - /* Size of vHost custom stats. */ #define VHOST_CUSTOM_STATS_SIZE 1 @@ -2682,51 +2654,41 @@ netdev_dpdk_convert_xstats(struct netdev_stats *stats, const struct rte_eth_xstat_name *names, const unsigned int size) { +/* DPDK XSTATS Counter names definition. */ +#define DPDK_XSTATS \ + DPDK_XSTAT(multicast, "rx_multicast_packets" ) \ + DPDK_XSTAT(tx_multicast_packets, "tx_multicast_packets" ) \ + DPDK_XSTAT(rx_broadcast_packets, "rx_broadcast_packets" ) \ + DPDK_XSTAT(tx_broadcast_packets, "tx_broadcast_packets" ) \ + DPDK_XSTAT(rx_undersized_errors, "rx_undersized_errors" ) \ + DPDK_XSTAT(rx_oversize_errors, "rx_oversize_errors" ) \ + DPDK_XSTAT(rx_fragmented_errors, "rx_fragmented_errors" ) \ + DPDK_XSTAT(rx_jabber_errors, "rx_jabber_errors" ) \ + DPDK_XSTAT(rx_1_to_64_packets, "rx_size_64_packets" ) \ + DPDK_XSTAT(rx_65_to_127_packets, "rx_size_65_to_127_packets" ) \ + DPDK_XSTAT(rx_128_to_255_packets, "rx_size_128_to_255_packets" ) \ + DPDK_XSTAT(rx_256_to_511_packets, "rx_size_256_to_511_packets" ) \ + DPDK_XSTAT(rx_512_to_1023_packets, "rx_size_512_to_1023_packets" ) \ + DPDK_XSTAT(rx_1024_to_1522_packets, "rx_size_1024_to_1522_packets" ) \ + DPDK_XSTAT(rx_1523_to_max_packets, "rx_size_1523_to_max_packets" ) \ + DPDK_XSTAT(tx_1_to_64_packets, "tx_size_64_packets" ) \ + DPDK_XSTAT(tx_65_to_127_packets, "tx_size_65_to_127_packets" ) \ + DPDK_XSTAT(tx_128_to_255_packets, "tx_size_128_to_255_packets" ) \ + DPDK_XSTAT(tx_256_to_511_packets, "tx_size_256_to_511_packets" ) \ + DPDK_XSTAT(tx_512_to_1023_packets, "tx_size_512_to_1023_packets" ) \ + DPDK_XSTAT(tx_1024_to_1522_packets, "tx_size_1024_to_1522_packets" ) \ + DPDK_XSTAT(tx_1523_to_max_packets, "tx_size_1523_to_max_packets" ) + for (unsigned int i = 0; i < size; i++) { - if (strcmp(XSTAT_RX_64_PACKETS, names[i].name) == 0) { - stats->rx_1_to_64_packets = xstats[i].value; - } else if (strcmp(XSTAT_RX_65_TO_127_PACKETS, names[i].name) == 0) { - stats->rx_65_to_127_packets = xstats[i].value; - } else if (strcmp(XSTAT_RX_128_TO_255_PACKETS, names[i].name) == 0) { - stats->rx_128_to_255_packets = xstats[i].value; - } else if (strcmp(XSTAT_RX_256_TO_511_PACKETS, names[i].name) == 0) { - stats->rx_256_to_511_packets = xstats[i].value; - } else if (strcmp(XSTAT_RX_512_TO_1023_PACKETS, names[i].name) == 0) { - stats->rx_512_to_1023_packets = xstats[i].value; - } else if (strcmp(XSTAT_RX_1024_TO_1522_PACKETS, names[i].name) == 0) { - stats->rx_1024_to_1522_packets = xstats[i].value; - } else if (strcmp(XSTAT_RX_1523_TO_MAX_PACKETS, names[i].name) == 0) { - stats->rx_1523_to_max_packets = xstats[i].value; - } else if (strcmp(XSTAT_TX_64_PACKETS, names[i].name) == 0) { - stats->tx_1_to_64_packets = xstats[i].value; - } else if (strcmp(XSTAT_TX_65_TO_127_PACKETS, names[i].name) == 0) { - stats->tx_65_to_127_packets = xstats[i].value; - } else if (strcmp(XSTAT_TX_128_TO_255_PACKETS, names[i].name) == 0) { - stats->tx_128_to_255_packets = xstats[i].value; - } else if (strcmp(XSTAT_TX_256_TO_511_PACKETS, names[i].name) == 0) { - stats->tx_256_to_511_packets = xstats[i].value; - } else if (strcmp(XSTAT_TX_512_TO_1023_PACKETS, names[i].name) == 0) { - stats->tx_512_to_1023_packets = xstats[i].value; - } else if (strcmp(XSTAT_TX_1024_TO_1522_PACKETS, names[i].name) == 0) { - stats->tx_1024_to_1522_packets = xstats[i].value; - } else if (strcmp(XSTAT_TX_1523_TO_MAX_PACKETS, names[i].name) == 0) { - stats->tx_1523_to_max_packets = xstats[i].value; - } else if (strcmp(XSTAT_RX_MULTICAST_PACKETS, names[i].name) == 0) { - stats->multicast = xstats[i].value; - } else if (strcmp(XSTAT_TX_MULTICAST_PACKETS, names[i].name) == 0) { - stats->tx_multicast_packets = xstats[i].value; - } else if (strcmp(XSTAT_RX_BROADCAST_PACKETS, names[i].name) == 0) { - stats->rx_broadcast_packets = xstats[i].value; - } else if (strcmp(XSTAT_TX_BROADCAST_PACKETS, names[i].name) == 0) { - stats->tx_broadcast_packets = xstats[i].value; - } else if (strcmp(XSTAT_RX_UNDERSIZED_ERRORS, names[i].name) == 0) { - stats->rx_undersized_errors = xstats[i].value; - } else if (strcmp(XSTAT_RX_FRAGMENTED_ERRORS, names[i].name) == 0) { - stats->rx_fragmented_errors = xstats[i].value; - } else if (strcmp(XSTAT_RX_JABBER_ERRORS, names[i].name) == 0) { - stats->rx_jabber_errors = xstats[i].value; +#define DPDK_XSTAT(MEMBER, NAME) \ + if (strcmp(NAME, names[i].name) == 0) { \ + stats->MEMBER = xstats[i].value; \ + continue; \ } + DPDK_XSTATS; +#undef DPDK_XSTAT } +#undef DPDK_XSTATS } static int