patch 'net/txgbe: fix traffic class priority configuration' has been queued to stable release 24.11.7
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Mon Jul 6 12:20:51 CEST 2026
Hi,
FYI, your patch has been queued to stable release 24.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 07/05/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/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/44105bb3b98dd1728f753d9249d94c343dc17042
Thanks.
Luca Boccassi
---
>From 44105bb3b98dd1728f753d9249d94c343dc17042 Mon Sep 17 00:00:00 2001
From: Zaiyu Wang <zaiyuwang at trustnetic.com>
Date: Wed, 24 Jun 2026 19:52:43 +0800
Subject: [PATCH] net/txgbe: fix traffic class priority configuration
[ upstream commit b1346e76bb641cc43f053c63f48b75f3333d375f ]
After applying the following testpmd command, 802.1Q packets with specific
priorities were not properly directed to the corresponding traffic classes:
port config 0 dcb vt off 4 pfc off
The old driver had two issues:
1. The hardware uses a 4-bit mapping register per traffic class for
priority-to-TC mapping, but the driver incorrectly configured it
as 3 bits.
2. The DCB TX configuration mistakenly wrote to the RX register.
Fix both issues, ensuring that tc-prio mapping works as expected.
Additionally, remove the stale and inconsistent TXGBE_DCBUP2TC_DEC macro as
it has no callers.
Fixes: 8bdc7882f376 ("net/txgbe: support DCB")
Signed-off-by: Zaiyu Wang <zaiyuwang at trustnetic.com>
---
drivers/net/txgbe/base/txgbe_dcb_hw.c | 2 +-
drivers/net/txgbe/base/txgbe_regs.h | 6 ++----
drivers/net/txgbe/txgbe_rxtx.c | 7 ++-----
3 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/drivers/net/txgbe/base/txgbe_dcb_hw.c b/drivers/net/txgbe/base/txgbe_dcb_hw.c
index 25273d2391..ea6d27f516 100644
--- a/drivers/net/txgbe/base/txgbe_dcb_hw.c
+++ b/drivers/net/txgbe/base/txgbe_dcb_hw.c
@@ -154,7 +154,7 @@ s32 txgbe_dcb_config_tx_data_arbiter_raptor(struct txgbe_hw *hw, u16 *refill,
for (i = 0; i < TXGBE_DCB_UP_MAX; i++)
reg |= TXGBE_DCBUP2TC_MAP(i, map[i]);
- wr32(hw, TXGBE_PBRXUP2TC, reg);
+ wr32(hw, TXGBE_PBTXUP2TC, reg);
/* Configure traffic class credits and priority */
for (i = 0; i < TXGBE_DCB_TC_MAX; i++) {
diff --git a/drivers/net/txgbe/base/txgbe_regs.h b/drivers/net/txgbe/base/txgbe_regs.h
index 7a9ba6976f..5156b9055c 100644
--- a/drivers/net/txgbe/base/txgbe_regs.h
+++ b/drivers/net/txgbe/base/txgbe_regs.h
@@ -476,10 +476,8 @@
#define TXGBE_PBRXCTL 0x019000
#define TXGBE_PBRXCTL_ST MS(0, 0x1)
#define TXGBE_PBRXCTL_ENA MS(31, 0x1)
-#define TXGBE_PBRXUP2TC 0x019008
#define TXGBE_PBTXUP2TC 0x01C800
-#define TXGBE_DCBUP2TC_MAP(tc, v) LS(v, 3 * (tc), 0x7)
-#define TXGBE_DCBUP2TC_DEC(tc, r) RS(r, 3 * (tc), 0x7)
+#define TXGBE_DCBUP2TC_MAP(tc, v) LS(v, 4 * (tc), 0x7)
#define TXGBE_PBRXSIZE(tc) (0x019020 + (tc) * 4)
#define TXGBE_PBRXSIZE_KB(v) LS(v, 10, 0x3FF)
@@ -1614,7 +1612,7 @@ enum txgbe_5tuple_protocol {
#define TXGBE_ARBRXCTL_DIA MS(6, 0x1)
#define TXGBE_RPUP2TC 0x019008
-#define TXGBE_RPUP2TC_UP_SHIFT 3
+#define TXGBE_RPUP2TC_UP_SHIFT 4
#define TXGBE_RPUP2TC_UP_MASK 0x7
/* mac switcher */
diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c
index 5cc8ca988b..8b1286aef0 100644
--- a/drivers/net/txgbe/txgbe_rxtx.c
+++ b/drivers/net/txgbe/txgbe_rxtx.c
@@ -3305,11 +3305,8 @@ txgbe_vmdq_dcb_configure(struct rte_eth_dev *dev)
queue_mapping = 0;
for (i = 0; i < RTE_ETH_DCB_NUM_USER_PRIORITIES; i++)
- /*
- * mapping is done with 3 bits per priority,
- * so shift by i*3 each time
- */
- queue_mapping |= ((cfg->dcb_tc[i] & 0x07) << (i * 3));
+ queue_mapping |= ((cfg->dcb_tc[i] & TXGBE_RPUP2TC_UP_MASK) <<
+ (i * TXGBE_RPUP2TC_UP_SHIFT));
wr32(hw, TXGBE_RPUP2TC, queue_mapping);
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-07-03 12:55:48.924839271 +0100
+++ 0059-net-txgbe-fix-traffic-class-priority-configuration.patch 2026-07-03 12:55:46.702574820 +0100
@@ -1 +1 @@
-From b1346e76bb641cc43f053c63f48b75f3333d375f Mon Sep 17 00:00:00 2001
+From 44105bb3b98dd1728f753d9249d94c343dc17042 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b1346e76bb641cc43f053c63f48b75f3333d375f ]
+
@@ -21 +22,0 @@
-Cc: stable at dpdk.org
@@ -31 +32 @@
-index 75c91a6b6a..79e1da447b 100644
+index 25273d2391..ea6d27f516 100644
@@ -44 +45 @@
-index 22c46e3d56..4aa62919b4 100644
+index 7a9ba6976f..5156b9055c 100644
@@ -47 +48 @@
-@@ -503,10 +503,8 @@
+@@ -476,10 +476,8 @@
@@ -59,2 +60,2 @@
-@@ -1705,7 +1703,7 @@ enum txgbe_5tuple_protocol {
- #define TXGBE_RDM_PF_HIDE(_i) (0x12090 + ((_i) * 4))
+@@ -1614,7 +1612,7 @@ enum txgbe_5tuple_protocol {
+ #define TXGBE_ARBRXCTL_DIA MS(6, 0x1)
@@ -67 +68 @@
- #define TXGBE_RDM_DCACHE_CTL 0x0120A8
+ /* mac switcher */
@@ -69 +70 @@
-index 906ff16b67..42baaa3ab1 100644
+index 5cc8ca988b..8b1286aef0 100644
@@ -72 +73 @@
-@@ -3378,11 +3378,8 @@ txgbe_vmdq_dcb_configure(struct rte_eth_dev *dev)
+@@ -3305,11 +3305,8 @@ txgbe_vmdq_dcb_configure(struct rte_eth_dev *dev)
More information about the stable
mailing list