diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 6a4ef5a5e9..2c730f928f 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -362,6 +362,7 @@ typedef enum { */ WMI_SERVICE_HW_DB2DBM_CONVERSION_SUPPORT = 178, WMI_SERVICE_SUPPORT_EXTEND_ADDRESS=179, /* indicates firmware supports host memory addresses larger than 32 bit */ + WMI_SERVICE_BEACON_RECEPTION_STATS=180, /* Support per vdev beacon stats info */ /******* ADD NEW SERVICES HERE *******/ diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index e54b37d6fc..7f036d1738 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -944,6 +944,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_pktlog_filter_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_pktlog_filter_info, WMITLV_TAG_STRUC_wmi_quiet_offload_info, + WMITLV_TAG_STRUC_wmi_get_bcn_recv_stats_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_bcn_recv_stats_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1331,6 +1333,7 @@ typedef enum { OP(WMI_VDEV_BCN_OFFLOAD_QUIET_CONFIG_CMDID) \ OP(WMI_NDP_CMDID) \ OP(WMI_PDEV_PKTLOG_FILTER_CMDID) \ + OP(WMI_VDEV_GET_BCN_RECEPTION_STATS_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1543,6 +1546,7 @@ typedef enum { OP(WMI_ESP_ESTIMATE_EVENTID) \ OP(WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID) \ OP(WMI_NDP_EVENTID) \ + OP(WMI_VDEV_BCN_RECEPTION_STATS_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3602,6 +3606,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MNT_FILTER_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_chip_power_stats_cmd_fixed_param, wmi_pdev_get_chip_power_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_CHIP_POWER_STATS_CMDID); +/* WLAN GET beacon reception Stats*/ +#define WMITLV_TABLE_WMI_VDEV_GET_BCN_RECEPTION_STATS_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_bcn_recv_stats_fixed_param, wmi_vdev_get_bcn_recv_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_GET_BCN_RECEPTION_STATS_CMDID); + /* pdev set stats threshold cmd*/ #define WMITLV_TABLE_WMI_PDEV_SET_STATS_THRESHOLD_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_set_stats_threshold_cmd_fixed_param, wmi_pdev_set_stats_threshold_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -4845,6 +4854,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_CHIP_POWER_SAVE_FAILURE_DETECTED_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, debug_registers, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_CHIP_POWER_STATS_EVENTID); +#define WMITLV_TABLE_WMI_VDEV_BCN_RECEPTION_STATS_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_bcn_recv_stats_event_fixed_param, wmi_vdev_bcn_recv_stats_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_BCN_RECEPTION_STATS_EVENTID); + #define WMITLV_TABLE_WMI_PDEV_ANI_OFDM_LEVEL_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ani_ofdm_event_fixed_param, wmi_ani_ofdm_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ANI_OFDM_LEVEL_EVENTID); diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index d2175c17b4..875bff5e1a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -473,6 +473,8 @@ typedef enum { /** To set chainmask configuration for vdev */ WMI_VDEV_CHAINMASK_CONFIG_CMDID, + WMI_VDEV_GET_BCN_RECEPTION_STATS_CMDID, + /* peer specific commands */ /** create a peer */ @@ -1305,6 +1307,8 @@ typedef enum { /** get tx power event in response to VDEV_GET_TX_POWER request */ WMI_VDEV_GET_TX_POWER_EVENTID, + WMI_VDEV_BCN_RECEPTION_STATS_EVENTID, + /* peer specific events */ /** FW reauet to kick out the station for reasons like inactivity,lack of response ..etc */ WMI_PEER_STA_KICKOUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_PEER), @@ -21117,6 +21121,12 @@ typedef struct { A_UINT32 pdev_id; } wmi_pdev_get_chip_power_stats_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_bcn_recv_stats_cmd_fixed_param */ + /** VDEV identifier */ + A_UINT32 vdev_id; +} wmi_vdev_get_bcn_recv_stats_cmd_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_tpc_event_fixed_param */ /** pdev_id for identifying the MAC @@ -21209,6 +21219,31 @@ typedef struct { */ } wmi_pdev_chip_power_stats_event_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_get_bcn_recv_stats_fixed_param */ + A_UINT32 vdev_id; + /* total_bcn_cnt + * total beacon count (tbtt instances) + * After this value reaches 255 it saturates and stays at 255. + * This field is used to determine which of the 256 bits in the + * bmiss_bitmap field are valid. + */ + A_UINT32 total_bcn_cnt; + /* total_bmiss_cnt + * Total beacon miss count in last 255 beacons, max value is 255. + * This value is the number of bits set within bmiss_bitmap. + */ + A_UINT32 total_bmiss_cnt; + /* bmiss_bitmap + * This bitmap indicates the status of the last 255 beacons. + * If a bit is set, that means the corresponding beacon was missed. + * Bit 0 of bmiss_bitmap[0] represents the most recent beacon. + * The total_bcn_cnt field indicates how many bits within bmiss_bitmap + * are valid. + */ + A_UINT32 bmiss_bitmap[8]; +} wmi_vdev_bcn_recv_stats_fixed_param; + typedef enum wmi_chip_power_save_failure_reason_code_type { WMI_PROTOCOL_POWER_SAVE_FAILURE_REASON, WMI_HW_POWER_SAVE_FAILURE_REASON, @@ -22651,6 +22686,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_NDP_CMDID); WMI_RETURN_STRING(WMI_PDEV_PKTLOG_FILTER_CMDID); WMI_RETURN_STRING(WMI_SET_CURRENT_COUNTRY_CMDID); + WMI_RETURN_STRING(WMI_VDEV_GET_BCN_RECEPTION_STATS_CMDID); } return "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 406e96c5b9..a091fef47c 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_ 599 +#define __WMI_REVISION_ 600 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work