[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