diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index d4804193a087..363db645916b 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -807,6 +807,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_vdev_set_arp_stats_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_vdev_get_arp_stats_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_vdev_get_arp_stats_event_fixed_param, + WMITLV_TAG_STRUC_wmi_iface_offload_stats, } WMITLV_TAG_ID; /* @@ -3660,7 +3661,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_DIAG_EVENT_LOG_SUPPORTED_EVENTID); #define WMITLV_TABLE_WMI_IFACE_LINK_STATS_EVENTID(id,op,buf,len)\ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_iface_link_stats_event_fixed_param, wmi_iface_link_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_iface_link_stats, iface_link_stats, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wmm_ac_stats, ac, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_wmm_ac_stats, ac, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_iface_offload_stats, iface_offload_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_IFACE_LINK_STATS_EVENTID); diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4df1c4b8558b..22013b35c86d 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -4668,6 +4668,10 @@ typedef struct { * It is superseded by the WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID message. */ A_UINT32 tx_time_per_tpc[MAX_TPC_LEVELS]; + /** msecs the radio is awake due to Host initiated scan (accruing over time) */ + A_UINT32 on_time_host_scan; + /** msecs the radio is awake due to LPI scan (accruing over time) */ + A_UINT32 on_time_lpi_scan; } wmi_radio_link_stats; /** tx time per power level statistics */ @@ -4875,8 +4879,46 @@ typedef struct { A_UINT32 tx_rts_fail_cnt; A_UINT32 tx_ppdu_succ_cnt; A_UINT32 tx_ppdu_fail_cnt; + /** msecs the interface is in Connected state (accruing over time) */ + A_UINT32 connected_duration; + /** msecs the interface is in DisConnected state (accruing over time) */ + A_UINT32 disconnected_duration; + /** msecs the interface is doing RTT ranging (accruing over time) */ + A_UINT32 rtt_ranging_duration; + /** msecs the interface is in RTT responder mode (accruing over time) */ + A_UINT32 rtt_responder_duration; + /** Number of Probes (Tx) sent on the interface (accruing over time) */ + A_UINT32 num_probes_tx; + /** Number of Beacon misses on this interface (accruing over time) */ + A_UINT32 num_beacon_miss; } wmi_iface_link_stats; +typedef enum { + WMI_OFFLOAD_STATS_TYPE_SOC_BCAST = 0, + WMI_OFFLOAD_STATS_TYPE_SOC_MCAST = 1, + WMI_OFFLOAD_STATS_TYPE_SOC_UCAST = 2, + WMI_OFFLOAD_STATS_TYPE_ARP = 3, + WMI_OFFLOAD_STATS_TYPE_NS = 4, + WMI_OFFLOAD_STATS_TYPE_APF_BCAST = 5, + WMI_OFFLOAD_STATS_TYPE_APF_MCAST = 6, + WMI_OFFLOAD_STATS_TYPE_APF_UCAST = 7, + /* Add New offload stat type here */ + WMI_OFFLOAD_STATS_TYPE_MAX, +} wmi_offload_stats_type; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_iface_offload_stats */ + /** Type of offload stat. enum wmi_offload_stats_type **/ + A_UINT32 type; + /** Number of (MSDUs) frames Received **/ + A_UINT32 rx_count; + /** Number of frames Dropped **/ + A_UINT32 drp_count; + /** Number of frames for which FW Responded (Valid for ARP and NS only). (or) + * Number of frames forwarded to Host (Valid for stats type except ARP and NS). **/ + A_UINT32 fwd_count; +} wmi_iface_offload_stats; + /** Interface statistics (once started) reset and start afresh after each connection */ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_iface_link_stats_event_fixed_param */ @@ -4884,10 +4926,13 @@ typedef struct { A_UINT32 request_id; /** unique id identifying the VDEV, generated by the caller */ A_UINT32 vdev_id; + /** Number of offload stats **/ + A_UINT32 num_offload_stats; /* - * This TLV is followed by another TLV + * This TLV is followed by other TLVs: * wmi_iface_link_stats iface_link_stats; * num_ac * size of(struct wmi_wmm_ac_stats) + * wmi_iface_offload_stats iface_offload_stats[num_offload_stats] */ } wmi_iface_link_stats_event_fixed_param; @@ -10460,7 +10505,7 @@ typedef enum { } WMI_ARP_STATS_ACTION; typedef enum { - WMI_ARP_STATS_RX_PKT_TYPE_ARP = 0x1, + WMI_ARP_STATS_RX_PKT_TYPE_ARP = 0x1, } WMI_ARP_STATS_RX_PKT_TYPE; typedef enum { @@ -10470,7 +10515,7 @@ typedef enum { typedef enum { WMI_CONNECTION_STATUS_FAILURE = 0x0, - WMI_CONNECTION_STATUS_SUCCESS, + WMI_CONNECTION_STATUS_SUCCESS, } WMI_ARP_STATS_CONNECTION_STATUS; /* ARP stats set (configure) req */ @@ -10485,7 +10530,7 @@ typedef struct { /* ARP stats get req */ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_arp_stats_cmd_fixed_param */ - A_UINT32 vdev_id; + A_UINT32 vdev_id; } wmi_vdev_get_arp_stats_cmd_fixed_param; /* per vdev based ARP stats */ @@ -16858,7 +16903,7 @@ typedef struct { A_UINT32 enable; /** periodic stats duration (units are milliseconds) */ A_UINT32 stats_period; - /** pdev_id for identifying the MAC + /** pdev_id for identifying the MAC * See macros starting with WMI_PDEV_ID_ for values. */ A_UINT32 pdev_id; @@ -17202,7 +17247,7 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_MAC_PHY_CHAINMASK_COMBO */ A_UINT32 chainmask_table_id; - /* Number of vaild Chainmask in the table */ + /* Number of vaild Chainmask in the table */ A_UINT32 num_valid_chainmask; /* * This TLV is followed by the below TLVs: diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 6915c8ffe958..acddabc72a30 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_ 356 +#define __WMI_REVISION_ 357 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work