From patchwork Tue Feb 22 18:11:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Krawczyk X-Patchwork-Id: 108013 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 4E224A034E; Tue, 22 Feb 2022 19:12:39 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1AB9A41152; Tue, 22 Feb 2022 19:12:19 +0100 (CET) Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by mails.dpdk.org (Postfix) with ESMTP id 0D47F4114F for ; Tue, 22 Feb 2022 19:12:16 +0100 (CET) Received: by mail-ej1-f41.google.com with SMTP id lw4so45453980ejb.12 for ; Tue, 22 Feb 2022 10:12:16 -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=e4DVOqlnrXBrnK3ALNje5WBx0/9SUnc2aPp6PBpMxK0GlZitUaCHkWBXWGELJTqoIr 69tkaF4f7RQK0ANSoazrnaVPzVMNwdXdZu6w+Cvp4Is4T9+Ss8Eqcb2k9SL2QrSpPP5n sXdq5RmzeqbMvXtw9lndwk38peOChV/MwlC/BjBJuH3RTABEBa8uC6j7bxtrS9NnF91G AcOWv7NiczSJzD9ue+ZXIIZrfSnO6DJmBa49l5SD7ZsoBrEK9GI7iI81rLuXbvstVGIg JXk+FeEsvCpIMYK3yNSUnW814Ssgu6r4KI5bhJkXqU4UoiqeKJsSsT+tzpMiDPuI6JDF AhwA== 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=QZsvU+ZkSI5pfXB2CYYrKwyznmfFLwYAIk3WC6KANWBY1qm7cx8egdxicw8yjT2llF RIvwP5olGEe+ngfOk9iwfKlPRftULzO1kwG7qM/vruQOETqmrEXtcR/XHXC4qFiDuOFY wfid+useey1FREmE8IUoNqFxJpoJlOuPJpER/6cXI1cm0h/dNbXe2X0xFH7jFUDVDRcv GK7Ts/Pa9/5rVUKG9dnUOQGWV1cCAV69Lu0PobYOV37D5HhcAjCX9GMBA0NxHNYZ1oAx ufIEvWKOxQWWPUd/uJijF6oc8+xpaYDZLlDL9hmbUddHAnm3qjHnaXZkC8Cbg0EmQr2q TW3g== X-Gm-Message-State: AOAM5300/wP9dD8ZEPvNRJ4iPv4paHOl8mNoJPDURXWw+UMsgqQpSSkp c+/E4uZ3qQf48tpjFaCbJ0BMsIgJAI09HQ== X-Google-Smtp-Source: ABdhPJxdfO+Z4ReNB/twLbHPgexIZTB8eAUPJ5I/7KjE7EmevMv2VZohQ0r/DCatzY1M2mQ4UIyPkA== X-Received: by 2002:a17:907:954f:b0:6ad:3614:73e6 with SMTP id ex15-20020a170907954f00b006ad361473e6mr20491894ejc.731.1645553535451; Tue, 22 Feb 2022 10:12:15 -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 y21sm10610153eda.38.2022.02.22.10.12.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Feb 2022 10:12:14 -0800 (PST) From: Michal Krawczyk To: dev@dpdk.org Cc: shaibran@amazon.com, upstream@semihalf.com, Michal Krawczyk , Dawid Gorecki Subject: [PATCH v2 05/21] net/ena: add extra Rx checksum related xstats Date: Tue, 22 Feb 2022 19:11:30 +0100 Message-Id: <20220222181146.28882-6-mk@semihalf.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220222181146.28882-1-mk@semihalf.com> References: <20220222160634.24489-1-mk@semihalf.com> <20220222181146.28882-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;