diff options
| -rw-r--r-- | fw/htt.h | 2 | ||||
| -rw-r--r-- | fw/htt_stats.h | 76 |
2 files changed, 77 insertions, 1 deletions
@@ -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__ */ |
