diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index c7bf181e77eb..c301cc11be3f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -794,6 +794,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_bpf_set_vdev_active_mode_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_hw_data_filter_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_connected_nlo_bss_band_rssi_pref, + WMITLV_TAG_STRUC_wmi_peer_oper_mode_change_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1288,6 +1289,7 @@ typedef enum { OP(WMI_11D_NEW_COUNTRY_EVENTID) \ OP(WMI_RADIO_CHAN_STATS_EVENTID) \ OP(WMI_VDEV_ADD_MAC_ADDR_TO_RX_FILTER_STATUS_EVENTID) \ + OP(WMI_PEER_OPER_MODE_CHANGE_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -1465,7 +1467,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SET_MBO_PARAM_CMDID); /* Roam PER configure cmd */ #define WMITLV_TABLE_WMI_ROAM_PER_CONFIG_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_per_config_fixed_param, wmi_roam_per_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) - + WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_PER_CONFIG_CMDID); #define WMITLV_TABLE_WMI_VDEV_PLMREQ_START_CMDID(id,op,buf,len) \ @@ -3720,6 +3722,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ANTDIV_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_tx_fail_cnt_thr_event_fixed_param, wmi_peer_tx_fail_cnt_thr_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_TX_FAIL_CNT_THR_EVENTID); +#define WMITLV_TABLE_WMI_PEER_OPER_MODE_CHANGE_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_oper_mode_change_event_fixed_param, wmi_peer_oper_mode_change_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_OPER_MODE_CHANGE_EVENTID); + /* DFS radar Event */ #define WMITLV_TABLE_WMI_DFS_RADAR_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_dfs_radar_event_fixed_param, wmi_dfs_radar_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index df281d75a9cc..c35bcf4c7921 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -462,7 +462,8 @@ typedef enum { WMI_PEER_SET_RX_BLOCKSIZE_CMDID, /** request peer antdiv info from FW. FW shall respond with PEER_ANTDIV_INFO_EVENTID */ WMI_PEER_ANTDIV_INFO_REQ_CMDID, - + /** Peer operating mode change indication sent to host to update stats */ + WMI_PEER_OPER_MODE_CHANGE_EVENTID, /* beacon/management specific commands */ @@ -8538,7 +8539,7 @@ typedef struct { * WMI_ROAM_REASON_HO_FAILED no matter WMI_ROAM_INVOKE_CMDID is called or not. */ #define WMI_ROAM_REASON_INVOKE_ROAM_FAIL 0x6 -#define ROAM_REASON_RSO_STATUS 0x7 +#define WMI_ROAM_REASON_RSO_STATUS 0x7 /* reserved up through 0xF */ /* subnet status: bits 4-5 */ @@ -10666,7 +10667,10 @@ typedef struct { A_UINT32 cwmin; A_UINT32 cwmax; A_UINT32 aifs; - A_UINT32 txoplimit; + union { + A_UINT32 txoplimit; + A_UINT32 mu_edca_timer; + }; A_UINT32 acm; A_UINT32 no_ack; } wmi_wmm_vparams; @@ -11796,6 +11800,35 @@ typedef struct { A_INT32 chain_rssi[8]; } wmi_peer_antdiv_info; +typedef enum { + WMI_PEER_IND_SMPS = 0x0, /* spatial multiplexing power save */ + WMI_PEER_IND_OMN, /* operating mode notification */ + WMI_PEER_IND_OMI, /* operating mode indication */ +} WMI_PEER_OPER_MODE_IND; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_oper_mode_change */ + A_UINT32 tlv_header; + /** mac addr of the peer */ + wmi_mac_addr peer_mac_address; + /** Peer type indication WMI_PEER_OPER_MODE_IND. */ + A_UINT32 ind_type; + /** new_rxnss valid for all peer_operating mode ind. */ + A_UINT32 new_rxnss; + /** new_bw valid for peer_operating mode ind. OMN/OMI + * value of this bw is as per 11ax/ac standard: + * 0 = 20MHz,1 = 40MHz, 2= 80MHz, 3 = 160MHz + */ + A_UINT32 new_bw; + /** new_txnss valid for peer_operating mode ind. OMI */ + A_UINT32 new_txnss; + /** new_disablemu: disable mu mode + * valid for peer_operating mode ind. OMI + */ + A_UINT32 new_disablemu; +} wmi_peer_oper_mode_change_event_fixed_param; + /** FW response when tx failure count has reached threshold * for a peer */ typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 16c10192bf8d..b4ef1dafa556 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -36,7 +36,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_ 340 +#define __WMI_REVISION_ 341 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work