summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorspuligil <spuligil@codeaurora.org>2019-08-14 06:00:38 -0700
committerspuligil <spuligil@codeaurora.org>2019-08-14 06:00:38 -0700
commit03e8c1b3fb6c791ef5dfc245d9c91660cbc1ee4b (patch)
tree2ab2776ea9667b7b85ece42542bd4f048660487e
parent74b1dac58574a1e4347768cab5b29f3c9e9ae7a3 (diff)
fw-api: CL 7859041 - update fw common interface files
HTT stats: add FSE_RX stats defs Change-Id: I72828e54f5f3b9d4dbb87304b820685ef2589bac CRs-Fixed: 2262693
-rw-r--r--fw/htt_stats.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/fw/htt_stats.h b/fw/htt_stats.h
index 7de2a8db2f8b..388154d9ccfb 100644
--- a/fw/htt_stats.h
+++ b/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__ */