diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 62bf37c0f7..e81cdf2e40 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1018,6 +1018,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_atf_group_wmm_ac_info, WMITLV_TAG_STRUC_wmi_peer_atf_ext_request_fixed_param, WMITLV_TAG_STRUC_wmi_peer_atf_ext_info, + WMITLV_TAG_STRUC_wmi_get_channel_ani_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_channel_ani_info_tlv_param, + WMITLV_TAG_STRUC_wmi_get_channel_ani_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1436,6 +1439,7 @@ typedef enum { OP(WMI_ATF_SSID_GROUPING_REQUEST_CMDID) \ OP(WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID) \ OP(WMI_PEER_ATF_EXT_REQUEST_CMDID) \ + OP(WMI_GET_CHANNEL_ANI_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1672,6 +1676,7 @@ typedef enum { OP(WMI_ROAM_PREAUTH_START_EVENTID) \ OP(WMI_GET_ELNA_BYPASS_EVENTID) \ OP(WMI_ROAM_PMKID_REQUEST_EVENTID) \ + OP(WMI_GET_CHANNEL_ANI_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -4145,6 +4150,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SET_ELNA_BYPASS_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_get_elna_bypass_cmd_fixed_param, wmi_get_elna_bypass_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_GET_ELNA_BYPASS_CMDID); +/* Get channel ANI level cmd */ +#define WMITLV_TABLE_WMI_GET_CHANNEL_ANI_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_get_channel_ani_cmd_fixed_param, wmi_get_channel_ani_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_CHANNEL_ANI_CMDID); + /* Audio aggr config cmd */ #define WMITLV_TABLE_WMI_AUDIO_AGGR_ENABLE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_enable_cmd_fixed_param, wmi_audio_aggr_enable_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -5615,6 +5626,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_MGMT_OFFLOAD_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_elna_bypass_event_fixed_param, wmi_get_elna_bypass_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_GET_ELNA_BYPASS_EVENTID); +/* channel ANI event */ +#define WMITLV_TABLE_WMI_GET_CHANNEL_ANI_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_channel_ani_event_fixed_param, wmi_get_channel_ani_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_channel_ani_info_tlv_param, ani_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_CHANNEL_ANI_EVENTID); #ifdef __cplusplus } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e0b115ffe1..00c42e4bd0 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -998,6 +998,8 @@ typedef enum { WMI_SET_ELNA_BYPASS_CMDID, /** get ELNA BYPASS status */ WMI_GET_ELNA_BYPASS_CMDID, + /** get ANI level of the channels */ + WMI_GET_CHANNEL_ANI_CMDID, /* Offload 11k related requests */ WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), @@ -1772,6 +1774,9 @@ typedef enum { /** event to get ELNA BYPASS status */ WMI_GET_ELNA_BYPASS_EVENTID, + /** event to report ANI level of the channels */ + WMI_GET_CHANNEL_ANI_EVENTID, + /* GPIO Event */ WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), /** upload H_CV info WMI event @@ -24891,6 +24896,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_ATF_SSID_GROUPING_REQUEST_CMDID); WMI_RETURN_STRING(WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID); WMI_RETURN_STRING(WMI_PEER_ATF_EXT_REQUEST_CMDID); + WMI_RETURN_STRING(WMI_GET_CHANNEL_ANI_CMDID); } return "Invalid WMI cmd"; @@ -27969,6 +27975,44 @@ typedef struct { A_UINT32 en_dis; } wmi_get_elna_bypass_event_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_get_channel_ani_cmd_fixed_param + */ + A_UINT32 tlv_header; + /** + * TLV (tag length value) parameters follow the + * structure. The TLV's are: + * list of channels (center freq of primary 20 MHz of the channel, in MHz) + * A_UINT32 channel_list[]; + */ +} wmi_get_channel_ani_cmd_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_get_channel_ani_event_fixed_param + */ + A_UINT32 tlv_header; + /** + * TLV (tag length value) parameters follow the + * structure. The TLV's are: + * wmi_channel_ani_info_tlv_param ani_info[]; + */ +} wmi_get_channel_ani_event_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_channel_ani_info_tlv_param */ + A_UINT32 tlv_header; + /** channel freq (center of 20 MHz primary channel) in MHz */ + A_UINT32 chan_freq; + /** + * ANI (noise interference) level corresponding to the channel. + * Values range from [0-9], with higher values indicating more + * noise interference. + */ + A_UINT32 ani_level; +} wmi_channel_ani_info_tlv_param; + /* This command is to specify to enable/disable audio frame aggr */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_enable_cmd_fixed_param */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f8ea61d793..be6479a80e 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_ 730 +#define __WMI_REVISION_ 731 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work