qcacmn: Add support to track high watermark for SRNGs

Add support to track the high watermark for the number
of entries which are used at any given instant. This helps
in identifying if the ring size is sufficient or is being
full for certain use-cases.

Change-Id: Id3ffa52c653696699fbcfbb556a815d5f7908863
CRs-Fixed: 3235115
This commit is contained in:
Rakesh Pillai
2022-07-01 07:16:57 -07:00
committed by Madan Koyyalamudi
父節點 162ab8974a
當前提交 9ba8236444
共有 8 個文件被更改,包括 294 次插入2 次删除

查看文件

@@ -404,11 +404,13 @@ const int dp_stats_mapping_table[][STATS_TYPE_MAX] = {
{TXRX_FW_STATS_INVALID, TXRX_REO_QUEUE_STATS},
{TXRX_FW_STATS_INVALID, TXRX_SOC_CFG_PARAMS},
{TXRX_FW_STATS_INVALID, TXRX_PDEV_CFG_PARAMS},
{TXRX_FW_STATS_INVALID, TXRX_NAPI_STATS},
{TXRX_FW_STATS_INVALID, TXRX_SOC_INTERRUPT_STATS},
{TXRX_FW_STATS_INVALID, TXRX_SOC_FSE_STATS},
{TXRX_FW_STATS_INVALID, TXRX_HAL_REG_WRITE_STATS},
{TXRX_FW_STATS_INVALID, TXRX_SOC_REO_HW_DESC_DUMP},
{TXRX_FW_STATS_INVALID, TXRX_SOC_WBM_IDLE_HPTP_DUMP},
{TXRX_FW_STATS_INVALID, TXRX_SRNG_USAGE_WM_STATS},
{HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT, TXRX_HOST_STATS_INVALID},
{HTT_DBG_EXT_STATS_TX_SOUNDING_INFO, TXRX_HOST_STATS_INVALID}
};
@@ -9197,6 +9199,21 @@ dp_txrx_host_peer_stats_clr(struct dp_soc *soc,
#endif
}
#ifdef WLAN_DP_SRNG_USAGE_WM_TRACKING
static inline void dp_srng_clear_ring_usage_wm_stats(struct dp_soc *soc)
{
int ring;
for (ring = 0; ring < soc->num_reo_dest_rings; ring++)
hal_srng_clear_ring_usage_wm_locked(soc->hal_soc,
soc->reo_dest_ring[ring].hal_srng);
}
#else
static inline void dp_srng_clear_ring_usage_wm_stats(struct dp_soc *soc)
{
}
#endif
/**
* dp_txrx_host_stats_clr(): Reinitialize the txrx stats
* @vdev: DP_VDEV handle
@@ -9233,6 +9250,8 @@ dp_txrx_host_stats_clr(struct dp_vdev *vdev, struct dp_soc *soc)
dp_vdev_iterate_peer(vdev, dp_txrx_host_peer_stats_clr, NULL,
DP_MOD_ID_GENERIC_STATS);
dp_srng_clear_ring_usage_wm_stats(soc);
#if defined(FEATURE_PERPKT_INFO) && WDI_EVENT_ENABLE
dp_wdi_event_handler(WDI_EVENT_UPDATE_DP_STATS, vdev->pdev->soc,
&vdev->stats, vdev->vdev_id,
@@ -9570,8 +9589,13 @@ static void dp_txrx_stats_help(void)
dp_info(" 28 -- Host REO Queue Statistics");
dp_info(" 29 -- Host Soc cfg param Statistics");
dp_info(" 30 -- Host pdev cfg param Statistics");
dp_info(" 31 -- Host FISA stats");
dp_info(" 32 -- Host Register Work stats");
dp_info(" 31 -- Host NAPI stats");
dp_info(" 32 -- Host Interrupt stats");
dp_info(" 33 -- Host FISA stats");
dp_info(" 34 -- Host Register Work stats");
dp_info(" 35 -- HW REO Queue stats");
dp_info(" 36 -- Host WBM IDLE link desc ring HP/TP");
dp_info(" 37 -- Host SRNG usage watermark stats");
}
/**
@@ -9652,6 +9676,10 @@ dp_print_host_stats(struct dp_vdev *vdev,
case TXRX_SOC_WBM_IDLE_HPTP_DUMP:
dp_dump_wbm_idle_hptp(pdev->soc, pdev);
break;
case TXRX_SRNG_USAGE_WM_STATS:
/* Dump usage watermark stats for all SRNGs */
dp_dump_srng_high_wm_stats(soc, 0xFF);
break;
default:
dp_info("Wrong Input For TxRx Host Stats");
dp_txrx_stats_help();
@@ -11147,6 +11175,8 @@ static QDF_STATUS dp_txrx_dump_stats(struct cdp_soc_t *psoc, uint16_t value,
dp_print_soc_interrupt_stats(soc);
hal_dump_reg_write_stats(soc->hal_soc);
dp_pdev_print_tx_delay_stats(soc);
/* Dump usage watermark stats for core TX/RX SRNGs */
dp_dump_srng_high_wm_stats(soc, (1 << REO_DST));
break;
case CDP_RX_RING_STATS: