From patchwork Thu Sep 28 09:47:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132100 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 C296F4265E; Thu, 28 Sep 2023 11:37:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F348140E03; Thu, 28 Sep 2023 11:37:21 +0200 (CEST) Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by mails.dpdk.org (Postfix) with ESMTP id A863840A80; Thu, 28 Sep 2023 11:37:17 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893825tqricwgy Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:05 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: jlZuxrJ108Ao/J0wkhuL8UvlKG3saqwM6uBAiwvGnIgOZlIG7ANYS9Zg38qhy fccAnTa7t9KnvStwHhWLVO14wtKjauDCoINusEY8NQca5ATDNr8TSoQTfIogpCed+AVB54c iRS7YRO9ogu20JauXjyLFVw/LmBzqg7PIkke9r1bUIUQ1frfgVaDUJ6AjMjU7h9GSJJix/a hb1i2ENNtJzbHuEX0oKExFl/c/uHA9bl4psOJjqX6Y0Fz1kTn0Sgzh/rC+8aUGySTLYzpsa CJ1pQoQZHjSjuzgIDU9CJ1Vkng27fGOSuZz2bhqCCm4A1xepMkf5eu902e7EIs1l5KaMPbC iGRJOBmseLXVVIbKCabM8ieGvlAuyXVYKw5/cXxdGXWyqLlmEI6qOPKVpPnOHTGGb76q8/G LVzzdOJi8Xk= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 14137782599609079605 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 02/11] net/txgbe: fix GRE tunnel packet checksum Date: Thu, 28 Sep 2023 17:47:49 +0800 Message-Id: <20230928094758.1076236-3-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 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 Fix transmit context descriptor for GRE tunnel packet to make the hardware compute the checksum successfully. Fixes: e5ece1f467aa ("net/txgbe: fix VXLAN-GPE packet checksum") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ptypes.c | 16 ---------------- drivers/net/txgbe/txgbe_ptypes.h | 5 +++++ drivers/net/txgbe/txgbe_rxtx.c | 23 ++++++++++++----------- 3 files changed, 17 insertions(+), 27 deletions(-) diff --git a/drivers/net/txgbe/txgbe_ptypes.c b/drivers/net/txgbe/txgbe_ptypes.c index e1299d7363..c444d5d3f1 100644 --- a/drivers/net/txgbe/txgbe_ptypes.c +++ b/drivers/net/txgbe/txgbe_ptypes.c @@ -320,8 +320,6 @@ txgbe_encode_ptype_tunnel(u32 ptype) ptid |= TXGBE_PTID_TUN_EI; break; case RTE_PTYPE_TUNNEL_GRE: - ptid |= TXGBE_PTID_TUN_EIG; - break; case RTE_PTYPE_TUNNEL_VXLAN: case RTE_PTYPE_TUNNEL_VXLAN_GPE: case RTE_PTYPE_TUNNEL_NVGRE: @@ -332,20 +330,6 @@ txgbe_encode_ptype_tunnel(u32 ptype) return ptid; } - switch (ptype & RTE_PTYPE_INNER_L2_MASK) { - case RTE_PTYPE_INNER_L2_ETHER: - ptid |= TXGBE_PTID_TUN_EIGM; - break; - case RTE_PTYPE_INNER_L2_ETHER_VLAN: - ptid |= TXGBE_PTID_TUN_EIGMV; - break; - case RTE_PTYPE_INNER_L2_ETHER_QINQ: - ptid |= TXGBE_PTID_TUN_EIGMV; - break; - default: - break; - } - switch (ptype & RTE_PTYPE_INNER_L3_MASK) { case RTE_PTYPE_INNER_L3_IPV4: case RTE_PTYPE_INNER_L3_IPV4_EXT: diff --git a/drivers/net/txgbe/txgbe_ptypes.h b/drivers/net/txgbe/txgbe_ptypes.h index fa6c347d53..6fa8147f05 100644 --- a/drivers/net/txgbe/txgbe_ptypes.h +++ b/drivers/net/txgbe/txgbe_ptypes.h @@ -348,4 +348,9 @@ struct txgbe_nvgrehdr { __be32 tni; }; +struct txgbe_grehdr { + __be16 flags; + __be16 proto; +}; + #endif /* _TXGBE_PTYPE_H_ */ diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c index 427f8b82ac..f7cd2333ab 100644 --- a/drivers/net/txgbe/txgbe_rxtx.c +++ b/drivers/net/txgbe/txgbe_rxtx.c @@ -572,7 +572,6 @@ tx_desc_ol_flags_to_ptype(uint64_t oflags) ptype |= RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_GRE; - ptype |= RTE_PTYPE_INNER_L2_ETHER; break; case RTE_MBUF_F_TX_TUNNEL_GENEVE: ptype |= RTE_PTYPE_L2_ETHER | @@ -705,22 +704,24 @@ txgbe_get_tun_len(struct rte_mbuf *mbuf) static inline uint8_t txgbe_parse_tun_ptid(struct rte_mbuf *tx_pkt) { - uint64_t l2_none, l2_mac, l2_mac_vlan; + uint64_t l2_vxlan, l2_vxlan_mac, l2_vxlan_mac_vlan; + uint64_t l2_gre, l2_gre_mac, l2_gre_mac_vlan; uint8_t ptid = 0; - if ((tx_pkt->ol_flags & (RTE_MBUF_F_TX_TUNNEL_VXLAN | - RTE_MBUF_F_TX_TUNNEL_VXLAN_GPE)) == 0) - return ptid; + l2_vxlan = sizeof(struct txgbe_udphdr) + sizeof(struct txgbe_vxlanhdr); + l2_vxlan_mac = l2_vxlan + sizeof(struct rte_ether_hdr); + l2_vxlan_mac_vlan = l2_vxlan_mac + sizeof(struct rte_vlan_hdr); - l2_none = sizeof(struct txgbe_udphdr) + sizeof(struct txgbe_vxlanhdr); - l2_mac = l2_none + sizeof(struct rte_ether_hdr); - l2_mac_vlan = l2_mac + sizeof(struct rte_vlan_hdr); + l2_gre = sizeof(struct txgbe_grehdr); + l2_gre_mac = l2_gre + sizeof(struct rte_ether_hdr); + l2_gre_mac_vlan = l2_gre_mac + sizeof(struct rte_vlan_hdr); - if (tx_pkt->l2_len == l2_none) + if (tx_pkt->l2_len == l2_vxlan || tx_pkt->l2_len == l2_gre) ptid = TXGBE_PTID_TUN_EIG; - else if (tx_pkt->l2_len == l2_mac) + else if (tx_pkt->l2_len == l2_vxlan_mac || tx_pkt->l2_len == l2_gre_mac) ptid = TXGBE_PTID_TUN_EIGM; - else if (tx_pkt->l2_len == l2_mac_vlan) + else if (tx_pkt->l2_len == l2_vxlan_mac_vlan || + tx_pkt->l2_len == l2_gre_mac_vlan) ptid = TXGBE_PTID_TUN_EIGMV; return ptid;