diff --git a/fw/wlan_defs.h b/fw/wlan_defs.h index 351cd54cb0e4..f39cc7cc66df 100755 --- a/fw/wlan_defs.h +++ b/fw/wlan_defs.h @@ -1366,6 +1366,8 @@ typedef enum { MLO_SHMEM_TLV_STRUCT_MLO_GLB_LINK, MLO_SHMEM_TLV_STRUCT_MLO_GLB_LINK_INFO, MLO_SHMEM_TLV_STRUCT_MLO_GLB_H_SHMEM, + MLO_SHMEM_TLV_STRUCT_MLO_GLB_CHIP_CRASH_INFO, + MLO_SHMEM_TLV_STRUCT_MLO_GLB_PER_CHIP_CRASH_INFO, } MLO_SHMEM_TLV_TAG_ID; /** Helper macro for params GET/SET of mgmt_rx_reo_snapshot */ @@ -1542,6 +1544,52 @@ typedef struct { A_COMPILE_TIME_ASSERT(check_mlo_glb_link_info_8byte_size_quantum, (((sizeof(mlo_glb_link_info) % sizeof(A_UINT64) == 0x0)))); +typedef enum { + MLO_SHMEM_CRASH_PARTNER_CHIPS = 1, +} MLO_SHMEM_CHIP_CRASH_REASON; + +/* glb link info structures used for scratchpad memory (crash and recovery) */ +typedef struct { + /* TLV tag and len; tag equals MLO_SHMEM_TLV_STRUCT_MLO_GLB_PER_CHIP_CRASH_INFO */ + A_UINT32 tlv_header; + /** + * crash reason, takes value in enum MLO_SHMEM_CHIP_CRASH_REASON + */ + A_UINT32 crash_reason; +} mlo_glb_per_chip_crash_info; + +A_COMPILE_TIME_ASSERT(check_mlo_glb_per_chip_crash_info, + (((sizeof(mlo_glb_per_chip_crash_info) % sizeof(A_UINT64) == 0x0)))); + +/** Helper macro for params GET/SET of mlo_glb_chip_crash_info */ +#define MLO_SHMEM_CHIP_CRASH_INFO_PARAM_NO_OF_CHIPS_GET(chip_info) MLO_SHMEM_GET_BITS(chip_info, 0, 2) +#define MLO_SHMEM_CHIP_CRASH_INFO_PARAM_NO_OF_CHIPS_SET(chip_info, value) MLO_SHMEM_SET_BITS(chip_info, 0, 2, value) + +#define MLO_SHMEM_CHIP_CRASH_INFO_PARAM_VALID_CHIP_BMAP_GET(chip_info) MLO_SHMEM_GET_BITS(chip_info, 2, 3) +#define MLO_SHMEM_CHIP_CRASH_INFO_PARAM_VALID_CHIP_BMAP_SET(chip_info, value) MLO_SHMEM_SET_BITS(chip_info, 2, 3, value) + +typedef struct { + /* TLV tag and len; tag equals MLO_SHMEM_TLV_STRUCT_MLO_GLB_CHIP_CRASH_INFO */ + A_UINT32 tlv_header; + + /** + * chip_info + * + * [1:0]: no_of_chips + * [4:2]: valid_chip_bmap + * [31:6]: reserved + */ + A_UINT32 chip_info; + /* This TLV is followed by array of mlo_glb_per_chip_crash_info: + * mlo_glb_per_chip_crash_info will have mutiple instances equal to num of partner chips + * received by no_of_chips + * mlo_glb_per_chip_crash_info per_chip_crash_info[]; + */ +} mlo_glb_chip_crash_info; + +A_COMPILE_TIME_ASSERT(check_mlo_glb_chip_crash_info, + (((sizeof(mlo_glb_chip_crash_info) % sizeof(A_UINT64) == 0x0)))); + /** Helper macro for params GET/SET of mlo_glb_h_shmem */ #define MLO_SHMEM_GLB_H_SHMEM_PARAM_MINOR_VERSION_GET(major_minor_version) MLO_SHMEM_GET_BITS(major_minor_version, 0, 16) #define MLO_SHMEM_GLB_H_SHMEM_PARAM_MINOR_VERSION_SET(major_minor_version, value) MLO_SHMEM_SET_BITS(major_minor_version, 0, 16, value) @@ -1563,6 +1611,7 @@ typedef struct { /* This TLV is followed by TLVs * mlo_glb_rx_reo_snapshot_info reo_snapshot; * mlo_glb_link_info glb_info; + * mlo_glb_chip_crash_info crash_info; */ } mlo_glb_h_shmem;