diff options
author | spuligil <spuligil@codeaurora.org> | 2020-05-21 18:00:42 -0700 |
---|---|---|
committer | nshrivas <nshrivas@codeaurora.org> | 2020-05-22 07:06:30 -0700 |
commit | b331b8d91d3ec4729b8c2da0bc24245e15165c19 (patch) | |
tree | 0b833612fc5d408a0479619122411d28e06f62e9 | |
parent | a6e5686a07879d5b060b4cc348d61e75949c67e8 (diff) | |
download | wlan-fw-api-b331b8d91d3ec4729b8c2da0bc24245e15165c19.tar.gz |
fw-api: CL 10528997 - update fw common interface files
Change-Id: I7609cc2c5c3477558c086eed6a55eb5de7ffb1c9
WMI: control path stats request/report
CRs-Fixed: 2262693
-rw-r--r-- | fw/wmi_services.h | 1 | ||||
-rw-r--r-- | fw/wmi_tlv_defs.h | 19 | ||||
-rw-r--r-- | fw/wmi_unified.h | 124 | ||||
-rw-r--r-- | fw/wmi_version.h | 2 |
4 files changed, 145 insertions, 1 deletions
diff --git a/fw/wmi_services.h b/fw/wmi_services.h index c6acdd9..b2b02cb 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -442,6 +442,7 @@ typedef enum { WMI_SERVICE_5_DOT_9GHZ_SUPPORT = 247, /* Indicates FW supports new 5.9GHZ (scan, connection and so on) */ WMI_SERVICE_MU_PREAMBLE_PUNCTURE_SUPPORT = 248, /* Indicates FW supports MU preamble puncture */ WMI_SERVICE_SRG_SRP_SPATIAL_REUSE_SUPPORT = 249, /* Support for SRG, SRP based spatial reuse support */ + WMI_REQUEST_CTRL_PATH_STATS_REQUEST = 250, /* FW supports control path stats */ /******* ADD NEW SERVICES UP TO 256 HERE *******/ diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 5991426..c9bdc6f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1078,6 +1078,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_roam_capability_report_event_fixed_param, WMITLV_TAG_STRUC_wmi_pmf_bcn_protect_stats, WMITLV_TAG_STRUC_wmi_nan_capabilities, + WMITLV_TAG_STRUC_wmi_request_ctrl_path_stats_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_ctrl_path_stats_event_fixed_param, + WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_stats_struct, } WMITLV_TAG_ID; /* @@ -1522,6 +1525,7 @@ typedef enum { OP(WMI_PDEV_SET_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID) \ OP(WMI_PDEV_SET_NON_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID) \ OP(WMI_PDEV_SET_NON_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID) \ + OP(WMI_REQUEST_CTRL_PATH_STATS_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1772,6 +1776,7 @@ typedef enum { OP(WMI_AUDIO_AGGR_REPORT_STATISTICS_EVENTID) \ OP(WMI_PDEV_SSCAN_FW_PARAM_EVENTID) \ OP(WMI_ROAM_CAPABILITY_REPORT_EVENTID) \ + OP(WMI_CTRL_PATH_STATS_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3990,6 +3995,14 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_WLAN_STATS_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_peer_stats_info_cmd_fixed_param, wmi_request_peer_stats_info_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_PEER_STATS_INFO_CMDID); +/* Request Control Path stats info cmd */ +#define WMITLV_TABLE_WMI_REQUEST_CTRL_PATH_STATS_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_ctrl_path_stats_cmd_fixed_param, wmi_request_ctrl_path_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, pdev_ids, WMITLV_SIZE_VAR)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_ids, WMITLV_SIZE_VAR)\ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mac_addr_list, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_CTRL_PATH_STATS_CMDID); + /* Host sets the current country code */ #define WMITLV_TABLE_WMI_SET_CURRENT_COUNTRY_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_set_current_country_cmd_fixed_param, wmi_set_current_country_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -5725,6 +5738,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_ENCRYPT_DECRYPT_DATA_RESP_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_stats_info, peer_stats_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); +/* Update Control Path stats event */ +#define WMITLV_TABLE_WMI_CTRL_PATH_STATS_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ctrl_path_stats_event_fixed_param, wmi_ctrl_path_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_stats_struct, ctrl_path_pdev_stats, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID); + #define WMITLV_TABLE_WMI_RADIO_CHAN_STATS_EVENTID(id, op, buf, len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_radio_chan_stats_event_fixed_param, wmi_radio_chan_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_radio_chan_stats, radio_chan_stats, WMITLV_SIZE_VAR) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index dd407c8..2b9c082 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -914,6 +914,9 @@ typedef enum { /** request for WLM (wlan latency manager) stats */ WMI_REQUEST_WLM_STATS_CMDID, + /** request for control path stats */ + WMI_REQUEST_CTRL_PATH_STATS_CMDID, + /** ARP OFFLOAD REQUEST*/ WMI_SET_ARP_NS_OFFLOAD_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_ARP_NS_OFL), @@ -1732,6 +1735,10 @@ typedef enum { * and report WLM (WLAN latency manager) stats info to host */ WMI_WLM_STATS_EVENTID, + /** This event is used to respond to WMI_REQUEST_CTRL_PATH_STATS_CMDID + * and report stats info to host */ + WMI_CTRL_PATH_STATS_EVENTID, + /* NLO specific events */ /** NLO match event after the first match */ @@ -8857,6 +8864,73 @@ typedef struct { */ } wmi_peer_stats_info_event_fixed_param; +/** + * WMI arrays of length WMI_MGMT_FRAME_SUBTYPE_MAX use the + * IEEE802.11 standard's enumeration of mgmt frame subtypes: + * 0 -> IEEE80211_FC0_SUBTYPE_ASSOC_REQ + * 1 -> IEEE80211_FC0_SUBTYPE_ASSOC_RESP + * 2 -> IEEE80211_FC0_SUBTYPE_REASSOC_REQ + * 3 -> IEEE80211_FC0_SUBTYPE_REASSOC_RESP + * 4 -> IEEE80211_FC0_SUBTYPE_PROBE_REQ + * 5 -> IEEE80211_FC0_SUBTYPE_PROBE_RESP + * 6 -> Reserved + * 7 -> Reserved + * 8 -> IEEE80211_FC0_SUBTYPE_BEACON + * 9 -> IEEE80211_FC0_SUBTYPE_ATIM + * 10 -> IEEE80211_FC0_SUBTYPE_DISASSOC + * 11 -> IEEE80211_FC0_SUBTYPE_AUTH + * 12 -> IEEE80211_FC0_SUBTYPE_DEAUTH + * 13 -> IEEE80211_FCO_SUBTYPE_ACTION + * 14 -> IEEE80211_FC0_SUBTYPE_ACTION_NOACK + * 15 -> IEEE80211_FC0_SUBTYPE_RESERVED + */ +#define WMI_MGMT_FRAME_SUBTYPE_MAX 16 + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_stats_struct*/ + A_UINT32 tlv_header; + /** pdev_id for identifying the MAC */ + A_UINT32 pdev_id; + /** counter of how many times this pdev has + * transmitted each management frame sub-type */ + A_UINT32 tx_mgmt_subtype[WMI_MGMT_FRAME_SUBTYPE_MAX]; + /** counter of how many times this pdev has + * received each management frame sub-type */ + A_UINT32 rx_mgmt_subtype[WMI_MGMT_FRAME_SUBTYPE_MAX]; + /** scan fail dfs violation time in ms */ + A_UINT32 scan_fail_dfs_violation_time_ms; + /** NOL check failed latest channel frequency in MHz */ + A_UINT32 nol_check_fail_last_chan_freq; + /** NOL check failed timestamp in ms */ + A_UINT32 nol_check_fail_time_stamp_ms; + /** total peer create count */ + A_UINT32 total_peer_create_cnt; + /** total peer delete count */ + A_UINT32 total_peer_delete_cnt; + /** total peer delete response count */ + A_UINT32 total_peer_delete_resp_cnt; + /** sched algo FIFO full count */ + A_UINT32 vdev_pause_fail_rt_to_sched_algo_fifo_full_cnt; +} wmi_ctrl_path_pdev_stats_struct; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_ctrl_path_stats_event_fixed_param */ + A_UINT32 tlv_header; + /** Request ID*/ + A_UINT32 request_id; + /** more flag + * 1 - More events sent after this event. + * 0 - no more events after this event. + */ + A_UINT32 more; + /** This TLV is (optionally) followed by TLV arrays containing + * different types of stats: + * 1. wmi_ctrl_path_pdev_stats_struct ctrl_path_pdev_stats[]; + * This TLV array contains zero or more pdev stats instances. + */ +} wmi_ctrl_path_stats_event_fixed_param; + typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_radio_chan_stats */ @@ -24676,6 +24750,55 @@ typedef struct { } wmi_request_peer_stats_info_cmd_fixed_param; typedef enum { + /* + * Multiple stats type can be requested together, so each value + * within this enum represents a bit within a stats bitmap. + */ + WMI_REQUEST_CTRL_PATH_PDEV_TX_STAT = 0x00000001, +} wmi_ctrl_path_stats_id; + +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_ctrl_path_stats_action; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_request_ctrl_path_stats_cmd_fixed_param */ + A_UINT32 tlv_header; + /** Bitmask showing which of stats IDs 0-31 have been requested. + * These stats ids are defined in enum wmi_ctrl_path_stats_id. + */ + A_UINT32 stats_id_mask; + /** request ID to store the cookies in wifistats */ + A_UINT32 request_id; + /** action + * get/reset/start/stop based on stats id + * defined as a part of wmi_ctrl_path_stats_action + **/ + A_UINT32 action; /* refer to wmi_ctrl_path_stats_action */ + + /** 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 + * be provided from the pdevs identified in the array. + * 2. A_UINT32 vdev_ids[]; + * If this array is present and non-zero length, stats should only + * be provided from the vdevs identified in the array. + * 3. wmi_mac_addr peer_macaddr[]; + * If this array is present and non-zero length, stats should only + * be provided from the peers with the MAC addresses specified + * in the array. + */ +} wmi_request_ctrl_path_stats_cmd_fixed_param; + +typedef enum { WMI_REQUEST_ONE_RADIO_CHAN_STATS = 0x01, /* request stats of one specified channel */ WMI_REQUEST_ALL_RADIO_CHAN_STATS = 0x02, /* request stats of all channels */ } wmi_radio_chan_stats_request_type; @@ -26190,6 +26313,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_ANT_CONTROLLER_CMDID); WMI_RETURN_STRING(WMI_SIMULATION_TEST_CMDID); WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_RTSCTS_CONFIG_CMDID); + WMI_RETURN_STRING(WMI_REQUEST_CTRL_PATH_STATS_CMDID); } return "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 4d3653c..3204313 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_ 842 +#define __WMI_REVISION_ 843 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work |