[PATCH] net/bnxt: fix ttxp backing store always configured

Mohammad Shuab Siddique mohammad-shuab.siddique at broadcom.com
Fri Jun 26 05:13:17 CEST 2026


From: Dakota Sicher <dakota.sicher at broadcom.com>

Driver attempts to configure the TTX pacing TQM rings regardless
of firmware capabilities. When the card does not support timed TX
pacing the device fails to initialize.

Skip the TTX_PACING_TQM_RING backing store type when
BNXT_FW_CAP_TIMED_TX_PACING is not set. The capability is defined
but not set until timed TX pacing support is enabled, so the ring
type is unconditionally skipped on unaffected cards.

Fixes: fe2f715ca580 ("net/bnxt: support backing store v2")
Cc: stable at dpdk.org

Signed-off-by: Dakota Sicher <dakota.sicher at broadcom.com>
Signed-off-by: Mohammad Shuab Siddique <mohammad-shuab.siddique at broadcom.com>
---
 drivers/net/bnxt/bnxt.h      |  1 +
 drivers/net/bnxt/bnxt_hwrm.c | 10 ++++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 5ae4e620a4..b2736befd1 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -887,6 +887,7 @@ struct bnxt {
 #define BNXT_FW_CAP_TX_COAL_CMPL	BIT(10)
 #define BNXT_FW_CAP_RX_ALL_PKT_TS	BIT(11)
 #define BNXT_FW_CAP_BACKING_STORE_V2	BIT(12)
+#define BNXT_FW_CAP_TIMED_TX_PACING	BIT(15)
 #define BNXT_FW_CAP_RX_RATE_PROFILE	BIT(17)
 #define BNXT_FW_CAP_MULTI_DB		BIT(18)
 #define BNXT_FW_BACKING_STORE_V2_EN(bp)	\
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 4a5b83d29c..273561aabb 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -6625,7 +6625,10 @@ int bnxt_hwrm_func_backing_store_qcaps_v2(struct bnxt *bp)
 
 		flags = rte_le_to_cpu_32(resp->flags);
 		type = rte_le_to_cpu_16(resp->next_valid_type);
-		if (!(flags & HWRM_FUNC_BACKING_STORE_QCAPS_V2_OUTPUT_FLAGS_TYPE_VALID)) {
+		if (!(flags & HWRM_FUNC_BACKING_STORE_QCAPS_V2_OUTPUT_FLAGS_TYPE_VALID) ||
+		    (rte_le_to_cpu_16(req.type) ==
+		    HWRM_FUNC_BACKING_STORE_QCAPS_V2_INPUT_TYPE_TTX_PACING_TQM_RING &&
+		    !(bp->fw_cap & BNXT_FW_CAP_TIMED_TX_PACING))) {
 			cnt = false;
 			goto next;
 		}
@@ -6702,7 +6705,10 @@ int bnxt_hwrm_func_backing_store_types_count(struct bnxt *bp)
 		type = rte_le_to_cpu_16(resp->next_valid_type);
 		HWRM_UNLOCK();
 
-		if (flags & HWRM_FUNC_BACKING_STORE_QCAPS_V2_OUTPUT_FLAGS_TYPE_VALID) {
+		if ((flags & HWRM_FUNC_BACKING_STORE_QCAPS_V2_OUTPUT_FLAGS_TYPE_VALID) &&
+		    !(rte_le_to_cpu_16(req.type) ==
+		    HWRM_FUNC_BACKING_STORE_QCAPS_V2_INPUT_TYPE_TTX_PACING_TQM_RING &&
+		    !(bp->fw_cap & BNXT_FW_CAP_TIMED_TX_PACING))) {
 			PMD_DRV_LOG_LINE(DEBUG, "Valid types 0x%x", req.type);
 			types++;
 		}
-- 
2.47.3



More information about the dev mailing list