From ff230196badd1510359342b27b09afae6516be02 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 4 Dec 2022 12:00:56 -0800 Subject: [PATCH] fw-api: CL 20599887 - update fw common interface files Change-Id: I0c48624fea92ed8874f5da49f0a230fd19ca5cb6 WMI: add per-AC + OBSS airtime use pct stats to pdev_telemetry_stats CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 4 +- fw/wmi_unified.h | 154 ++++++++++++++++++++++++++++++++++++++++++++-- fw/wmi_version.h | 2 +- 3 files changed, 153 insertions(+), 7 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 05cf168c9b..c986bc69b8 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1327,6 +1327,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pifs_params, WMITLV_TAG_STRUC_wmi_tas_power_history_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_tas_power_history_event_fixed_param, + WMITLV_TAG_STRUC_wmi_ctrl_path_pmlo_stats_struct, } WMITLV_TAG_ID; /* @@ -6668,7 +6669,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_btcoex_stats_struct, ctrl_path_btcoex_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_bmiss_stats_struct, ctrl_path_bmiss_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_odd_addr_read_struct, ctrl_path_odd_addr_read, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_afc_stats_struct, ctrl_path_afc_stats, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_afc_stats_struct, ctrl_path_afc_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pmlo_stats_struct, ctrl_path_pmlo_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID); /* diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 7d51219adb..202d690a78 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -12227,6 +12227,135 @@ typedef struct { A_UINT32 payload_clear_count; } wmi_ctrl_path_afc_stats_struct; +/* AT - Airtime */ +/* AA - Available Airtime */ +#define WMI_PMLO_UL_DL_INBSS_AT_GET_BE(airtime) WMI_GET_BITS(airtime, 0, 8) +#define WMI_PMLO_UL_DL_INBSS_AT_SET_BE(airtime, value) WMI_SET_BITS(airtime, 0, 8, value) + +#define WMI_PMLO_UL_DL_INBSS_AT_GET_BK(airtime) WMI_GET_BITS(airtime, 8, 8) +#define WMI_PMLO_UL_DL_INBSS_AT_SET_BK(airtime, value) WMI_SET_BITS(airtime, 8, 8, value) + +#define WMI_PMLO_UL_DL_INBSS_AT_GET_VI(airtime) WMI_GET_BITS(airtime, 16, 8) +#define WMI_PMLO_UL_DL_INBSS_AT_SET_VI(airtime, value) WMI_SET_BITS(airtime, 16, 8, value) + +#define WMI_PMLO_UL_DL_INBSS_AT_GET_VO(airtime) WMI_GET_BITS(airtime, 24, 8) +#define WMI_PMLO_UL_DL_INBSS_AT_SET_VO(airtime, value) WMI_SET_BITS(airtime, 24, 8, value) + +#define WMI_PMLO_LINK_OBSS_AT_GET(airtime) WMI_GET_BITS(airtime, 0, 8) +#define WMI_PMLO_LINK_OBSS_AT_SET(airtime, value) WMI_SET_BITS(airtime, 0, 8, value) + +#define WMI_PMLO_LINK_AA_GET(airtime) WMI_GET_BITS(airtime, 8, 8) +#define WMI_PMLO_LINK_AA_SET(airtime, value) WMI_SET_BITS(airtime, 8, 8, value) + +#define WMI_PMLO_UL_AIRTIME_NON_AC_GET(airtime) WMI_GET_BITS(airtime, 16, 8) +#define WMI_PMLO_UL_AIRTIME_NON_AC_SET(airtime, value) WMI_SET_BITS(airtime, 16, 8, value) + +#define WMI_PMLO_DL_AIRTIME_NON_AC_GET(airtime) WMI_GET_BITS(airtime, 24, 8) +#define WMI_PMLO_DL_AIRTIME_NON_AC_SET(airtime, value) WMI_SET_BITS(airtime, 24, 8, value) + +/* + * The wmi_ctrl_path_pmlo_stats_struct is used to send Provisional MLO stats + * the WMI_CTRL_PATH_STATS_EVENT message, in response to a + * WMI_REQUEST_CTRL_PATH_STATS_CMD message for the stat type + * WMI_REQUEST_CTRL_PATH_PMLO_STAT. + */ +typedef struct { + /* TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_ctrl_path_pmlo_stats_struct */ + A_UINT32 tlv_header; + /** pdev_id for identifying the PHY */ + A_UINT32 pdev_id; + /* + * Percentage of downlink air time used in each access category + * calculated InBSS, units in percentage. + * BIT[0-7] : AC_BE + * BIT[8-15] : AC_BK + * BIT[16-23] : AC_VI + * BIT[24-31] : AC_VO + * Please refer to WMI_PMLO_UL_DL_INBSS_AT_* macros + * to retrieve values for each access category in dl_inbss_airtime_per_ac. + */ + union { + struct { + A_UINT32 + dl_inbss_airtime_ac_be: 8, + dl_inbss_airtime_ac_bk: 8, + dl_inbss_airtime_ac_vi: 8, + dl_inbss_airtime_ac_vo: 8; + }; + A_UINT32 dl_inbss_airtime_per_ac; + }; + /* + * Percentage of uplink air time used in each access category + * calculated InBSS, units in percentage. + * BIT[0-7] : AC_BE + * BIT[8-15] : AC_BK + * BIT[16-23] : AC_VI + * BIT[24-31] : AC_VO + * Please refer to WMI_PMLO_UL_DL_INBSS_AT_* macros + * to set/get values for each access category in ul_inbss_airtime_per_ac. + */ + union { + struct { + A_UINT32 + ul_inbss_airtime_ac_be: 8, + ul_inbss_airtime_ac_bk: 8, + ul_inbss_airtime_ac_vi: 8, + ul_inbss_airtime_ac_vo: 8; + }; + A_UINT32 ul_inbss_airtime_per_ac; + }; + /* + * Percentage of air time available for each AC, units in percentage. + * BIT[0-7] : AC_BE + * BIT[8-15] : AC_BK + * BIT[16-23] : AC_VI + * BIT[24-31] : AC_VO + * Please refer to WMI_ESP_ESTIMATE_GET_* and WMI_ESP_ESTIMATE_SET_* macros + * to retrieve values for each access category in estimated_air_time_per_ac. + */ + union { + struct { + A_UINT32 + estimated_air_time_ac_be: 8, + estimated_air_time_ac_bk: 8, + estimated_air_time_ac_vi: 8, + estimated_air_time_ac_vo: 8; + }; + A_UINT32 estimated_air_time_per_ac; + }; + /* + * Average channel latency per AC, units in micro seconds. + * avg_chan_lat_per_ac[0] : AC_VO + * avg_chan_lat_per_ac[1] : AC_VI + * avg_chan_lat_per_ac[2] : AC_BE + * avg_chan_lat_per_ac[3] : AC_BK + */ + A_UINT32 avg_chan_lat_per_ac[WMI_AC_MAX]; + /* + * link_obss_airtime: Percentage of OBSS used air time per link, + * units in percentage. + * Refer to WMI_PMLO_LINK_OBSS_AT_* Macro to set/get values. + * link_idle_airtime: Idle/free airtime per link, units in percentage. + * Refer to WMI_PMLO_LINK_AA_* macro to set/get values. + * ul_inbss_airtime_non_ac: ul inBSS airtime occupied by non-AC traffic, + * units in percentage. + * Refer to WMI_PMLO_UL_AIRTIME_NON_AC_* macro to set/get values. + * dl_inbss_airtime_non_ac: dl inBSS airtime occupied by non-AC traffic, + * units in percentage. + * Refer to WMI_PMLO_DL_AIRTIME_NON_AC_* macro to set/get values. + */ + union { + struct { + A_UINT32 link_obss_airtime: 8, + link_idle_airtime: 8, + ul_inbss_airtime_non_ac: 8, + dl_inbss_airtime_non_ac: 8; + }; + A_UINT32 ul_dl_obss_free_aa_word32; + }; +} wmi_ctrl_path_pmlo_stats_struct; + typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_ctrl_path_stats_event_fixed_param */ @@ -12426,7 +12555,7 @@ typedef struct{ * BIT[8-15] : AC_BK * BIT[16-23] : AC_VI * BIT[24-31] : AC_VO - * Please refer WMI_ESP_ESTIMATE_GET_* and WMI_ESP_ESTIMATE_SET_* macros + * Please refer to WMI_ESP_ESTIMATE_GET_* and WMI_ESP_ESTIMATE_SET_* macros * to retrieve values for each access category in estimated_air_time_per_ac. */ A_UINT32 estimated_air_time_per_ac; @@ -30812,6 +30941,7 @@ typedef enum { WMI_REQUEST_CTRL_PATH_BMISS_STAT = 9, WMI_REQUEST_CTRL_PATH_ODD_ADDR_READ = 10, WMI_REQUEST_CTRL_PATH_AFC_STAT = 11, + WMI_REQUEST_CTRL_PATH_PMLO_STAT = 12, } wmi_ctrl_path_stats_id; typedef enum { @@ -30824,10 +30954,11 @@ typedef enum { * The following stats actions are mutually exclusive. * A single stats request message can only specify one action. */ - WMI_REQUEST_CTRL_PATH_STAT_GET = 1, - WMI_REQUEST_CTRL_PATH_STAT_RESET = 2, - WMI_REQUEST_CTRL_PATH_STAT_START = 3, - WMI_REQUEST_CTRL_PATH_STAT_STOP = 4, + WMI_REQUEST_CTRL_PATH_STAT_GET = 1, + WMI_REQUEST_CTRL_PATH_STAT_RESET = 2, + WMI_REQUEST_CTRL_PATH_STAT_START = 3, + WMI_REQUEST_CTRL_PATH_STAT_STOP = 4, + WMI_REQUEST_CTRL_PATH_STAT_PERIODIC_PUBLISH = 5, } wmi_ctrl_path_stats_action; typedef enum { @@ -30853,6 +30984,19 @@ typedef struct { **/ A_UINT32 action; /* refer to wmi_ctrl_path_stats_action */ + /** + * The stat_periodicity field is relevant only when action is set to + * WMI_REQUEST_CTRL_PATH_STAT_PERIODIC_PUBLISH. + * The units of this periodicity are milliseconds. + * Periodically send WMI ctrl-path stats event with the specified stats + * periodicity for the stats whose IDs are set in stats_id_mask. + * Periodic WMI ctrl-path stats events are enabled by setting value > 0, + * Previously onngoing periodic WMI ctrl-path stats events become + * disabled when action is WMI_REQUEST_CTRL_PATH_STAT_PERIODIC_PUBLISH + * and stat_periodicity = 0. + */ + A_UINT32 stat_periodicity; + /** The below TLV arrays optionally follow this fixed_param TLV structure: * 1. A_UINT32 pdev_ids[]; * If this array is present and non-zero length, stats should only diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f9001e5775..746d94bbec 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_ 1240 +#define __WMI_REVISION_ 1241 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work