patch 'net/cnxk: fix NIX send header L3 type' has been queued to stable release 23.11.4

Xueming Li xuemingl at nvidia.com
Tue Feb 18 13:34:25 CET 2025


Hi,

FYI, your patch has been queued to stable release 23.11.4

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
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://git.dpdk.org/dpdk-stable/log/?h=23.11-staging

This queued commit can be viewed at:
https://git.dpdk.org/dpdk-stable/commit/?h=23.11-staging&id=0de3886c84a5fd5df323b2a8513f519fb37f3cc1

Thanks.

Xueming Li <xuemingl at nvidia.com>

---
>From 0de3886c84a5fd5df323b2a8513f519fb37f3cc1 Mon Sep 17 00:00:00 2001
From: Rahul Bhansali <rbhansali at marvell.com>
Date: Thu, 30 Jan 2025 17:25:26 +0530
Subject: [PATCH] net/cnxk: fix NIX send header L3 type
Cc: Xueming Li <xuemingl at nvidia.com>

[ upstream commit 32c18e7364e30a8e43cc7cc6709a7ce606fa285e ]

For small packets less than 55 bytes, SQ error interrupts are
observed.
When checksum offload flag is enabled and mbuf ol_flags are not
set, then default L3 type will be set to IPv6 in vector
processing. Based on this, HW will still validate for minimum
header size and generate send header error if mismatch.

To address this, will set default L3 type to none. Mbuf ol_flags
RTE_MBUF_F_TX_IPV6 will set with offload feature TSO or L4
checksum only, so handled in corresponding routine.

Fixes: f71b7dbbf04b ("net/cnxk: add vector Tx for CN10K")
Fixes: e829e60c6917 ("net/cnxk: support Tx burst vector for CN20K")
Fixes: 862e28128707 ("net/cnxk: add vector Tx for CN9K")

Signed-off-by: Rahul Bhansali <rbhansali at marvell.com>
---
 drivers/net/cnxk/cn10k_tx.h | 7 +++++--
 drivers/net/cnxk/cn9k_tx.h  | 7 +++++--
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/net/cnxk/cn10k_tx.h b/drivers/net/cnxk/cn10k_tx.h
index c84154ee84..fc82704d47 100644
--- a/drivers/net/cnxk/cn10k_tx.h
+++ b/drivers/net/cnxk/cn10k_tx.h
@@ -1824,6 +1824,9 @@ cn10k_nix_prepare_tso(struct rte_mbuf *m, union nix_send_hdr_w1_u *w1,
 	w0->lso_mps = m->tso_segsz;
 	w0->lso_format = NIX_LSO_FORMAT_IDX_TSOV4 + !!(ol_flags & RTE_MBUF_F_TX_IPV6);
 	w1->ol4type = NIX_SENDL4TYPE_TCP_CKSUM;
+	w1->ol3type = ((!!(ol_flags & RTE_MBUF_F_TX_IPV4)) << 1) +
+		      ((!!(ol_flags & RTE_MBUF_F_TX_IPV6)) << 2) +
+		      !!(ol_flags & RTE_MBUF_F_TX_IP_CKSUM);

 	/* Handle tunnel tso */
 	if ((flags & NIX_TX_OFFLOAD_OL3_OL4_CSUM_F) &&
@@ -2524,7 +2527,7 @@ again:
 			 */
 			const uint8x16_t tbl = {
 				/* [0-15] = il4type:il3type */
-				0x04, /* none (IPv6 assumed) */
+				0x00, /* none */
 				0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6 assumed) */
 				0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6 assumed) */
 				0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6 assumed) */
@@ -2728,7 +2731,7 @@ again:
 			const uint8x16x2_t tbl = {{
 				{
 					/* [0-15] = il4type:il3type */
-					0x04, /* none (IPv6) */
+					0x00, /* none */
 					0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6) */
 					0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6) */
 					0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6) */
