From patchwork Tue Feb 22 16:06:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Krawczyk X-Patchwork-Id: 107981 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 2B516A0352; Tue, 22 Feb 2022 17:07:28 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 529F141163; Tue, 22 Feb 2022 17:07:00 +0100 (CET) Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by mails.dpdk.org (Postfix) with ESMTP id 04D4341154 for ; Tue, 22 Feb 2022 17:06:57 +0100 (CET) Received: by mail-ej1-f44.google.com with SMTP id p15so44257340ejc.7 for ; Tue, 22 Feb 2022 08:06:57 -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=l1kx888eKfNexEvUoiLHNaU4h6I1k9z/A18uzo1khc0=; b=T/Llk93ij/M6Q1HpHlfSQYrJKGQdU/UA+Z5hgFOSO/e5msNT/T6oLzdMVamN4Pt+Lb Vsr5CUCRDpk4q258CPDEye/IQSEMhd6DXx6xnOomB0F9A2nDpYAQ2EauWdgibt8zBTDF 7XHrYQ8QU6z0+2D6sr1vd14Q8RBlnprXO0dBtI6QCOEdEr3IoD8AW4oAaY2xRtnxLMU2 PvRJXvfNSdTVLTEYOn7BCQjBHbPVxX+61FHjBHUM4jWamVxsxjmiaYFScOXrwOSIigsN Yvh0BFnZWQPmZMpMb1fUIeRmrOM2Yyq0BCqCavsUBvRozrrZecvSamLSwW101dp9T9zP /JEw== 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=l1kx888eKfNexEvUoiLHNaU4h6I1k9z/A18uzo1khc0=; b=UFCLkllBfVbpNbQqj704JqPV1MVRLzIFwBOMWGOVWv2Bd2bbBgQDm9iZNsUyxGNFlu wmsbBhe/+JzF+K8w9pqTui5Y8cJqc0uQKDIYzm4bI7PeTDnDArreODcGEW/2Vgtsk8RO GQtIyHp409musT8xMwVomIosK8SwFO7oTvHGwJEgmlMzd8kEcRWBCOLVYVqNp6ho1mbR Z8bMIJe/vd1crRWvGXnGhQqf1simt1KzDGWq0fNt4Qu2MOf0uUqiQzFuHMykd5RzRPKK /xJG2T4MTFbb+sGwkXx2qeRZ4tsYcso674qzpI0jZHzz5lxp2F2eJttdqt2hutX9Xytp I9Dg== X-Gm-Message-State: AOAM532x/o+CgsjhxO1erau+mEiWKJtE7yPDHlSo0JeXa0yAL08hb5+h bs0VV2KWP+A3rgSw9Lb+hjYhyYiVn9HJhw== X-Google-Smtp-Source: ABdhPJzdrx91MIeFJnJkbHNoA2EvGkOa1FxILlqnd6abiElF9UBAHSLH51Y9pOKcAbNMLIwUGgZPyg== X-Received: by 2002:a17:906:8a5b:b0:6ce:2a05:813b with SMTP id gx27-20020a1709068a5b00b006ce2a05813bmr20131160ejc.589.1645546017161; Tue, 22 Feb 2022 08:06:57 -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 x6sm10013477edv.109.2022.02.22.08.06.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Feb 2022 08:06:56 -0800 (PST) From: Michal Krawczyk To: dev@dpdk.org Cc: shaibran@amazon.com, upstream@semihalf.com, Michal Krawczyk , Dawid Gorecki Subject: [PATCH 05/21] net/ena: add extra Rx checksum related xstats Date: Tue, 22 Feb 2022 17:06:18 +0100 Message-Id: <20220222160634.24489-6-mk@semihalf.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220222160634.24489-1-mk@semihalf.com> References: <20220222160634.24489-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 41923f50e6..6b69763f85 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;