diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 30395b42f6..110be780fe 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -39528,6 +39528,16 @@ typedef struct { #define WMI_GET_BTCONNECT_STATUS(flags) WMI_GET_BITS(flags, 0, 1) #define WMI_SET_BTCONNECT_STATUS(flags, val) WMI_SET_BITS(flags, 0, 1, val) +#define WMI_GET_MLO_BAND(flags) WMI_GET_BITS(flags, 1, 3) +#define WMI_SET_MLO_BAND(flags, val) WMI_SET_BITS(flags, 1, 3, val) + +typedef enum wmi_mlo_band_info { + WMI_MLO_BAND_NO_MLO = 0, + WMI_MLO_BAND_2GHZ_MLO, + WMI_MLO_BAND_5GHZ_MLO, + WMI_MLO_BAND_6GHZ_MLO, +} wmi_mlo_band_info_t; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_info_tlv_param */ /* roam_scan_type: @@ -39551,7 +39561,10 @@ typedef struct { /* * Flags capturing factors involved during roam scan: * Bit 0 : Bluetooth connect status, 0(not connected) or 1(connected). - * Bit 1-31 : reserved for future use. + * Bit 1-3 : Indicates which link triggered roaming in MLD cases. + * The value is one of the wmi_mlo_band_info_t enum constants. + * Refer to WMI_[GET,SET]_MLO_BAND macros. + * Bit 4-31 : reserved for future use. */ A_UINT32 flags; } wmi_roam_scan_info; @@ -39566,6 +39579,9 @@ typedef struct { */ } wmi_roam_scan_channel_info; +#define WMI_GET_AP_INFO_MLO_STATUS(flags) WMI_GET_BITS(flags, 0, 1) +#define WMI_SET_AP_INFO_MLO_STATUS(flags, val) WMI_SET_BITS(flags, 0, 1, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_ap_info_tlv_param */ /* @@ -39601,6 +39617,12 @@ typedef struct { A_UINT32 bl_timestamp; /* Original timeout value in milli seconds when AP added to BL */ A_UINT32 bl_original_timeout; + /* flags: + * bit 0: MLD AP FLAG -> 1: MLD AP, 0: non-MLD AP + * Refer to WMI_[GET,SET]_AP_INFO_MLO_STATUS macros. + * bit 1-31: reserved. + */ + A_UINT32 flags; } wmi_roam_ap_info; typedef enum { @@ -39678,6 +39700,8 @@ typedef struct { #define WMI_ROAM_NEIGHBOR_REPORT_INFO_RESPONSE_TOKEN_SET(detail,val) WMI_SET_BITS(detail, 8, 8, val) #define WMI_ROAM_NEIGHBOR_REPORT_INFO_NUM_OF_NRIE_GET(detail) WMI_GET_BITS(detail, 16, 8) #define WMI_ROAM_NEIGHBOR_REPORT_INFO_NUM_OF_NRIE_SET(detail,val) WMI_SET_BITS(detail, 16, 8, val) +#define WMI_ROAM_NEIGHBOR_REPORT_INFO_MLO_BAND_INFO_GET(detail) WMI_GET_BITS(detail, 24, 3) +#define WMI_ROAM_NEIGHBOR_REPORT_INFO_MLO_BAND_INFO_SET(detail,val) WMI_SET_BITS(detail, 24, 3, val) typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_neighbor_report_info_tlv_param */ @@ -39708,13 +39732,20 @@ typedef struct { * [7:0] : neighbor report request token * [15:8] : neighbor report response token * [23:16] : the number of neighbor report elements in response frame - * [31:24] : reserved + * [26:24] : band on which frame is sent; the value will be one of the + * wmi_mlo_band_info enum constants + * Refer to WMI_ROAM_NEIGHBOR_REPORT_INFO_MLO_BAND_INFO_GET,SET + * macros. + * [31:27] : reserved * Refer to the above WMI_ROAM_NEIGHBOR_REPORT_INFO_*_GET,_SET macros for * reading and writing these bitfields. */ A_UINT32 neighbor_report_detail; } wmi_roam_neighbor_report_info; +#define WMI_ROAM_BTM_RESP_MLO_BAND_INFO_GET(detail) WMI_GET_BITS(detail, 0, 3) +#define WMI_ROAM_BTM_RESP_MLO_BAND_INFO_SET(detail,val) WMI_SET_BITS(detail, 0, 3, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_btm_response_info_tlv_param */ @@ -39748,6 +39779,13 @@ typedef struct { * that the responding STA requests the BSS to delay termination. */ A_UINT32 btm_resp_bss_termination_delay; + /* info: + * Bit[0:2] - band on which frame is sent, band value will be one of the + * wmi_mlo_band_info_t enum constants + * Refer to WMI_ROAM_BTM_RESP_MLO_BAND_INFO_GET,SET macros. + * Bit[3:31] - reserved. + */ + A_UINT32 info; } wmi_roam_btm_response_info; typedef struct { @@ -39764,6 +39802,15 @@ typedef struct { #define WMI_GET_ASSOC_ID(frame_info_ext) WMI_GET_BITS(frame_info_ext, 0, 16) #define WMI_SET_ASSOC_ID(frame_info_ext, val) WMI_SET_BITS(frame_info_ext, 0, 16, val) +#define WMI_GET_MLO_BITMAP_BAND_INFO(frame_info_ext) WMI_GET_BITS(frame_info_ext, 16, 5) +#define WMI_SET_MLO_BITMAP_BAND_INFO(frame_info_ext, val) WMI_SET_BITS(frame_info_ext, 16, 5, val) + +#define WMI_GET_RX_INDICATE(frame_info_ext) WMI_GET_BITS(frame_info_ext, 21, 1) +#define WMI_SET_RX_INDICATE(frame_info_ext, val) WMI_SET_BITS(frame_info_ext, 21, 1, val) + +#define WMI_GET_TX_FAILED_REASON(frame_info_ext) WMI_GET_BITS(frame_info_ext, 22, 4) +#define WMI_SET_TX_FAILED_REASON(frame_info_ext, val) WMI_SET_BITS(frame_info_ext, 22, 4, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_frame_info_tlv_param */ /* timestamp is the absolute time w.r.t host timer which is synchronized between the host and target */ @@ -39811,7 +39858,14 @@ typedef struct { * frame_info_ext captures below fields: * Bit 0-15 : (re)assoc id of (re)association response frame, * section 9.4.1.8 AID field. - * Bit 16~31 : reserved for future use. + * Bit 16-20 : MLO bitmap band info, + * bit0: 2GHz, bit1: 5GHz, bit2: 6GHz, bits 3-4: reserved + * Refer to WMI_[GET,SET]_MLO_BITMAP_BAND_INFO macros. + * Bit 21 : indicate whether this frame is rx :0-not rx; 1-rx + * Refer to WMI_[GET,SET]_RX_INDICATE macros. + * Bit 22-25 : opaque tx failure reason + * Refer to WMI_[GET,SET]_TX_FAILED_REASON macros. + * Bit 26-31 : reserved for future use. */ A_UINT32 frame_info_ext; } wmi_roam_frame_info; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 0b8e8d130c..1c80244700 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1379 +#define __WMI_REVISION_ 1380 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work