diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 85245e103c8d..064b02bc732a 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -866,6 +866,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_host_swfda_event_fixed_param, WMITLV_TAG_STRUC_wmi_bcn_offload_ctrl_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_set_ac_tx_queue_optimized_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_stats_period, } WMITLV_TAG_ID; /* @@ -4508,6 +4509,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_RMC_NEW_LEADER_EVENTID); * A_UINT32 rx_mcs[][][]; Array length is (num_peer_ac_rx_stats * WLAN_MAX_AC) * rx_mcs_array_len, * array index is (peer_index * WLAN_MAX_AC + ac_index) * rx_mcs_array_len + MCS index * Contains a count of rx PPDUs for each MCS of each AC of each peer. + * wmi_stats_period stats_period[]; Array length is specified by stats_period_array_len + * * For example, if there were 2 peers (X and Y) whose stats were being reported, * the message and its TLV arrays would look like this: * 1. fixed_param @@ -4596,7 +4599,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_RMC_NEW_LEADER_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_ac_rx_stats, peer_ac_rx_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rx_stats, rx_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, rx_mpdu_aggr, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, rx_mcs, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, rx_mcs, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_stats_period, stats_period, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_REPORT_STATS_EVENTID); #define WMITLV_TABLE_WMI_VDEV_ENCRYPT_DECRYPT_DATA_RESP_EVENTID(id, op, buf, len) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 9a6e5c79f127..6767bbf92b1d 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -6216,6 +6216,26 @@ typedef struct */ } wmi_peer_ac_rx_stats; +typedef struct +{ + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_stats_period */ + /* + * This struct provides the timestamps from a low-frequency timer + * for the start and end of a stats period. + * Each timestamp is reported twice, with different units. + * The _msec timestamp is in millisecond units. + * The _count timestamp is in clock tick units. + * The timestamp is reported in clock ticks as well as in milliseconds + * so that if the stats start and end times fall within the same + * millisecond, the clock tick timestamps can still be used to + * determine what fraction of a millisecond the stats period occupied. + */ + A_UINT32 start_low_freq_msec; + A_UINT32 start_low_freq_count; + A_UINT32 end_low_freq_msec; + A_UINT32 end_low_freq_count; +} wmi_stats_period; + typedef enum { /** Periodic timer timed out, based on the period specified * by WMI_PDEV_PARAM_STATS_OBSERVATION_PERIOD @@ -6288,6 +6308,8 @@ typedef struct { /** Array size of rx_mcs[] which is histogram of encoding rate. * The array indicates number of PPDUs received at a specific rate */ A_UINT32 rx_mcs_array_len; + /** Array size of stats_period[] which contains several stats periods. */ + A_UINT32 stats_period_array_len; /** * This TLV is followed by TLVs below: @@ -6309,6 +6331,7 @@ typedef struct { * array index is (peer_index * WLAN_MAX_AC + ac_index) * rx_mpdu_aggr_array_len + A-MPDU aggregation index * A_UINT32 rx_mcs[][][]; Array length is (num_peer_ac_rx_stats * WLAN_MAX_AC) * rx_mcs_array_len, * array index is (peer_index * WLAN_MAX_AC + ac_index) * rx_mcs_array_len + MCS index + * wmi_stats_period stats_period[]; Array length is specified by stats_period_array_len **/ } wmi_report_stats_event_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 4f4a0200c64b..049e6d101f76 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_ 471 +#define __WMI_REVISION_ 472 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work