summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fw/htt_stats.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/fw/htt_stats.h b/fw/htt_stats.h
index d093f25b4de6..1de7ec053c4a 100644
--- a/fw/htt_stats.h
+++ b/fw/htt_stats.h
@@ -361,6 +361,7 @@ typedef enum {
HTT_STATS_SCHED_TXQ_SCHED_ORDER_SU_TAG = 86, /* htt_sched_txq_sched_order_su_tlv */
HTT_STATS_SCHED_TXQ_SCHED_INELIGIBILITY_TAG = 87, /* htt_sched_txq_sched_eligibility_tlv */
HTT_STATS_PDEV_OBSS_PD_TAG = 88, /* htt_pdev_obss_pd_stats_tlv */
+ HTT_STATS_HW_WAR_TAG = 89, /* htt_hw_war_stats_tlv */
HTT_STATS_MAX_TAG,
} htt_tlv_tag_t;
@@ -572,6 +573,26 @@ typedef struct {
A_UINT32 tx_active_dur_us_high;
/* Number of MPDUs dropped after max retries */
A_UINT32 remove_mpdus_max_retries;
+ /* Num HTT cookies dispatched */
+ A_UINT32 comp_delivered;
+ /* successful ppdu transmissions */
+ A_UINT32 ppdu_ok;
+ /* Scheduler self triggers */
+ A_UINT32 self_triggers;
+ /* FES duration of last tx data PPDU in us (sch_eval_end - ppdu_start) */
+ A_UINT32 tx_time_dur_data;
+ /* Num of times sequence terminated due to ppdu duration < burst limit */
+ A_UINT32 seq_qdepth_repost_stop;
+ /* Num of times MU sequence terminated due to MSDUs reaching threshold */
+ A_UINT32 mu_seq_min_msdu_repost_stop;
+ /* Num of times SU sequence terminated due to MSDUs reaching threshold */
+ A_UINT32 seq_min_msdu_repost_stop;
+ /* Num of times sequence terminated due to no TXOP available */
+ A_UINT32 seq_txop_repost_stop;
+ /* Num of times the next sequence got cancelled */
+ A_UINT32 next_seq_cancel;
+ /* Num of times fes offset was misaligned */
+ A_UINT32 fes_offsets_err_cnt;
} htt_tx_pdev_stats_cmn_tlv;
#define HTT_TX_PDEV_STATS_URRN_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -750,12 +771,37 @@ typedef struct {
A_UINT32 sch_rx_sifs_resp_trigger;
} htt_hw_stats_whal_tx_tlv;
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ /* BIT [ 7 : 0] :- mac_id
+ * BIT [31 : 8] :- reserved
+ */
+ union {
+ struct {
+ A_UINT32 mac_id: 8,
+ reserved: 24;
+ };
+ A_UINT32 mac_id__word;
+ };
+
+ /*
+ * hw_wars is a variable-length array, with each element counting
+ * the number of occurrences of the corresponding type of HW WAR.
+ * That is, hw_wars[0] indicates how many times HW WAR 0 occurred,
+ * hw_wars[1] indicates how many times HW WAR 1 occurred, etc.
+ * The target has an internal HW WAR mapping that it uses to keep
+ * track of which HW WAR is WAR 0, which HW WAR is WAR 1, etc.
+ */
+ A_UINT32 hw_wars[1/*or more*/];
+} htt_hw_war_stats_tlv;
+
/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_ERROR
* TLV_TAGS:
* - HTT_STATS_HW_PDEV_ERRS_TAG
* - HTT_STATS_HW_INTR_MISC_TAG (multiple)
* - HTT_STATS_HW_WD_TIMEOUT_TAG (multiple)
* - HTT_STATS_WHAL_TX_TAG
+ * - HTT_STATS_HW_WAR_TAG
*/
/* NOTE:
* This structure is for documentation, and cannot be safely used directly.
@@ -766,6 +812,7 @@ typedef struct _htt_pdev_err_stats {
htt_hw_stats_intr_misc_tlv misc_stats[1];
htt_hw_stats_wd_timeout_tlv wd_timeout[1];
htt_hw_stats_whal_tx_tlv whal_tx_stats;
+ htt_hw_war_stats_tlv hw_war;
} htt_hw_err_stats_t;
/* ============ PEER STATS ============ */
@@ -1850,6 +1897,16 @@ typedef struct {
A_UINT32 notify_sched;
/* Duration based sendn termination */
A_UINT32 dur_based_sendn_term;
+ /* scheduled via NOTIFY2 */
+ A_UINT32 su_notify2_sched;
+ /* schedule if queued packets are greater than avg MSDUs in PPDU */
+ A_UINT32 su_optimal_queued_msdus_sched;
+ /* schedule due to timeout */
+ A_UINT32 su_delay_timeout_sched;
+ /* delay if txtime is less than 500us */
+ A_UINT32 su_min_txtime_sched_delay;
+ /* scheduled via no delay */
+ A_UINT32 su_no_delay;
} htt_tx_pdev_stats_sched_per_txq_tlv;
#define HTT_STATS_TX_SCHED_CMN_MAC_ID_M 0x000000ff
@@ -2006,6 +2063,8 @@ typedef struct {
A_UINT32 q_not_empty;
A_UINT32 drop_notification;
A_UINT32 desc_threshold;
+ A_UINT32 hwsch_tqm_invalid_status;
+ A_UINT32 missed_tqm_gen_mpdus;
} htt_tx_tqm_cmn_stats_tlv;
typedef struct {
@@ -2113,6 +2172,11 @@ typedef struct {
A_UINT32 m4_packets;
A_UINT32 g1_packets;
A_UINT32 g2_packets;
+ A_UINT32 rc4_packets;
+ A_UINT32 eap_packets;
+ A_UINT32 eapol_start_packets;
+ A_UINT32 eapol_logoff_packets;
+ A_UINT32 eapol_encap_asf_packets;
} htt_tx_de_eapol_packets_stats_tlv;
typedef struct {
@@ -2130,6 +2194,12 @@ typedef struct {
A_UINT32 fse_tid_override;
A_UINT32 ipv6_jumbogram_zero_length;
A_UINT32 qos_to_non_qos_in_prog;
+ A_UINT32 ap_bcast_mcast_eapol;
+ A_UINT32 unicast_on_ap_bss_peer;
+ A_UINT32 ap_vdev_invalid;
+ A_UINT32 incomplete_llc;
+ A_UINT32 eapol_duplicate_m3;
+ A_UINT32 eapol_duplicate_m4;
} htt_tx_de_classify_failed_stats_tlv;
typedef struct {
@@ -2253,6 +2323,9 @@ typedef struct {
A_UINT32 tcl_res_invalid_addrx;
A_UINT32 wbm2fw_entry_count;
A_UINT32 invalid_pdev;
+ A_UINT32 tcl_res_addrx_timeout;
+ A_UINT32 invalid_vdev;
+ A_UINT32 invalid_tcl_exp_frame_desc;
} htt_tx_de_cmn_stats_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_TX_DE_INFO
@@ -2877,6 +2950,7 @@ typedef struct {
A_UINT32 ax_mu_mimo_tx_gi[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];
A_UINT32 ofdma_tx_gi[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];
A_UINT32 trigger_type_11ax[HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES];
+ A_UINT32 tx_11ax_su_ext;
} htt_tx_pdev_rate_stats_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_TX_RATE