瀏覽代碼

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
Rakesh Pillai 5 年之前
父節點
當前提交
836b6690cb
共有 3 個文件被更改,包括 7 次插入4 次删除
  1. 2 0
      dp/inc/cdp_txrx_mon_struct.h
  2. 3 4
      dp/wifi3.0/dp_rx_mon_status.c
  3. 2 0
      dp/wifi3.0/dp_stats.c

+ 2 - 0
dp/inc/cdp_txrx_mon_struct.h

@@ -216,6 +216,7 @@ enum {
  * @dest_mpdu_done: destination ring MPDU count
  * @dup_mon_linkdesc_cnt: duplicate link descriptor 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 {
 #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 ppdu_id_hist_idx;
 	uint32_t mon_rx_dest_stuck;
+	uint32_t tlv_tag_status_err;
 };
 #endif

+ 3 - 4
dp/wifi3.0/dp_rx_mon_status.c

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

+ 2 - 0
dp/wifi3.0/dp_stats.c

@@ -5506,6 +5506,8 @@ dp_print_pdev_rx_mon_stats(struct dp_pdev *pdev)
 		       rx_mon_stats->dest_ppdu_done);
 	DP_PRINT_STATS("dest_mpdu_done_cnt = %d",
 		       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",
 		       rx_mon_stats->dest_mpdu_drop);
 	DP_PRINT_STATS("dup_mon_linkdesc_cnt = %d",