qcacmn: reduce log level for mon status ring tlv-tag error

STATUS_DONE is missing sometimes in monitor status ring,
but logging for each entry in the ring increases the time
for which the hal_ring access lock is held. If there are
many entries in the monitor status ring, this can lead to
the hal ring access lock being held for too long and cause
inconsistencies.

Reduce the logging level of the tlv tag STATUS_DONE errors
and have a counter for the cases when this happens.

CRs-Fixed: 2502422
Change-Id: Ica77ce62bbe2c6b7691d638ac44ab0452dd2fd97
This commit is contained in:
Rakesh Pillai
2019-08-27 00:40:37 +05:30
committed by nshrivas
parent ec527358c2
commit 836b6690cb
3 changed files with 7 additions and 4 deletions

View File

@@ -216,6 +216,7 @@ enum {
* @dest_mpdu_done: destination ring MPDU count * @dest_mpdu_done: destination ring MPDU count
* @dup_mon_linkdesc_cnt: duplicate link descriptor indications from HW * @dup_mon_linkdesc_cnt: duplicate link descriptor indications from HW
* @dup_mon_buf_cnt: duplicate buffer indications from HW * @dup_mon_buf_cnt: duplicate buffer indications from HW
* @tlv_tag_status_err: status not correct in the tlv tag
*/ */
struct cdp_pdev_mon_stats { struct cdp_pdev_mon_stats {
#ifndef REMOVE_MON_DBG_STATS #ifndef REMOVE_MON_DBG_STATS
@@ -236,5 +237,6 @@ struct cdp_pdev_mon_stats {
uint32_t dest_ring_ppdu_id_hist[MAX_PPDU_ID_HIST]; uint32_t dest_ring_ppdu_id_hist[MAX_PPDU_ID_HIST];
uint32_t ppdu_id_hist_idx; uint32_t ppdu_id_hist_idx;
uint32_t mon_rx_dest_stuck; uint32_t mon_rx_dest_stuck;
uint32_t tlv_tag_status_err;
}; };
#endif #endif

View File

@@ -1205,10 +1205,9 @@ dp_rx_mon_status_srng_process(struct dp_soc *soc, uint32_t mac_id,
uint32_t hp, tp; uint32_t hp, tp;
hal_get_sw_hptp(hal_soc, mon_status_srng, hal_get_sw_hptp(hal_soc, mon_status_srng,
&tp, &hp); &tp, &hp);
QDF_TRACE(QDF_MODULE_ID_DP, dp_info_rl("tlv tag status error hp:%u, tp:%u",
QDF_TRACE_LEVEL_ERROR, hp, tp);
"[%s][%d] status not done - hp:%u, tp:%u", pdev->rx_mon_stats.tlv_tag_status_err++;
__func__, __LINE__, hp, tp);
/* WAR for missing status: Skip status entry */ /* WAR for missing status: Skip status entry */
hal_srng_src_get_next(hal_soc, mon_status_srng); hal_srng_src_get_next(hal_soc, mon_status_srng);
continue; continue;

View File

@@ -5506,6 +5506,8 @@ dp_print_pdev_rx_mon_stats(struct dp_pdev *pdev)
rx_mon_stats->dest_ppdu_done); rx_mon_stats->dest_ppdu_done);
DP_PRINT_STATS("dest_mpdu_done_cnt = %d", DP_PRINT_STATS("dest_mpdu_done_cnt = %d",
rx_mon_stats->dest_mpdu_done); rx_mon_stats->dest_mpdu_done);
DP_PRINT_STATS("tlv_tag_status_err_cnt = %u",
rx_mon_stats->tlv_tag_status_err);
DP_PRINT_STATS("dest_mpdu_drop_cnt = %d", DP_PRINT_STATS("dest_mpdu_drop_cnt = %d",
rx_mon_stats->dest_mpdu_drop); rx_mon_stats->dest_mpdu_drop);
DP_PRINT_STATS("dup_mon_linkdesc_cnt = %d", DP_PRINT_STATS("dup_mon_linkdesc_cnt = %d",