Browse Source

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

HTT stats: add FSE_RX stats defs

Change-Id: I72828e54f5f3b9d4dbb87304b820685ef2589bac
CRs-Fixed: 2262693
spuligil 5 years ago
parent
commit
82260b4630
1 changed files with 134 additions and 0 deletions
  1. 134 0
      fw/htt_stats.h

+ 134 - 0
fw/htt_stats.h

@@ -310,6 +310,14 @@ enum htt_dbg_ext_stats_type {
      */
     HTT_DBG_EXT_STATS_PDEV_UL_MUMIMO_TRIG_STATS = 27,
 
+    /* HTT_DBG_EXT_STATS_FSE_RX
+     * PARAMS:
+     *   - No Params
+     * RESP MSG:
+     *   - htt_rx_fse_stats_t
+     */
+    HTT_DBG_EXT_STATS_FSE_RX = 28,
+
     /* keep this last */
     HTT_DBG_NUM_EXT_STATS = 256,
 };
@@ -430,6 +438,7 @@ typedef enum {
     HTT_STATS_RX_PDEV_UL_OFDMA_USER_STATS_TAG      = 95, /* htt_rx_pdev_ul_ofdma_user_stats_tlv */
     HTT_STATS_RX_PDEV_UL_MIMO_USER_STATS_TAG       = 96, /* htt_rx_pdev_ul_mimo_user_stats_tlv */
     HTT_STATS_RX_PDEV_UL_MUMIMO_TRIG_STATS_TAG     = 97, /* htt_rx_pdev_ul_mumimo_trig_stats_tlv */
+    HTT_STATS_RX_FSE_STATS_TAG                     = 98, /* htt_rx_fse_stats_tlv */
 
     HTT_STATS_MAX_TAG,
 } htt_tlv_tag_t;
@@ -4156,5 +4165,130 @@ typedef struct {
     htt_latency_prof_cnt_tlv latency_cnt_stat;
 } htt_soc_latency_stats_t;
 
