From: Mohammad Shuab Siddique <[email protected]>
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: [email protected]
Signed-off-by: Mohammad Shuab Siddique <[email protected]>
---
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