Преглед на файлове

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",