+#define HTT_RX_MAX_PEAK_OCCUPANCY_INDEX 10
+#define HTT_RX_MAX_CURRENT_OCCUPANCY_INDEX 10
+#define HTT_RX_SQUARE_INDEX 6
+#define HTT_RX_MAX_PEAK_SEARCH_INDEX 4
+#define HTT_RX_MAX_PENDING_SEARCH_INDEX 4
+
+/* STATS_TYPE : HTT_DBG_EXT_RX_FSE_STATS
+ * TLV_TAGS:
+ *    - HTT_STATS_RX_FSE_STATS_TAG
+ */
+typedef struct {
+    htt_tlv_hdr_t tlv_hdr;
+
+    /*
+     * Number of times host requested for fse enable/disable
+     */
+    A_UINT32 fse_enable_cnt;
+    A_UINT32 fse_disable_cnt;
+    /*
+     * Number of times host requested for fse cache invalidation
+     * individual entries or full cache
+     */
+    A_UINT32 fse_cache_invalidate_entry_cnt;
+    A_UINT32 fse_full_cache_invalidate_cnt;
+
+    /*
+     * Cache hits count will increase if there is a matching flow in the cache
+     * There is no register for cache miss but the number of cache misses can
+     * be calculated as
+     *    cache miss = (num_searches - cache_hits)
+     * Thus, there is no need to have a separate variable for cache misses.
+     * Num searches is flow search times done in the cache.
+     */
+    A_UINT32 fse_num_cache_hits_cnt;
+    A_UINT32 fse_num_searches_cnt;
+    /**
+     * Cache Occupancy holds 2 types of values: Peak and Current.
+     * 10 bins are used to keep track of peak occupancy.
+     * 8 of these bins represent ranges of values, while the first and last
+     * bins represent the extreme cases of the cache being completely empty
+     * or completely full.
+     * For the non-extreme bins, the number of cache occupancy values per
+     * bin is the maximum cache occupancy (128), divided by the number of
+     * non-extreme bins (8), so 128/8 = 16 values per bin.
+     * The range of values for each histogram bins is specified below:
+     * Bin0 = Counter increments when cache occupancy is empty
+     * Bin1 = Counter increments when cache occupancy is within [1 to 16]
+     * Bin2 = Counter increments when cache occupancy is within [17 to 32]
+     * Bin3 = Counter increments when cache occupancy is within [33 to 48]
+     * Bin4 = Counter increments when cache occupancy is within [49 to 64]
+     * Bin5 = Counter increments when cache occupancy is within [65 to 80]
+     * Bin6 = Counter increments when cache occupancy is within [81 to 96]
+     * Bin7 = Counter increments when cache occupancy is within [97 to 112]
+     * Bin8 = Counter increments when cache occupancy is within [113 to 127]
+     * Bin9 = Counter increments when cache occupancy is equal to 128
+     * The above histogram bin definitions apply to both the peak-occupancy
+     * histogram and the current-occupancy histogram.
+     *
+     * @fse_cache_occupancy_peak_cnt:
+     * Array records periodically PEAK cache occupancy values.
+     * Peak Occupancy will increment only if it is greater than current
+     * occupancy value.
+     *
+     * @fse_cache_occupancy_curr_cnt:
+     * Array records periodically current cache occupancy value.
+     * Current Cache occupancy always holds instant snapshot of
+     * current number of cache entries.
+     **/
+    A_UINT32 fse_cache_occupancy_peak_cnt[HTT_RX_MAX_PEAK_OCCUPANCY_INDEX];
+    A_UINT32 fse_cache_occupancy_curr_cnt[HTT_RX_MAX_CURRENT_OCCUPANCY_INDEX];
+    /*
+     * Square stat is sum of squares of cache occupancy to better understand
+     * any variation/deviation within each cache set, over a given time-window.
+     *
+     * Square stat is calculated this way:
+     *     Square =  SUM(Squares of all Occupancy in a Set) / 8
+     * The cache has 16-way set associativity, so the occupancy of a
+     * set can vary from 0 to 16.  There are 8 sets within the cache.
+     * Therefore, the minimum possible square value is 0, and the maximum
+     * possible square value is (8*16^2) / 8 = 256.
+     *
+     * 6 bins are used to keep track of square stats:
+     * Bin0 = increments when square of current cache occupancy is zero
+     * Bin1 = increments when square of current cache occupancy is within
+     *        [1 to 50]
+     * Bin2 = increments when square of current cache occupancy is within
+     *        [51 to 100]
+     * Bin3 = increments when square of current cache occupancy is within
+     *        [101 to 200]
+     * Bin4 = increments when square of current cache occupancy is within
+     *        [201 to 255]
+     * Bin5 = increments when square of current cache occupancy is 256
+     */
+    A_UINT32 fse_search_stat_square_cnt[HTT_RX_SQUARE_INDEX];
+    /**
+     * Search stats has 2 types of values: Peak Pending and Number of
+     * Search Pending.
+     * GSE command ring for FSE can hold maximum of 5 Pending searches
+     * at any given time.
+     *
+     * 4 bins are used to keep track of search stats:
+     * Bin0 = Counter increments when there are NO pending searches
+     *        (For peak, it will be number of pending searches greater
+     *        than GSE command ring FIFO outstanding requests.
+     *        For Search Pending, it will be number of pending search
+     *        inside GSE command ring FIFO.)
+     * Bin1 = Counter increments when number of pending searches are within
+     *        [1 to 2]
+     * Bin2 = Counter increments when number of pending searches are within
+     *        [3 to 4]
+     * Bin3 = Counter increments when number of pending searches are
+     *        greater/equal to [ >= 5]
+     */
+    A_UINT32 fse_search_stat_peak_cnt[HTT_RX_MAX_PEAK_SEARCH_INDEX];
+    A_UINT32 fse_search_stat_search_pending_cnt[HTT_RX_MAX_PENDING_SEARCH_INDEX];
+} htt_rx_fse_stats_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_rx_fse_stats_tlv rx_fse_stats;
+} htt_rx_fse_stats_t;
+
 
 #endif /* __HTT_STATS_H__ */