diff --git a/drivers/net/cnxk/cn9k_tx.h b/drivers/net/cnxk/cn9k_tx.h
index 4715bf8a65..3d6af8a38f 100644
--- a/drivers/net/cnxk/cn9k_tx.h
+++ b/drivers/net/cnxk/cn9k_tx.h
@@ -889,6 +889,9 @@ cn9k_nix_prepare_tso(struct rte_mbuf *m, union nix_send_hdr_w1_u *w1,
 	w0->lso_mps = m->tso_segsz;
 	w0->lso_format = NIX_LSO_FORMAT_IDX_TSOV4 + !!(ol_flags & RTE_MBUF_F_TX_IPV6);
 	w1->ol4type = NIX_SENDL4TYPE_TCP_CKSUM;
+	w1->ol3type = ((!!(ol_flags & RTE_MBUF_F_TX_IPV4)) << 1) +
+		      ((!!(ol_flags & RTE_MBUF_F_TX_IPV6)) << 2) +
+		      !!(ol_flags & RTE_MBUF_F_TX_IP_CKSUM);

 	/* Handle tunnel tso */
 	if ((flags & NIX_TX_OFFLOAD_OL3_OL4_CSUM_F) &&
@@ -1402,7 +1405,7 @@ cn9k_nix_xmit_pkts_vector(void *tx_queue, struct rte_mbuf **tx_pkts,
 			 */
 			const uint8x16_t tbl = {
 				/* [0-15] = il4type:il3type */
-				0x04, /* none (IPv6 assumed) */
+				0x00, /* none */
 				0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6 assumed) */
 				0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6 assumed) */
 				0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6 assumed) */
@@ -1606,7 +1609,7 @@ cn9k_nix_xmit_pkts_vector(void *tx_queue, struct rte_mbuf **tx_pkts,
 			const uint8x16x2_t tbl = {{
 				{
 					/* [0-15] = il4type:il3type */
-					0x04, /* none (IPv6) */
+					0x00, /* none */
 					0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6) */
 					0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6) */
 					0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6) */
--
2.34.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2025-02-18 19:39:01.805639945 +0800
+++ 0030-net-cnxk-fix-NIX-send-header-L3-type.patch	2025-02-18 19:39:00.518244067 +0800
@@ -1 +1 @@
-From 32c18e7364e30a8e43cc7cc6709a7ce606fa285e Mon Sep 17 00:00:00 2001
+From 0de3886c84a5fd5df323b2a8513f519fb37f3cc1 Mon Sep 17 00:00:00 2001
@@ -4,0 +5,3 @@
+Cc: Xueming Li <xuemingl at nvidia.com>
+
+[ upstream commit 32c18e7364e30a8e43cc7cc6709a7ce606fa285e ]
@@ -20 +22,0 @@
-Cc: stable at dpdk.org
@@ -25 +26,0 @@
- drivers/net/cnxk/cn20k_tx.h | 7 +++++--
@@ -27 +28 @@
- 3 files changed, 15 insertions(+), 6 deletions(-)
+ 2 files changed, 10 insertions(+), 4 deletions(-)
@@ -30 +31 @@
-index 7d9b259a5f..77f4e54cd8 100644
+index c84154ee84..fc82704d47 100644
@@ -33 +34 @@
-@@ -1773,6 +1773,9 @@ cn10k_nix_prepare_tso(struct rte_mbuf *m, union nix_send_hdr_w1_u *w1,
+@@ -1824,6 +1824,9 @@ cn10k_nix_prepare_tso(struct rte_mbuf *m, union nix_send_hdr_w1_u *w1,
@@ -43,33 +44 @@
-@@ -2477,7 +2480,7 @@ again:
- 			 */
- 			const uint8x16_t tbl = {
- 				/* [0-15] = il4type:il3type */
--				0x04, /* none (IPv6 assumed) */
-+				0x00, /* none */
- 				0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6 assumed) */
- 				0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6 assumed) */
- 				0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6 assumed) */
-@@ -2681,7 +2684,7 @@ again:
- 			const uint8x16x2_t tbl = {{
- 				{
- 					/* [0-15] = il4type:il3type */
--					0x04, /* none (IPv6) */
-+					0x00, /* none */
- 					0x14, /* RTE_MBUF_F_TX_TCP_CKSUM (IPv6) */
- 					0x24, /* RTE_MBUF_F_TX_SCTP_CKSUM (IPv6) */
- 					0x34, /* RTE_MBUF_F_TX_UDP_CKSUM (IPv6) */
-diff --git a/drivers/net/cnxk/cn20k_tx.h b/drivers/net/cnxk/cn20k_tx.h
-index c731406529..8c3ba8326d 100644
---- a/drivers/net/cnxk/cn20k_tx.h
-+++ b/drivers/net/cnxk/cn20k_tx.h
-@@ -1733,6 +1733,9 @@ cn20k_nix_prepare_tso(struct rte_mbuf *m, union nix_send_hdr_w1_u *w1, union nix
- 	w0->lso_mps = m->tso_segsz;
- 	w0->lso_format = NIX_LSO_FORMAT_IDX_TSOV4 + !!(ol_flags & RTE_MBUF_F_TX_IPV6);
- 	w1->ol4type = NIX_SENDL4TYPE_TCP_CKSUM;
-+	w1->ol3type = ((!!(ol_flags & RTE_MBUF_F_TX_IPV4)) << 1) +
-+		      ((!!(ol_flags & RTE_MBUF_F_TX_IPV6)) << 2) +
-+		      !!(ol_flags & RTE_MBUF_F_TX_IP_CKSUM);
-
- 	/* Handle tunnel tso */
- 	if ((flags & NIX_TX_OFFLOAD_OL3_OL4_CSUM_F) && (ol_flags & RTE_MBUF_F_TX_TUNNEL_MASK)) {
-@@ -2395,7 +2398,7 @@ again:
+@@ -2524,7 +2527,7 @@ again:
@@ -84 +53 @@
-@@ -2595,7 +2598,7 @@ again:
+@@ -2728,7 +2731,7 @@ again:
@@ -94 +63 @@
-index 9370985864..902a17860c 100644
+index 4715bf8a65..3d6af8a38f 100644


More information about the stable mailing list