qcacmn: Support watermark stats for TX completion srng

Support watermark stats for TX completion srng.

Change-Id: Id13bd12ec9c2723f5b5e5afffedcb939cd5e5d74
CRs-Fixed: 3635719
This commit is contained in:
Jinwei Chen
2023-10-09 20:23:24 -07:00
کامیت شده توسط Rahul Choudhary
والد ecf3b36a28
کامیت d047565c37
4فایلهای تغییر یافته به همراه29 افزوده شده و 3 حذف شده

مشاهده پرونده

@@ -3505,6 +3505,14 @@ void dp_print_soc_interrupt_stats(struct dp_soc *soc);
*/ */
void dp_print_tx_ppeds_stats(struct dp_soc *soc); void dp_print_tx_ppeds_stats(struct dp_soc *soc);
/* REO destination ring's watermark mask */
#define DP_SRNG_WM_MASK_REO_DST BIT(REO_DST)
/* TX completion ring's watermark mask */
#define DP_SRNG_WM_MASK_TX_COMP BIT(WBM2SW_RELEASE)
/* All srng's watermark mask */
#define DP_SRNG_WM_MASK_ALL 0xFFFFFFFF
#ifdef WLAN_DP_SRNG_USAGE_WM_TRACKING #ifdef WLAN_DP_SRNG_USAGE_WM_TRACKING
/** /**
* dp_dump_srng_high_wm_stats() - Print the ring usage high watermark stats * dp_dump_srng_high_wm_stats() - Print the ring usage high watermark stats

مشاهده پرونده

@@ -7206,6 +7206,10 @@ static inline void dp_srng_clear_ring_usage_wm_stats(struct dp_soc *soc)
for (ring = 0; ring < soc->num_reo_dest_rings; ring++) for (ring = 0; ring < soc->num_reo_dest_rings; ring++)
hal_srng_clear_ring_usage_wm_locked(soc->hal_soc, hal_srng_clear_ring_usage_wm_locked(soc->hal_soc,
soc->reo_dest_ring[ring].hal_srng); soc->reo_dest_ring[ring].hal_srng);
for (ring = 0; ring < soc->num_tx_comp_rings; ring++)
hal_srng_clear_ring_usage_wm_locked(soc->hal_soc,
soc->tx_comp_ring[ring].hal_srng);
} }
#else #else
static inline void dp_srng_clear_ring_usage_wm_stats(struct dp_soc *soc) static inline void dp_srng_clear_ring_usage_wm_stats(struct dp_soc *soc)
@@ -7812,7 +7816,7 @@ dp_print_host_stats(struct dp_vdev *vdev,
break; break;
case TXRX_SRNG_USAGE_WM_STATS: case TXRX_SRNG_USAGE_WM_STATS:
/* Dump usage watermark stats for all SRNGs */ /* Dump usage watermark stats for all SRNGs */
dp_dump_srng_high_wm_stats(soc, 0xFF); dp_dump_srng_high_wm_stats(soc, DP_SRNG_WM_MASK_ALL);
break; break;
case TXRX_PEER_STATS: case TXRX_PEER_STATS:
dp_print_per_link_stats((struct cdp_soc_t *)pdev->soc, dp_print_per_link_stats((struct cdp_soc_t *)pdev->soc,
@@ -10154,7 +10158,9 @@ static QDF_STATUS dp_txrx_dump_stats(struct cdp_soc_t *psoc, uint16_t value,
dp_print_reg_write_stats(soc); dp_print_reg_write_stats(soc);
dp_pdev_print_tx_delay_stats(soc); dp_pdev_print_tx_delay_stats(soc);
/* Dump usage watermark stats for core TX/RX SRNGs */ /* Dump usage watermark stats for core TX/RX SRNGs */
dp_dump_srng_high_wm_stats(soc, (1 << REO_DST)); dp_dump_srng_high_wm_stats(soc,
DP_SRNG_WM_MASK_REO_DST |
DP_SRNG_WM_MASK_TX_COMP);
if (soc->cdp_soc.ol_ops->dp_print_fisa_stats) if (soc->cdp_soc.ol_ops->dp_print_fisa_stats)
soc->cdp_soc.ol_ops->dp_print_fisa_stats( soc->cdp_soc.ol_ops->dp_print_fisa_stats(
CDP_FISA_STATS_ID_ERR_STATS); CDP_FISA_STATS_ID_ERR_STATS);

مشاهده پرونده

@@ -8363,7 +8363,7 @@ void dp_dump_srng_high_wm_stats(struct dp_soc *soc, uint64_t srng_mask)
"ring_id", "high_wm", "time", "<50", "50-60", "60-70", "ring_id", "high_wm", "time", "<50", "50-60", "60-70",
"70-80", "80-90", "90-100"); "70-80", "80-90", "90-100");
if (srng_mask & (1 << REO_DST)) { if (srng_mask & DP_SRNG_WM_MASK_REO_DST) {
for (ring = 0; ring < soc->num_reo_dest_rings; ring++) { for (ring = 0; ring < soc->num_reo_dest_rings; ring++) {
pos = 0; pos = 0;
pos += hal_dump_srng_high_wm_stats(soc->hal_soc, pos += hal_dump_srng_high_wm_stats(soc->hal_soc,
@@ -8372,6 +8372,16 @@ void dp_dump_srng_high_wm_stats(struct dp_soc *soc, uint64_t srng_mask)
dp_info("%s", srng_high_wm_str); dp_info("%s", srng_high_wm_str);
} }
} }
if (srng_mask & DP_SRNG_WM_MASK_TX_COMP) {
for (ring = 0; ring < soc->num_tx_comp_rings; ring++) {
pos = 0;
pos += hal_dump_srng_high_wm_stats(soc->hal_soc,
soc->tx_comp_ring[ring].hal_srng,
buf, buf_len, pos);
dp_info("%s", srng_high_wm_str);
}
}
} }
#endif #endif

مشاهده پرونده

@@ -6637,6 +6637,8 @@ more_data:
return 0; return 0;
} }
hal_srng_update_ring_usage_wm_no_lock(soc->hal_soc, hal_ring_hdl);
if (!num_avail_for_reap) if (!num_avail_for_reap)
num_avail_for_reap = hal_srng_dst_num_valid(hal_soc, num_avail_for_reap = hal_srng_dst_num_valid(hal_soc,
hal_ring_hdl, 0); hal_ring_hdl, 0);