diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 9aa58fc5af13..01d9a549787d 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1614,6 +1614,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_iface_ipi_stats, WMITLV_TAG_STRUC_wmi_peer_uhr_npca_op_params, WMITLV_TAG_STRUC_wmi_ndp_channel_info_event_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_uhr_omp_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_uhr_omp_npca_params, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2218,6 +2220,7 @@ typedef enum { OP(WMI_TWT_ADD_CH_USAGE_CMDID) \ OP(WMI_COEX_GET_POLICY_STATS_CMDID) \ OP(WMI_PDEV_SET_CUMAC_CHIP_CMDID) \ + OP(WMI_PEER_UHR_OMP_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2995,8 +2998,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_WMM_PARAMS_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_partner_link_params, partner_link_params, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_channel, dbw_chan, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dbw_chan_info, dbw_chan_info, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_start_smd_params, smd_params, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_start_uhr_config, uhr_config, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_start_smd_params, smd_params, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_start_uhr_config, uhr_config, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_ap_npca_params, npca_params, WMITLV_SIZE_VAR) /* NOTE: * Any new TLV addition in WMI_VDEV_START_REQUEST_CMDID needs to be included as * TLV in WMI_VDEV_UNIFIED_CONNECT_CMDID as well to maintain compatibility. @@ -3186,6 +3190,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_CMDID); */ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_V2_CMDID); +#define WMITLV_TABLE_WMI_PEER_UHR_OMP_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_uhr_omp_cmd_fixed_param, wmi_peer_uhr_omp_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_uhr_omp_npca_params, peer_omp_npca_params, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_UHR_OMP_CMDID); + /* Peer Set Rate Report Condition Cmd */ #define WMITLV_TABLE_WMI_PEER_SET_RATE_REPORT_CONDITION_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_set_rate_report_condition_fixed_param, wmi_peer_set_rate_report_condition_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -5282,7 +5291,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_MESH_RX_FILTER_ENABLE_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, preferred_tx_stream_list, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, preferred_rx_stream_list, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_channel, dbw_chan, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dbw_chan_info, dbw_chan_info, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dbw_chan_info, dbw_chan_info, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_ap_npca_params, npca_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_MULTIPLE_VDEV_RESTART_REQUEST_CMDID); #define WMITLV_TABLE_WMI_PDEV_UPDATE_PKT_ROUTING_CMDID(id,op,buf,len) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index dc3f726a5881..411889d45b35 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -919,7 +919,11 @@ typedef enum { /* WMI_PEER_ASSOC_V2_CMDID: extended alternative for WMI_PEER_ASSOC_CMDID */ WMI_PEER_ASSOC_V2_CMDID, - /* beacon/management specific commands */ + /* WMI_PEER_UHR_OMP_CMDID for UHR OMP frame*/ + WMI_PEER_UHR_OMP_CMDID, + + + /*--- beacon/management specific commands ---*/ /** transmit beacon by reference . used for transmitting beacon on low latency interface like pcie */ WMI_BCN_TX_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MGMT), @@ -19223,6 +19227,8 @@ typedef struct { * optional TLV used for SMD * wmi_vdev_start_uhr_config uhr_config_info * optional TLV used if VAP is 11BN + * wmi_uhr_ap_npca_params npca_params + * optional TLV used to update NPCA information */ } wmi_vdev_start_request_cmd_fixed_param; @@ -23753,6 +23759,67 @@ typedef struct { A_UINT32 npca_op_param1; } wmi_peer_uhr_npca_op_params; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_uhr_omp_cmd_fixed_param */ + A_UINT32 sw_peer_id; + A_UINT32 pdev_id; + + /* + * Variable-length TLV arrays follow this fixed param: + * wmi_peer_uhr_omp_npca_params peer_omp_npca_params[]; + * Place Holder for other TLVs + */ +} wmi_peer_uhr_omp_cmd_fixed_param; + +typedef struct{ + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_uhr_omp_npca_params */ + /* + * Bit0:3: NPCA hw_link_id + * WMI_OMP_NPCA_HW_LINK_ID_GET / _SET + * Bit4: Enable/Disable NPCA params + * WMI_OMP_NPCA_ENABLE_GET / _SET + * Bit5: Update NPCA params + * WMI_OMP_NPCA_UPDATE_GET / _SET + * Bit6:31: Reserved + */ + A_UINT32 omp_npca_caps; + /* + * Bit0:5: NPCA Switch Delay + * The time needed by an NPCA STA to switch from the + * BSS primary channel to the NPCA primary channel, + * in units of 4 us. + * WMI_OMP_NPCA_SWITCH_DELAY_GET / _SET + * + * Bit6:11: NPCA Switch Back Delay + * The time needed by an NPCA STA to switch from the + * NPCA primary channel to the BSS primary channel, + * in units of 4 + * WMI_OMP_NPCA_SWITCH_BACK_DELAY_GET / _SET + * + * Bit12:31: Reserved + */ + A_UINT32 omp_npca_param; +} wmi_peer_uhr_omp_npca_params; + +#define WMI_OMP_NPCA_HW_LINK_ID_GET(_var) WMI_GET_BITS(_var, 0, 4) +#define WMI_OMP_NPCA_HW_LINK_ID_SET(_var, _val) WMI_SET_BITS(_var, 0, 4, _val) + +#define WMI_OMP_NPCA_ENABLE_GET(_var) WMI_GET_BITS(_var, 4, 1) +#define WMI_OMP_NPCA_ENABLE_SET(_var, _val) WMI_SET_BITS(_var, 4, 1, _val) + +#define WMI_OMP_NPCA_UPDATE_GET(_var) WMI_GET_BITS(_var, 5, 1) +#define WMI_OMP_NPCA_UPDATE_SET(_var, _val) WMI_SET_BITS(_var, 5, 1, _val) + +#define WMI_OMP_NPCA_SWITCH_DELAY_GET(_var) \ + WMI_GET_BITS(_var, 0, 6) +#define WMI_OMP_NPCA_SWITCH_DELAY_SET(_var, _val) \ + WMI_SET_BITS(_var, 0, 6, _val) + +#define WMI_OMP_NPCA_SWITCH_BACK_DELAY_GET(_var) \ + WMI_GET_BITS(_var, 6, 6) +#define WMI_OMP_NPCA_SWITCH_BACK_DELAY_SET(_var, _val) \ + WMI_SET_BITS(_var, 6, 6, _val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_ap_oper_bw_cmd_fixed_param */ A_UINT32 vdev_id; @@ -42432,6 +42499,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_ENERGY_MGMT_OEM_DATA_CMDID); WMI_RETURN_STRING(WMI_TWT_ADD_CH_USAGE_CMDID); WMI_RETURN_STRING(WMI_COEX_GET_POLICY_STATS_CMDID); + WMI_RETURN_STRING(WMI_PEER_UHR_OMP_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -43609,6 +43677,8 @@ typedef struct { * optional TLV for dbw_chan * wmi_dbw_chan_info dbw_chan_info * optional TLV used for dbw_chan_info + * wmi_uhr_ap_npca_params npca_params + * optional TLV used to update NPCA information */ } wmi_pdev_multiple_vdev_restart_request_cmd_fixed_param; @@ -55102,13 +55172,13 @@ typedef struct { * The time needed by an NPCA STA to switch from the * BSS primary channel to the NPCA primary channel, * in units of 4 us. - * WMI_NPCA_AP_CAP_SWT_DELAY_GET / _SET + * WMI_NPCA_AP_CAP_SWITCH_DELAY_GET / _SET * * Bit18:23: NPCA Switch Back Delay * The time needed by an NPCA STA to switch from the * NPCA primary channel to the BSS primary channel, * in units of 4 us. - * WMI_NPCA_AP_CAP_SWTB_DELAY_GET / _SET + * WMI_NPCA_AP_CAP_SWITCH_BACK_DELAY_GET / _SET * * Bit24:25: The Initial NPCA QSRC field indicates the value * that is used to initialize the EDCAF QSRC[AC] variables diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 93cc9d29d865..1dbf822b9389 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_ 1741 +#define __WMI_REVISION_ 1742 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work