summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorspuligil <spuligil@codeaurora.org>2020-05-21 18:00:42 -0700
committernshrivas <nshrivas@codeaurora.org>2020-05-22 07:06:30 -0700
commitb331b8d91d3ec4729b8c2da0bc24245e15165c19 (patch)
tree0b833612fc5d408a0479619122411d28e06f62e9
parenta6e5686a07879d5b060b4cc348d61e75949c67e8 (diff)
downloadwlan-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.h1
-rw-r--r--fw/wmi_tlv_defs.h19
-rw-r--r--fw/wmi_unified.h124
-rw-r--r--fw/wmi_version.h2
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