From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0D1B4A0032 for ; Fri, 18 Feb 2022 13:40:28 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F0EB640141; Fri, 18 Feb 2022 13:40:27 +0100 (CET) Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by mails.dpdk.org (Postfix) with ESMTP id 5671240141 for ; Fri, 18 Feb 2022 13:40:27 +0100 (CET) Received: by mail-wm1-f45.google.com with SMTP id w13so4671805wmi.2 for ; Fri, 18 Feb 2022 04:40:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YnVHXvaS6oiDOm3y95TvmjaoE29J5GVLlrP/yjxR2IY=; b=GemhhwyO4Q4b+B7VKZxc3FzqHogSK9rJgnNHAoT6aQu7KgXNbI1rQZpehwXhpIZpuc k+m+GuY+VAkgBZd6lR1seD1vXhEUlIglLtXaz5M5HKLOxwbVqu62Xuu+WWMMUw2zgrVa TXua+fG69MEy3Fc61H+Y5izVmzgaaSuo2Wmj0iAwu7YhGQx4/KjdvpYmHf9uFf0fbxaA IToXA7J9Vh4Wzx2zVLBSEkfSsGs4YxnJkxrgjpo4psvc+XhnQRSnIUbrPFUt/4hpZ0LF FJWG+pPp2rMLyViEDDlYF4D4a5Objg0j80UBY5cfq+RpkQQ7xBERlyFfpcxO9iptQEL7 Y7ig== 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=YnVHXvaS6oiDOm3y95TvmjaoE29J5GVLlrP/yjxR2IY=; b=OOUxc8U/+iloYQhQG2Ee221CkoZLydqi2QrofeKVhAdcBLBKcbQaJTYMroCHDBZIFb rg8Y9W7uKtalv2+afZIB4FBmJIgmFuDTynTctRmqFsk054OVM7flcyiE7P+Hh+bsuiul 7gPfvEtIYUfdgsTpEK/4ArvrHHZkOdGRr8LMKFSVHYOqlOUViKtEe83BelGif4UkTw+e v58g6vHZX2I3EzJm1yWR9vqOxgKZcZVzZjiGwgyagT3jMh2Oe9JqQFud1PYBomMaxlyQ LetiL3ESDpgZb7OXHpCIIAC/AcdQx7QVutkhEbghp+ZXp05FyqS3ZUtiD+KN60aJWRR/ v8Zw== X-Gm-Message-State: AOAM532yU0ObQOfsnaHyTFLjkqcWPsAachvMNxmlLDNruSL51K+Fs0b/ Gw3iOfibjHt2cy8S29KLmmtqa0CLxxQZfA== X-Google-Smtp-Source: ABdhPJwqh7/BiNKDeRKuaDq4YGdiejCI0QbV2mCw41pfBTC3EevZ5Q5s+vIpocPZDsbzIW61plk5Gg== X-Received: by 2002:a05:600c:1d28:b0:37c:a9d:d39f with SMTP id l40-20020a05600c1d2800b0037c0a9dd39fmr7015689wms.172.1645188027061; Fri, 18 Feb 2022 04:40:27 -0800 (PST) Received: from localhost ([2a01:4b00:f41a:3600:360b:9754:2e3a:c344]) by smtp.gmail.com with ESMTPSA id d6sm40894081wrs.85.2022.02.18.04.40.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Feb 2022 04:40:26 -0800 (PST) From: luca.boccassi@gmail.com To: Kevin Liu Cc: Qi Zhang , dpdk stable Subject: patch 'net/ice: fix Tx checksum offload' has been queued to stable release 20.11.5 Date: Fri, 18 Feb 2022 12:37:45 +0000 Message-Id: <20220218123931.1749595-16-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220218123931.1749595-1-luca.boccassi@gmail.com> References: <20220218123931.1749595-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 20.11.5 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 02/20/22. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/a02fbcde752bbf618b6429636f4cfcc6c59e8427 Thanks. Luca Boccassi --- >From a02fbcde752bbf618b6429636f4cfcc6c59e8427 Mon Sep 17 00:00:00 2001 From: Kevin Liu Date: Sun, 12 Dec 2021 14:35:20 +0000 Subject: [PATCH] net/ice: fix Tx checksum offload [ upstream commit 58d212e3bc548fb6be0e343eccc921413acf2ff8 ] The tunnel packets is missing some information after Tx forwarding. In ice_txd_enable_offload, when set tunnel packet Tx checksum offload enable, td_offset should be set with outer l2/l3 len instead of inner l2/l3 len. In ice_txd_enable_checksum, td_offset should also be set with outer l3 len. This patch fix the bug that the checksum engine can forward Ipv4/Ipv6 tunnel packets. Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path") Fixes: 17c7d0f9d6a4 ("net/ice: support basic Rx/Tx") Signed-off-by: Kevin Liu Acked-by: Qi Zhang --- drivers/net/ice/ice_rxtx.c | 41 +++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c index 12db9ca95e..1fc2bec5d5 100644 --- a/drivers/net/ice/ice_rxtx.c +++ b/drivers/net/ice/ice_rxtx.c @@ -2350,18 +2350,35 @@ ice_txd_enable_checksum(uint64_t ol_flags, << ICE_TX_DESC_LEN_MACLEN_S; /* Enable L3 checksum offloads */ - if (ol_flags & PKT_TX_IP_CKSUM) { - *td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4_CSUM; - *td_offset |= (tx_offload.l3_len >> 2) << - ICE_TX_DESC_LEN_IPLEN_S; - } else if (ol_flags & PKT_TX_IPV4) { - *td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4; - *td_offset |= (tx_offload.l3_len >> 2) << - ICE_TX_DESC_LEN_IPLEN_S; - } else if (ol_flags & PKT_TX_IPV6) { - *td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV6; - *td_offset |= (tx_offload.l3_len >> 2) << - ICE_TX_DESC_LEN_IPLEN_S; + /*Tunnel package usage outer len enable L3 checksum offload*/ + if (ol_flags & PKT_TX_TUNNEL_MASK) { + if (ol_flags & PKT_TX_IP_CKSUM) { + *td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4_CSUM; + *td_offset |= (tx_offload.outer_l3_len >> 2) << + ICE_TX_DESC_LEN_IPLEN_S; + } else if (ol_flags & PKT_TX_IPV4) { + *td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4; + *td_offset |= (tx_offload.outer_l3_len >> 2) << + ICE_TX_DESC_LEN_IPLEN_S; + } else if (ol_flags & PKT_TX_IPV6) { + *td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV6; + *td_offset |= (tx_offload.outer_l3_len >> 2) << + ICE_TX_DESC_LEN_IPLEN_S; + } + } else { + if (ol_flags & PKT_TX_IP_CKSUM) { + *td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4_CSUM; + *td_offset |= (tx_offload.l3_len >> 2) << + ICE_TX_DESC_LEN_IPLEN_S; + } else if (ol_flags & PKT_TX_IPV4) { + *td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4; + *td_offset |= (tx_offload.l3_len >> 2) << + ICE_TX_DESC_LEN_IPLEN_S; + } else if (ol_flags & PKT_TX_IPV6) { + *td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV6; + *td_offset |= (tx_offload.l3_len >> 2) << + ICE_TX_DESC_LEN_IPLEN_S; + } } if (ol_flags & PKT_TX_TCP_SEG) { -- 2.30.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-02-18 12:37:38.785709490 +0000 +++ 0016-net-ice-fix-Tx-checksum-offload.patch 2022-02-18 12:37:37.530788346 +0000 @@ -1 +1 @@ -From 58d212e3bc548fb6be0e343eccc921413acf2ff8 Mon Sep 17 00:00:00 2001 +From a02fbcde752bbf618b6429636f4cfcc6c59e8427 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 58d212e3bc548fb6be0e343eccc921413acf2ff8 ] + @@ -20 +21,0 @@ -Cc: stable@dpdk.org @@ -25,3 +26,2 @@ - drivers/net/ice/ice_rxtx.c | 41 ++++++++++++++------- - drivers/net/ice/ice_rxtx_vec_common.h | 52 +++++++++++++++++++-------- - 2 files changed, 66 insertions(+), 27 deletions(-) + drivers/net/ice/ice_rxtx.c | 41 +++++++++++++++++++++++++++----------- + 1 file changed, 29 insertions(+), 12 deletions(-) @@ -30 +30 @@ -index c80d86915e..ba40a0dc87 100644 +index 12db9ca95e..1fc2bec5d5 100644 @@ -33 +33 @@ -@@ -2490,18 +2490,35 @@ ice_txd_enable_checksum(uint64_t ol_flags, +@@ -2350,18 +2350,35 @@ ice_txd_enable_checksum(uint64_t ol_flags, @@ -37 +37 @@ -- if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM) { +- if (ol_flags & PKT_TX_IP_CKSUM) { @@ -41 +41 @@ -- } else if (ol_flags & RTE_MBUF_F_TX_IPV4) { +- } else if (ol_flags & PKT_TX_IPV4) { @@ -45 +45 @@ -- } else if (ol_flags & RTE_MBUF_F_TX_IPV6) { +- } else if (ol_flags & PKT_TX_IPV6) { @@ -50,2 +50,2 @@ -+ if (ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) { -+ if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM) { ++ if (ol_flags & PKT_TX_TUNNEL_MASK) { ++ if (ol_flags & PKT_TX_IP_CKSUM) { @@ -55 +55 @@ -+ } else if (ol_flags & RTE_MBUF_F_TX_IPV4) { ++ } else if (ol_flags & PKT_TX_IPV4) { @@ -59 +59 @@ -+ } else if (ol_flags & RTE_MBUF_F_TX_IPV6) { ++ } else if (ol_flags & PKT_TX_IPV6) { @@ -65 +65 @@ -+ if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM) { ++ if (ol_flags & PKT_TX_IP_CKSUM) { @@ -69 +69 @@ -+ } else if (ol_flags & RTE_MBUF_F_TX_IPV4) { ++ } else if (ol_flags & PKT_TX_IPV4) { @@ -73 +73 @@ -+ } else if (ol_flags & RTE_MBUF_F_TX_IPV6) { ++ } else if (ol_flags & PKT_TX_IPV6) { @@ -80,66 +80 @@ - if (ol_flags & RTE_MBUF_F_TX_TCP_SEG) { -diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h -index dfe60c81d9..8ff01046e1 100644 ---- a/drivers/net/ice/ice_rxtx_vec_common.h -+++ b/drivers/net/ice/ice_rxtx_vec_common.h -@@ -364,23 +364,45 @@ ice_txd_enable_offload(struct rte_mbuf *tx_pkt, - uint32_t td_offset = 0; - - /* Tx Checksum Offload */ -- /* SET MACLEN */ -- td_offset |= (tx_pkt->l2_len >> 1) << -+ /*Tunnel package usage outer len enable L2/L3 checksum offload*/ -+ if (ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK) { -+ /* SET MACLEN */ -+ td_offset |= (tx_pkt->outer_l2_len >> 1) << - ICE_TX_DESC_LEN_MACLEN_S; - -- /* Enable L3 checksum offload */ -- if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM) { -- td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4_CSUM; -- td_offset |= (tx_pkt->l3_len >> 2) << -- ICE_TX_DESC_LEN_IPLEN_S; -- } else if (ol_flags & RTE_MBUF_F_TX_IPV4) { -- td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4; -- td_offset |= (tx_pkt->l3_len >> 2) << -- ICE_TX_DESC_LEN_IPLEN_S; -- } else if (ol_flags & RTE_MBUF_F_TX_IPV6) { -- td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV6; -- td_offset |= (tx_pkt->l3_len >> 2) << -- ICE_TX_DESC_LEN_IPLEN_S; -+ /* Enable L3 checksum offload */ -+ if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM) { -+ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4_CSUM; -+ td_offset |= (tx_pkt->outer_l3_len >> 2) << -+ ICE_TX_DESC_LEN_IPLEN_S; -+ } else if (ol_flags & RTE_MBUF_F_TX_IPV4) { -+ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4; -+ td_offset |= (tx_pkt->outer_l3_len >> 2) << -+ ICE_TX_DESC_LEN_IPLEN_S; -+ } else if (ol_flags & RTE_MBUF_F_TX_IPV6) { -+ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV6; -+ td_offset |= (tx_pkt->outer_l3_len >> 2) << -+ ICE_TX_DESC_LEN_IPLEN_S; -+ } -+ } else { -+ /* SET MACLEN */ -+ td_offset |= (tx_pkt->l2_len >> 1) << -+ ICE_TX_DESC_LEN_MACLEN_S; -+ -+ /* Enable L3 checksum offload */ -+ if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM) { -+ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4_CSUM; -+ td_offset |= (tx_pkt->l3_len >> 2) << -+ ICE_TX_DESC_LEN_IPLEN_S; -+ } else if (ol_flags & RTE_MBUF_F_TX_IPV4) { -+ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV4; -+ td_offset |= (tx_pkt->l3_len >> 2) << -+ ICE_TX_DESC_LEN_IPLEN_S; -+ } else if (ol_flags & RTE_MBUF_F_TX_IPV6) { -+ td_cmd |= ICE_TX_DESC_CMD_IIPT_IPV6; -+ td_offset |= (tx_pkt->l3_len >> 2) << -+ ICE_TX_DESC_LEN_IPLEN_S; -+ } - } - - /* Enable L4 checksum offloads */ + if (ol_flags & PKT_TX_TCP_SEG) {