From: Jiawen Wu <jiawenwu@trustnetic.com>
To: dev@dpdk.org
Cc: Jiawen Wu <jiawenwu@trustnetic.com>, stable@dpdk.org
Subject: [PATCH 02/11] net/txgbe: fix GRE tunnel packet checksum
Date: Thu, 28 Sep 2023 17:47:49 +0800 [thread overview]
Message-ID: <20230928094758.1076236-3-jiawenwu@trustnetic.com> (raw)
In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com>
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 <jiawenwu@trustnetic.com>
---
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;
--
2.27.0
next prev parent reply other threads:[~2023-09-28 9:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20230928094758.1076236-1-jiawenwu@trustnetic.com>
2023-09-28 9:47 ` [PATCH 01/11] net/txgbe: add Tx queue maximum limit Jiawen Wu
2023-09-28 9:47 ` Jiawen Wu [this message]
2023-09-28 9:47 ` [PATCH 03/11] net/ngbe: fix to set flow control Jiawen Wu
2023-09-28 9:47 ` [PATCH 04/11] net/ngbe: prevent the NIC from slowing down link speed Jiawen Wu
2023-09-28 9:47 ` [PATCH 05/11] net/txgbe: reconfigure MAC Rx when link update Jiawen Wu
2023-09-28 9:47 ` [PATCH 06/11] net/ngbe: " Jiawen Wu
2023-09-28 9:47 ` [PATCH 07/11] net/txgbe: fix to keep link down after device close Jiawen Wu
2023-09-28 9:47 ` [PATCH 08/11] net/ngbe: " Jiawen Wu
2023-09-28 9:47 ` [PATCH 09/11] net/txgbe: check process type in close operation Jiawen Wu
2023-09-28 9:47 ` [PATCH 10/11] net/ngbe: " Jiawen Wu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230928094758.1076236-3-jiawenwu@trustnetic.com \
--to=jiawenwu@trustnetic.com \
--cc=dev@dpdk.org \
--cc=stable@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).