patch 'net/mana: fix CQE suppression handling on error completions' has been queued to stable release 23.11.7

Shani Peretz shperetz at nvidia.com
Wed Apr 15 12:00:18 CEST 2026


Hi,

FYI, your patch has been queued to stable release 23.11.7

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/19/26. 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/shanipr/dpdk-stable

This queued commit can be viewed at:
https://github.com/shanipr/dpdk-stable/commit/abc46c666458a23e3ea0528e6f9bbfeb44f14667

Thanks.

Shani

---
>From abc46c666458a23e3ea0528e6f9bbfeb44f14667 Mon Sep 17 00:00:00 2001
From: Long Li <longli at microsoft.com>
Date: Wed, 25 Mar 2026 11:38:36 -0700
Subject: [PATCH] net/mana: fix CQE suppression handling on error completions

[ upstream commit 823dbf286053c1cc4231a5828ffc300a70f4f510 ]

On error CQEs (e.g. SA_DROP), the hardware generates one CQE per WQE
regardless of the suppression flag. The previous code honored the
suppress_tx_cqe flag unconditionally, which caused it to skip reading
error CQEs and misalign the CQ consumer index.

This misalignment causes subsequent completions to be misinterpreted:
valid CQEs are read at wrong offsets, leading to spurious error
counts, NULL packet frees, and potential use-after-free of mbufs
that were already completed.

Check the CQE type before honoring suppression: only skip CQE reading
when the completion is CQE_TX_OKAY.

Fixes: cce2c9df4481 ("net/mana: suppress Tx CQE generation whenever possible")

Signed-off-by: Long Li <longli at microsoft.com>
---
 drivers/net/mana/tx.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mana/tx.c b/drivers/net/mana/tx.c
index c50385d9fe..367d3a5a0b 100644
--- a/drivers/net/mana/tx.c
+++ b/drivers/net/mana/tx.c
@@ -227,9 +227,11 @@ mana_tx_burst(void *dpdk_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 		txq->gdma_sq.tail += desc->wqe_size_in_bu;
 
 		/* If TX CQE suppression is used, don't read more CQE but move
-		 * on to the next packet
+		 * on to the next packet. On error CQEs, HW generates one CQE
+		 * per WQE regardless of suppression, so always advance.
 		 */
-		if (desc->suppress_tx_cqe)
+		if (desc->suppress_tx_cqe &&
+		    oob->cqe_hdr.cqe_type == CQE_TX_OKAY)
 			continue;
 
 		i++;
-- 
2.43.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2026-04-14 14:44:36.076471403 +0300
+++ 0077-net-mana-fix-CQE-suppression-handling-on-error-compl.patch	2026-04-14 14:44:28.823500000 +0300
@@ -1 +1 @@
-From 823dbf286053c1cc4231a5828ffc300a70f4f510 Mon Sep 17 00:00:00 2001
+From abc46c666458a23e3ea0528e6f9bbfeb44f14667 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 823dbf286053c1cc4231a5828ffc300a70f4f510 ]
+
@@ -20 +21,0 @@
-Cc: stable at dpdk.org
@@ -28 +29 @@
-index 40931ac027..e5ab566e8a 100644
+index c50385d9fe..367d3a5a0b 100644
@@ -31 +32 @@
-@@ -228,9 +228,11 @@ mana_tx_burst(void *dpdk_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
+@@ -227,9 +227,11 @@ mana_tx_burst(void *dpdk_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)


More information about the stable mailing list