summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fw/htt.h2
-rw-r--r--fw/htt_stats.h76
2 files changed, 77 insertions, 1 deletions
diff --git a/fw/htt.h b/fw/htt.h
index 6a2884deeb71..3e7bcd4300d1 100644
--- a/fw/htt.h
+++ b/fw/htt.h
@@ -4911,7 +4911,7 @@ enum htt_srng_ring_id {
* dword11- b'9:0 - rx_drop_threshold: Threshold configured in monitor mode
* to source rings. Consumer drops packets if the available
* words in the ring falls below the configured threshold
- * value.
+ * value.
*/
PREPACK struct htt_rx_ring_selection_cfg_t {
A_UINT32 msg_type: 8,
diff --git a/fw/htt_stats.h b/fw/htt_stats.h
index 924434b40344..c764ee5c8725 100644
--- a/fw/htt_stats.h
+++ b/fw/htt_stats.h
@@ -276,6 +276,15 @@ enum htt_dbg_ext_stats_type {
*/
HTT_DBG_EXT_STATS_RING_BACKPRESSURE_STATS = 24,
+ /* HTT_DBG_EXT_STATS_LATENCY_PROF_STATS
+ * PARAMS:
+ *
+ * RESP MSG:
+ * - htt_soc_latency_prof_t
+ */
+ HTT_DBG_EXT_STATS_LATENCY_PROF_STATS = 25,
+
+
/* keep this last */
HTT_DBG_NUM_EXT_STATS = 256,
};
@@ -372,6 +381,9 @@ typedef enum {
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_RING_BACKPRESSURE_STATS_TAG = 90, /* htt_ring_backpressure_stats_tlv */
+ HTT_STATS_LATENCY_PROF_STATS_TAG = 91, /* htt_latency_prof_stats_tlv */
+ HTT_STATS_LATENCY_CTX_TAG = 92, /* htt_latency_prof_ctx_tlv */
+ HTT_STATS_LATENCY_CNT_TAG = 93, /* htt_latency_prof_cnt_tlv */
HTT_STATS_MAX_TAG,
} htt_tlv_tag_t;
@@ -3835,4 +3847,68 @@ typedef struct {
} r[1]; /* variable-length array */
} htt_ring_backpressure_stats_t;
+#define HTT_LATENCY_PROFILE_MAX_HIST 3
+#define HTT_STATS_MAX_PROF_STATS_NAME_LEN 32
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ /* print_header:
+ * This field suggests whether the host should print a header when
+ * displaying the TLV (because this is the first latency_prof_stats
+ * TLV within a series), or if only the TLV contents should be displayed
+ * without a header (because this is not the first TLV within the series).
+ */
+ A_UINT32 print_header;
+ A_UINT8 latency_prof_name[HTT_STATS_MAX_PROF_STATS_NAME_LEN];
+ A_UINT32 cnt; /* number of data values included in the tot sum */
+ A_UINT32 min; /* time in us */
+ A_UINT32 max; /* time in us */
+ A_UINT32 last;
+ A_UINT32 tot; /* time in us */
+ A_UINT32 avg; /* time in us */
+ /* hist_intvl:
+ * Histogram interval, i.e. the latency range covered by each
+ * bin of the histogram, in microsecond units.
+ * hist[0] counts how many latencies were between 0 to hist_intvl
+ * hist[1] counts how many latencies were between hist_intvl to 2*hist_intvl
+ * hist[2] counts how many latencies were more than 2*hist_intvl
+ */
+ A_UINT32 hist_intvl;
+ A_UINT32 hist[HTT_LATENCY_PROFILE_MAX_HIST];
+} htt_latency_prof_stats_tlv;
+
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ /* duration:
+ * Time period over which counts were gathered, units = microseconds.
+ */
+ A_UINT32 duration;
+ A_UINT32 tx_msdu_cnt;
+ A_UINT32 tx_mpdu_cnt;
+ A_UINT32 tx_ppdu_cnt;
+ A_UINT32 rx_msdu_cnt;
+ A_UINT32 rx_mpdu_cnt;
+} htt_latency_prof_ctx_tlv;
+
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ A_UINT32 prof_enable_cnt; /* count of enabled profiles */
+} htt_latency_prof_cnt_tlv;
+
+/* STATS_TYPE : HTT_DBG_EXT_STATS_LATENCY_PROF_STATS
+ * TLV_TAGS:
+ * HTT_STATS_LATENCY_PROF_STATS_TAG / htt_latency_prof_stats_tlv
+ * HTT_STATS_LATENCY_CTX_TAG / htt_latency_prof_ctx_tlv
+ * HTT_STATS_LATENCY_CNT_TAG / htt_latency_prof_cnt_tlv
+ */
+/* NOTE:
+ * This structure is for documentation, and cannot be safely used directly.
+ * Instead, use the constituent TLV structures to fill/parse.
+ */
+typedef struct {
+ htt_latency_prof_stats_tlv latency_prof_stat;
+ htt_latency_prof_ctx_tlv latency_ctx_stat;
+ htt_latency_prof_cnt_tlv latency_cnt_stat;
+} htt_soc_latency_stats_t;
+
+
#endif /* __HTT_STATS_H__ */