소스 검색

qcacmn: Ratelimit defrag path error logs and add stats

Ratelimit the defrag path error logs and add the stats
for fragmented packets received out-of-order which
inturn leads to sequence number mistamtch in defrag path.

Change-Id: I17d4c1cff214a8c8a05abf576701824b293d2883
CRs-Fixed: 2740805
Rakesh Pillai 5 년 전
부모
커밋
19a0a18573
3개의 변경된 파일5개의 추가작업 그리고 11개의 파일을 삭제
  1. 2 11
      dp/wifi3.0/dp_rx_defrag.c
  2. 1 0
      dp/wifi3.0/dp_stats.c
  3. 2 0
      dp/wifi3.0/dp_types.h

+ 2 - 11
dp/wifi3.0/dp_rx_defrag.c

@@ -134,8 +134,7 @@ static void dp_rx_return_head_frag_desc(struct dp_peer *peer,
 void dp_rx_reorder_flush_frag(struct dp_peer *peer,
 			 unsigned int tid)
 {
-	QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO_HIGH,
-		  FL("Flushing TID %d"), tid);
+	dp_info_rl("Flushing TID %d", tid);
 
 	if (!peer) {
 		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
@@ -1300,9 +1299,6 @@ static QDF_STATUS dp_rx_defrag(struct dp_peer *peer, unsigned tid,
 		hdr_space += dp_f_wep.ic_header;
 		break;
 	default:
-		QDF_TRACE(QDF_MODULE_ID_TXRX,
-			QDF_TRACE_LEVEL_ERROR,
-			"dp_rx_defrag: Did not match any security type");
 		break;
 	}
 
@@ -1536,12 +1532,7 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc,
 			 */
 			dp_rx_reorder_flush_frag(peer, tid);
 
-			DP_STATS_INC(soc, rx.rx_frag_err, 1);
-			QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
-				"%s mismatch, dropping earlier sequence ",
-				(rxseq == rx_tid->curr_seq_num)
-				? "address"
-				: "seq number");
+			DP_STATS_INC(soc, rx.rx_frag_oor, 1);
 
 			/*
 			 * The sequence number for this fragment becomes the

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

@@ -6559,6 +6559,7 @@ dp_print_soc_rx_stats(struct dp_soc *soc)
 	DP_PRINT_STATS("RX frags: %d", soc->stats.rx.rx_frags);
 	DP_PRINT_STATS("RX frag wait: %d", soc->stats.rx.rx_frag_wait);
 	DP_PRINT_STATS("RX frag err: %d", soc->stats.rx.rx_frag_err);
+	DP_PRINT_STATS("RX frag OOR: %d", soc->stats.rx.rx_frag_oor);
 
 	DP_PRINT_STATS("RX HP out_of_sync: %d", soc->stats.rx.hp_oos2);
 	DP_PRINT_STATS("RX Ring Near Full: %d", soc->stats.rx.near_full);

+ 2 - 0
dp/wifi3.0/dp_types.h

@@ -770,6 +770,8 @@ struct dp_soc_stats {
 		uint32_t rx_frag_wait;
 		/* Fragments dropped due to errors */
 		uint32_t rx_frag_err;
+		/* Fragments received OOR causing sequence num mismatch */
+		uint32_t rx_frag_oor;
 		/* Fragments dropped due to len errors in skb */
 		uint32_t rx_frag_err_len_error;
 		/* Fragments dropped due to no peer found */