diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 5ea457c50d6e..aa2389aa1328 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -582,6 +582,7 @@ typedef enum { WMI_SERVICE_PN_REPLAY_CHECK_SUPPORT = 329, /* FW support to check RX mgmt frames has invalid PN in packets */ WMI_SERVICE_COMBINED_SET_PARAM_SUPPORT = 330, /* FW Supporting set param cmd combined for multiple params */ WMI_SERVICE_PDEV_RSSI_DBM_CONV_EVENT_SUPPORT = 331, /* FW supports advertising RSSI dB to dBm conversion params to host via WMI_PDEV_RSSI_DBM_CONVERSION_PARAMS_INFO_EVENTID */ + WMI_SERVICE_PDEV_TELEMETRY_STATS_SUPPORT = 332, WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 5c2cfc1dace7..1bb9edce1619 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1261,6 +1261,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pmm_scratch_reg_allocation_complete_event_fixed_param, WMITLV_TAG_STRUC_wmi_bcn_tmpl_ml_info, WMITLV_TAG_STRUC_wmi_peer_tx_filter_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_telemetry_stats, } WMITLV_TAG_ID; /* @@ -5558,7 +5559,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_HOST_SWFDA_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_extd2_stats, peer_extd2_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pmf_bcn_protect_stats, pmf_bcn_protect_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_extd_stats, vdev_extd_stats, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_extd_stats, pdev_extd_stats, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_extd_stats, pdev_extd_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_telemetry_stats, pdev_telemetry_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_UPDATE_STATS_EVENTID); /* Update PN response Event */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 77cbddeb09a3..6f039bbe041a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -9212,6 +9212,7 @@ typedef enum { WMI_REQUEST_PMF_BCN_PROTECT_STAT = 0x08000, WMI_REQUEST_VDEV_EXTD_STAT = 0x10000, WMI_REQUEST_PDEV_EXTD_STAT = 0x20000, + WMI_REQUEST_PDEV_TELEMETRY_STAT = 0x40000, } wmi_stats_id; /* @@ -9676,7 +9677,6 @@ typedef struct { * This TLV is followed by another TLV of array of bytes * num_channels * size of(struct wmi_channel_stats) */ - } wmi_radio_link_stats_event_fixed_param; /* per rate statistics */ @@ -10090,6 +10090,10 @@ typedef struct { * wmi_pdev_extd_stats wmi_pdev_extd_stats[] * follows the other TLVs */ +/* If WMI_REQUEST_PDEV_TELEMETRY_STAT is set in stats_id, then TLV + * wmi_pdev_telemetry_stats wmi_pdev_telemetry_stats[] + * follows the other TLVs + */ } wmi_stats_event_fixed_param; /* WLAN channel CCA stats bitmap */ @@ -11507,6 +11511,18 @@ typedef struct { A_UINT32 rx_other_11ax_msdu_cnt; } wmi_pdev_extd_stats; +/** + * pdev telemetry statistics + */ +typedef struct{ + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_telemetry_stats */ + A_UINT32 pdev_id; + /* average channel latency, units in micro seconds */ + A_UINT32 avg_chan_lat_per_ac[WMI_AC_MAX]; + /* estimated airtime per access category, units in percentage */ + A_UINT32 estimated_air_time_per_ac[WMI_AC_MAX]; +} wmi_pdev_telemetry_stats; + /** * VDEV statistics * @todo diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 2be66ad2ab5e..19f938ac6a5c 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_ 1133 +#define __WMI_REVISION_ 1134 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work