Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83ff6681 authored by Rakesh Pillai's avatar Rakesh Pillai Committed by snandini
Browse files

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
parent f60ca299
Loading
Loading
Loading
Loading
+2 −11
Original line number Diff line number Diff line
@@ -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,
@@ -1322,9 +1321,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;
	}

@@ -1558,12 +1554,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
Original line number Diff line number Diff line
@@ -6045,6 +6045,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
Original line number Diff line number Diff line
@@ -729,6 +729,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 */