diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 65cfc1f6b7..0036baeff2 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1240,6 +1240,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_delete_event_fixed_param, WMITLV_TAG_STRUC_wmi_rtt_pasn_peer_delete_param, WMITLV_TAG_STRUC_wmi_rtt_pasn_deauth_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_tx_send_params_ext, + WMITLV_TAG_STRUC_wmi_mgmt_rx_params_ext, } WMITLV_TAG_ID; /* @@ -2871,7 +2873,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_tx_send_cmd_fixed_param, wmi_mgmt_tx_send_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tx_send_params, wmi_tx_send_params, tx_send_params, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_tx_send_params, mlo_tx_send_params, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_tx_send_params, mlo_tx_send_params, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tx_send_params_ext, tx_send_params_ext, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_SEND_CMDID); @@ -5192,7 +5195,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STA_KICKOUT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_hdr, wmi_mgmt_rx_hdr, hdr, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rssi_ctl_ext, rssi_ctl_ext, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_params, wmi_mgmt_rx_reo_params, reo_params, WMITLV_SIZE_FIX) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_rx_reo_params, wmi_mgmt_rx_reo_params, reo_params, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mgmt_rx_params_ext, mgmt_rx_params_ext, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_EVENTID); /* Management Rx FW Consumed Event */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 0cdbc07197..cf27c6e697 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -5556,6 +5556,44 @@ typedef struct { A_UINT32 mgmt_pkt_ctr_link_info; } wmi_mgmt_rx_reo_params; +/** Helper macro for param GET/SET */ +#define WMI_RX_PARAM_EXT_META_ID_GET(mgmt_rx_params_ext_dword0) WMI_GET_BITS(mgmt_rx_params_ext_dword0, 0, 3) +#define WMI_RX_PARAM_EXT_META_ID_SET(mgmt_rx_params_ext_dword0, value) WMI_SET_BITS(mgmt_rx_params_ext_dword0, 0, 3, value) + +#define WMI_RX_PARAM_EXT_BA_WIN_SIZE_GET(mgmt_rx_params_ext_dword1) WMI_GET_BITS(mgmt_rx_params_ext_dword1, 0, 16) +#define WMI_RX_PARAM_EXT_BA_WIN_SIZE_SET(mgmt_rx_params_ext_dword1, value) WMI_SET_BITS(mgmt_rx_params_ext_dword1, 0, 16, value) + +#define WMI_RX_PARAM_EXT_REO_WIN_SIZE_GET(mgmt_rx_params_ext_dword1) WMI_GET_BITS(mgmt_rx_params_ext_dword1, 16, 16) +#define WMI_RX_PARAM_EXT_REO_WIN_SIZE_SET(mgmt_rx_params_ext_dword1, value) WMI_SET_BITS(mgmt_rx_params_ext_dword1, 16, 16, value) + +typedef enum { + WMI_RX_PARAMS_EXT_META_ADDBA = 0x0, +} wmi_mgmt_rx_params_ext_meta_t; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag (WMITLV_TAG_STRUC_wmi_mgmt_rx_params_ext) and len */ + union { + struct { + A_UINT32 + /* Describes the representation of the data in rx_param_ext_dword1 + * Full set shown in wmi_mgmt_rx_params_ext_meta_t */ + meta_id : 3, + /* Dedicated for commonly used parameters only */ + reserved_0 : 29; + }; + A_UINT32 mgmt_rx_params_ext_dword0; + }; + union { + struct { + /* WMI_RX_PARAMS_EXT_META_ADDBA */ + A_UINT32 + ba_win_size :16, /* negotiated BA window size */ + reo_win_size :16; /* 2x the negotiated BA window size to handle any latency across MLO */ + }; + A_UINT32 mgmt_rx_params_ext_dword1; + }; +} wmi_mgmt_rx_params_ext; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mgmt_rx_hdr */ /** channel on which this frame is received (channel number) */ @@ -5614,6 +5652,10 @@ typedef struct { * This TLV is followed by struct: * wmi_mgmt_rx_reo_params reo_params;// MGMT rx REO params */ +/* + * This TLV is optionally followed by struct: + * wmi_mgmt_rx_params_ext mgmt_rx_params_ext[0 or 1]; + */ } wmi_mgmt_rx_hdr; /* WMI CMD to receive the management filter criteria from the host */ @@ -6020,6 +6062,36 @@ typedef struct { */ } wmi_mgmt_tx_hdr; +#define WMI_TX_SEND_PARAM_EXT_META_ID_GET(tx_param_ext_dword0) WMI_GET_BITS(tx_param_dword0, 0, 3) +#define WMI_TX_SEND_PARAM_EXT_META_ID_SET(tx_param_ext_dword0, value) WMI_SET_BITS(tx_param_dword0, 0, 3, value) + +#define WMI_TX_SEND_PARAM_EXT_WIN_SIZE_GET(tx_param_ext_dword1) WMI_GET_BITS(tx_param_dword1, 0, 16) +#define WMI_TX_SEND_PARAM_EXT_WIN_SIZE_SET(tx_param_ext_dword1, value) WMI_SET_BITS(tx_param_dword1, 0, 16, value) + +typedef enum { + WMI_TX_SEND_PARAMS_EXT_META_ADDBA = 0x0, + WMI_TX_SEND_PARAMS_EXT_META_DELBA = 0x1, +} wmi_tx_send_params_ext_meta_t; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag (WMITLV_TAG_STRUC_wmi_tx_send_params_ext) and len */ + union { + struct { + A_UINT32 meta_id : 3, /* Describes the representation of the data in tx_param_ext_dword1 Full set shown in wmi_tx_send_params_ext_meta_t */ + reserved_0 : 29; /* Dedicated for commonly used parameters only */ + }; + A_UINT32 tx_param_ext_dword0; + }; + union { + struct { + /* WMI_TX_SEND_PARAMS_EXT_META_ADDBA */ + A_UINT32 win_size : 16, + reserved_1 : 16; + }; + A_UINT32 tx_param_ext_dword1; + }; +} wmi_tx_send_params_ext; + #define WMI_TX_SEND_PARAM_PWR_GET(tx_param_dword0) WMI_GET_BITS(tx_param_dword0, 0, 8) #define WMI_TX_SEND_PARAM_PWR_SET(tx_param_dword0, value) WMI_SET_BITS(tx_param_dword0, 0, 8, value) @@ -6262,6 +6334,7 @@ typedef struct { /* This TLV is followed by wmi_tx_send_params * wmi_tx_send_params tx_send_params; * wmi_mlo_tx_send_params mlo_tx_send_params[]; + * wmi_tx_send_params_ext tx_send_params_ext[0 or 1]; */ } wmi_mgmt_tx_send_cmd_fixed_param; @@ -13089,6 +13162,9 @@ typedef enum { * 1- Manual mode(addba req not sent). * 2- buffer size 64 * 3- buffer size 256 + * 4- buffer size 128 // placeholder, not valid + * 5- buffer size 512 + * 6- buffer size 1024 */ WMI_VDEV_PARAM_BA_MODE, /* 0x7e */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 8ea20fa9fd..f1ab7adc33 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_ 1112 +#define __WMI_REVISION_ 1113 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work