From patchwork Wed Feb 23 12:19:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Krawczyk X-Patchwork-Id: 108149 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0EB0BA034C; Wed, 23 Feb 2022 13:20:56 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8F3B0426F3; Wed, 23 Feb 2022 13:20:39 +0100 (CET) Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) by mails.dpdk.org (Postfix) with ESMTP id 9BCCB426E9 for ; Wed, 23 Feb 2022 13:20:36 +0100 (CET) Received: by mail-ed1-f54.google.com with SMTP id w3so43895518edu.8 for ; Wed, 23 Feb 2022 04:20:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=R/bZXZOrNdEroUUfKqChZiCQ8bICy5/4sRq780M3NLw=; b=EgVFopF3PzoOuc4sDMMuhFv9lhv0Bu5PoWD8ZGz/UVOviBt2ZUAdHL4Ja3dORjOPEv vectFWBQ1z3nv8QBcjLMxZy7kQwSgpx3Wwn3p3009NjQ+EO8ErytH+I1fd24g9aWsS1K OIBmmwFvAvyOdDR440JBtYQQaMUBlpJcN+8FtF6Ui9AJY63E9+3tsQ8MO3tqzHFTycvh BqBp6pELWkFiBopdd+jwLttAtN/WNZuU4WM6C9RhHIdoYgi2mC0E7Ph97N6VbVEoaxmq 3dy2WYLKZYx1wIprNN1CS/thWV4xzgeFVFXuS5eoxgXcL2k27etpqxzRbaWjqrC+9tqV g51w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=R/bZXZOrNdEroUUfKqChZiCQ8bICy5/4sRq780M3NLw=; b=AOvfBxtjiY6JyFJ4KTxJtC6OLq3u7QGn2cc2yopPK+ZxjWWHP6vU2hA2U49N6Lk0YT 8hVTKk9BoQcuQ7j6EKYS8R+ResQAETFi1vrVwCZZv2Yn4+ilvYluX9zfd0aSc7UK5O9d RacyBmJU1H7NbeWFaje2izcOHf58hel1bt129QrXmnihtYSM9orwYOMrctT7WnKwKUD6 3mKmdn1yKKGfinAkmSK2SjbEFG/gsSD6KFpmYp1nokdO0Y2RRWjjq55c5A8DH2CMhhzV yC7/m/wkMfWnM1SqWMyM0seUKdsbBwnQ0Z+iQ9s0b6SlX+KGRl6AdgUpJ4LyObS+aa6Y wy8Q== X-Gm-Message-State: AOAM533PtTy4FClZ7ATjeIIDEjXbzWuKH45rNMYuyEjtU5TA8Wu1fx8x YC3xCSTkwEiuXNeCK3L4dKqMa9vCfK+DBg== X-Google-Smtp-Source: ABdhPJzAOLKmM+cQ/t5K7pQxVOJGGwp/Co2YJQ6M4L5kCBnUhgf++71y3XnCpT+2CaKCx339VMPbLA== X-Received: by 2002:a05:6402:524a:b0:410:f090:6388 with SMTP id t10-20020a056402524a00b00410f0906388mr30283919edd.26.1645618836023; Wed, 23 Feb 2022 04:20:36 -0800 (PST) Received: from DESKTOP-U5LNN3J.localdomain (89-79-181-52.dynamic.chello.pl. [89.79.181.52]) by smtp.gmail.com with ESMTPSA id v12sm11629224edr.8.2022.02.23.04.20.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 04:20:35 -0800 (PST) From: Michal Krawczyk To: dev@dpdk.org Cc: ferruh.yigit@intel.com, shaibran@amazon.com, upstream@semihalf.com, Michal Krawczyk , Dawid Gorecki Subject: [PATCH v3 05/21] net/ena: add extra Rx checksum related xstats Date: Wed, 23 Feb 2022 13:19:28 +0100 Message-Id: <20220223121944.24156-6-mk@semihalf.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220223121944.24156-1-mk@semihalf.com> References: <20220222181146.28882-1-mk@semihalf.com> <20220223121944.24156-1-mk@semihalf.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org * Split 'bad_csum' Rx statistic into 'l3_csum_bad' and 'l4_csum_bad' to be able to check which checksum was not calculated properly. * Add l4_csum_good statistic, which shows how many times L4 Rx checksum was properly offloaded. Signed-off-by: Michal Krawczyk Reviewed-by: Dawid Gorecki Reviewed-by: Shai Brandes --- doc/guides/rel_notes/release_22_03.rst | 8 +++++++ drivers/net/ena/ena_ethdev.c | 32 ++++++++++++++++---------- drivers/net/ena/ena_ethdev.h | 4 +++- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/doc/guides/rel_notes/release_22_03.rst b/doc/guides/rel_notes/release_22_03.rst index 74965ebd56..f6b881b8b4 100644 --- a/doc/guides/rel_notes/release_22_03.rst +++ b/doc/guides/rel_notes/release_22_03.rst @@ -104,6 +104,14 @@ New Features * Added support for libxdp >=v1.2.2. * Re-enabled secondary process support. RX/TX is not supported. +* **Updated Amazon ENA PMD.** + + Updated the Amazon ENA PMD. The new driver version (v2.6.0) introduced + bug fixes and improvements, including: + + * Added new checksum related xstats: ``l3_csum_bad``, ``l4_csum_bad`` and + ``l4_csum_good``. + * **Updated Cisco enic driver.** * Added rte_flow support for matching GENEVE packets. diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index de5fdb8f1d..d534b93749 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -99,7 +99,9 @@ static const struct ena_stats ena_stats_rx_strings[] = { ENA_STAT_RX_ENTRY(cnt), ENA_STAT_RX_ENTRY(bytes), ENA_STAT_RX_ENTRY(refill_partial), - ENA_STAT_RX_ENTRY(bad_csum), + ENA_STAT_RX_ENTRY(l3_csum_bad), + ENA_STAT_RX_ENTRY(l4_csum_bad), + ENA_STAT_RX_ENTRY(l4_csum_good), ENA_STAT_RX_ENTRY(mbuf_alloc_fail), ENA_STAT_RX_ENTRY(bad_desc_num), ENA_STAT_RX_ENTRY(bad_req_id), @@ -273,10 +275,12 @@ static const struct eth_dev_ops ena_dev_ops = { .rss_hash_conf_get = ena_rss_hash_conf_get, }; -static inline void ena_rx_mbuf_prepare(struct rte_mbuf *mbuf, +static inline void ena_rx_mbuf_prepare(struct ena_ring *rx_ring, + struct rte_mbuf *mbuf, struct ena_com_rx_ctx *ena_rx_ctx, bool fill_hash) { + struct ena_stats_rx *rx_stats = &rx_ring->rx_stats; uint64_t ol_flags = 0; uint32_t packet_type = 0; @@ -287,21 +291,27 @@ static inline void ena_rx_mbuf_prepare(struct rte_mbuf *mbuf, if (ena_rx_ctx->l3_proto == ENA_ETH_IO_L3_PROTO_IPV4) { packet_type |= RTE_PTYPE_L3_IPV4; - if (unlikely(ena_rx_ctx->l3_csum_err)) + if (unlikely(ena_rx_ctx->l3_csum_err)) { + ++rx_stats->l3_csum_bad; ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD; - else + } else { ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD; + } } else if (ena_rx_ctx->l3_proto == ENA_ETH_IO_L3_PROTO_IPV6) { packet_type |= RTE_PTYPE_L3_IPV6; } - if (!ena_rx_ctx->l4_csum_checked || ena_rx_ctx->frag) + if (!ena_rx_ctx->l4_csum_checked || ena_rx_ctx->frag) { ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_UNKNOWN; - else - if (unlikely(ena_rx_ctx->l4_csum_err)) + } else { + if (unlikely(ena_rx_ctx->l4_csum_err)) { + ++rx_stats->l4_csum_bad; ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD; - else + } else { + ++rx_stats->l4_csum_good; ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD; + } + } if (fill_hash && likely((packet_type & ENA_PTYPE_HAS_HASH) && !ena_rx_ctx->frag)) { @@ -2336,13 +2346,11 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, } /* fill mbuf attributes if any */ - ena_rx_mbuf_prepare(mbuf, &ena_rx_ctx, fill_hash); + ena_rx_mbuf_prepare(rx_ring, mbuf, &ena_rx_ctx, fill_hash); if (unlikely(mbuf->ol_flags & - (RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_BAD))) { + (RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_BAD))) rte_atomic64_inc(&rx_ring->adapter->drv_stats->ierrors); - ++rx_ring->rx_stats.bad_csum; - } rx_pkts[completed] = mbuf; rx_ring->rx_stats.bytes += mbuf->pkt_len; diff --git a/drivers/net/ena/ena_ethdev.h b/drivers/net/ena/ena_ethdev.h index 4dfa604d51..42c47c9455 100644 --- a/drivers/net/ena/ena_ethdev.h +++ b/drivers/net/ena/ena_ethdev.h @@ -114,7 +114,9 @@ struct ena_stats_rx { u64 cnt; u64 bytes; u64 refill_partial; - u64 bad_csum; + u64 l3_csum_bad; + u64 l4_csum_bad; + u64 l4_csum_good; u64 mbuf_alloc_fail; u64 bad_desc_num; u64 bad_req_id;