[PATCH] net/bnxt: fix l2_db_multi_page_size_kb position in func_qcfg output

Mohammad Shuab Siddique mohammad-shuab.siddique at broadcom.com
Tue Mar 24 21:48:06 CET 2026


From: Mohammad Shuab Siddique <mohammad-shuab.siddique at broadcom.com>

The field was placed at incorrect offset in hwrm_func_qcfg_output causing
legacy_l2_db_size_kb to read svif_info instead, producing a doorbell offset
exceeding BAR2 and resulting in SIGSEGV on BCM57608.

Move l2_db_multi_page_size_kb after mirror_vnic_id to match firmware
response layout.

Fixes: 04102f2ffc8c ("net/bnxt: update HWRM API to version 1.10.1.6")
Fixes: 7a1f9c782b50 ("net/bnxt: add multi-doorbell support")

Cc: stable at dpdk.org

Signed-off-by: Mohammad Shuab Siddique <mohammad-shuab.siddique at broadcom.com>
---
 drivers/net/bnxt/hsi_struct_def_dpdk.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/bnxt/hsi_struct_def_dpdk.h b/drivers/net/bnxt/hsi_struct_def_dpdk.h
index 26d5e9ca78..1a8874f5b6 100644
--- a/drivers/net/bnxt/hsi_struct_def_dpdk.h
+++ b/drivers/net/bnxt/hsi_struct_def_dpdk.h
@@ -16277,12 +16277,6 @@ struct __rte_packed_begin hwrm_func_qcfg_output {
 	 * of the doorbell BAR between L2 and RoCE is required.
 	 */
 	uint16_t	l2_doorbell_bar_size_kb;
-	/*
-	 * The size of the doorbell BAR in KBytes reserved for multi-L2
-	 * doorbell pages. This area is a subset of l2_doorbell_bar_size_kb,
-	 * which is size of the total doorbell BAR space reserved for L2.
-	 */
-	uint16_t	l2_db_multi_page_size_kb;
 	/*
 	 * A bitmask indicating the active endpoints. Each bit represents a
 	 * specific endpoint, with bit 0 indicating EP 0 and bit 3 indicating
@@ -16605,6 +16599,12 @@ struct __rte_packed_begin hwrm_func_qcfg_output {
 	 * or a raw QP.
 	 */
 	uint16_t	mirror_vnic_id;
+	/*
+	 * The size of the doorbell BAR in KBytes reserved for multi-L2
+	 * doorbell pages. This area is a subset of l2_doorbell_bar_size_kb,
+	 * which is size of the total doorbell BAR space reserved for L2.
+	 */
+	uint16_t	l2_db_multi_page_size_kb;
 	uint8_t	unused_7[7];
 	/*
 	 * This field is used in Output records to indicate that the output
-- 
2.47.3



More information about the dev mailing list