Эх сурвалжийг харах

fw-api: CL 7122573 - update fw common interface files

HTT stats: latency profiling

Change-Id: Iaeab8d51d653020e75879cf2492fe85d33afee6e
CRs-Fixed: 2262693
spuligil 5 жил өмнө
parent
commit
9e7f7330c7
2 өөрчлөгдсөн 77 нэмэгдсэн , 1 устгасан
  1. 1 1
      fw/htt.h
  2. 76 0
      fw/htt_stats.h

+ 1 - 1
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,

+ 76 - 0
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__ */