소스 검색

qcacmn: Add counter in non-TQM based Tx completion path

Rate limit the log in non-TQM Tx completion path and add a counter
to increment whenever Tx completion status is received and release source
is non-TQM.

Change-Id: I8968ccc7a499577bd4fdfaef78e6520b00c12503
CRs-Fixed: 3201403
Srinivas Girigowda 3 년 전
부모
커밋
85b76d5a6c
5개의 변경된 파일13개의 추가작업 그리고 2개의 파일을 삭제
  1. 3 0
      dp/inc/cdp_txrx_stats_struct.h
  2. 2 0
      dp/wifi3.0/dp_internal.h
  3. 3 1
      dp/wifi3.0/dp_stats.c
  4. 2 1
      dp/wifi3.0/dp_tx.c
  5. 3 0
      dp/wifi3.0/dp_types.h

+ 3 - 0
dp/inc/cdp_txrx_stats_struct.h

@@ -1366,6 +1366,8 @@ struct protocol_trace_count {
  * @su_be_ppdu_cnt: SU Tx packet count
  * @mu_be_ppdu_cnt: MU Tx packet count
  * @punc_bw[MAX_PUNCTURED_MODE]: MSDU count for punctured BW
+ * @release_src_not_tqm: Counter to keep track of release source is not TQM
+ *			 in TX completion status processing
  */
 struct cdp_tx_stats {
 	struct cdp_pkt_info comp_pkt;
@@ -1483,6 +1485,7 @@ struct cdp_tx_stats {
 	struct cdp_pkt_type mu_be_ppdu_cnt[TXRX_TYPE_MU_MAX];
 	uint32_t punc_bw[MAX_PUNCTURED_MODE];
 #endif
+	uint32_t release_src_not_tqm;
 };
 
 /* struct cdp_rx_stats - rx Level Stats

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

@@ -1580,6 +1580,8 @@ void dp_update_vdev_stats_on_peer_unmap(struct dp_vdev *vdev,
 		_tgtobj->tx.tx_success_twt.bytes += \
 					_srcobj->tx.tx_success_twt.bytes; \
 		_tgtobj->tx.last_tx_ts = _srcobj->tx.last_tx_ts; \
+		_tgtobj->tx.release_src_not_tqm += \
+					_srcobj->tx.release_src_not_tqm; \
 		for (i = 0; i < QDF_PROTO_SUBTYPE_MAX; i++) { \
 			_tgtobj->tx.no_ack_count[i] += \
 					_srcobj->tx.no_ack_count[i];\

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

@@ -6301,6 +6301,8 @@ void dp_print_peer_stats(struct dp_peer *peer,
 		       peer_stats->tx.last_ack_rssi);
 	DP_PRINT_STATS("Dropped At FW: Removed Pkts = %u",
 		       peer_stats->tx.dropped.fw_rem.num);
+	DP_PRINT_STATS("Release source not TQM = %u",
+		       peer_stats->tx.release_src_not_tqm);
 	if (pdev && !wlan_cfg_get_dp_pdev_nss_enabled(pdev->wlan_cfg_ctx)) {
 		DP_PRINT_STATS("Dropped At FW: Removed bytes = %llu",
 			peer_stats->tx.dropped.fw_rem.bytes);
@@ -6494,7 +6496,7 @@ void dp_print_peer_stats(struct dp_peer *peer,
 		       peer_stats->rx.err.rxdma_wifi_parse_err);
 	DP_PRINT_STATS("Msdu's Received As Part of Ampdu = %d",
 		       peer_stats->rx.non_ampdu_cnt);
-	DP_PRINT_STATS("Msdu's Recived As Ampdu = %d",
+	DP_PRINT_STATS("Msdu's Received As Ampdu = %d",
 		       peer_stats->rx.ampdu_cnt);
 	DP_PRINT_STATS("Msdu's Received Not Part of Amsdu's = %d",
 		       peer_stats->rx.non_amsdu_cnt);

+ 2 - 1
dp/wifi3.0/dp_tx.c

@@ -4152,7 +4152,8 @@ dp_tx_update_peer_stats(struct dp_tx_desc_s *tx_desc,
 	tid_stats = &pdev->stats.tid_stats.tid_tx_stats[ring_id][tid];
 
 	if (ts->release_src != HAL_TX_COMP_RELEASE_SOURCE_TQM) {
-		dp_err("Release source is not from TQM");
+		dp_err_rl("Release source:%d is not from TQM", ts->release_src);
+		DP_PEER_PER_PKT_STATS_INC(txrx_peer, tx.release_src_not_tqm, 1);
 		return;
 	}
 

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

@@ -3479,6 +3479,8 @@ typedef void *dp_txrx_ref_handle;
  * @last_tx_ts: last timestamp in jiffies when tx comp occurred
  * @avg_sojourn_msdu[CDP_DATA_TID_MAX]: Avg sojourn msdu stat
  * @protocol_trace_cnt: per-peer protocol counter
+ * @release_src_not_tqm: Counter to keep track of release source is not TQM
+ *			 in TX completion status processing
  */
 struct dp_peer_per_pkt_tx_stats {
 	struct cdp_pkt_info ucast;
@@ -3516,6 +3518,7 @@ struct dp_peer_per_pkt_tx_stats {
 #ifdef VDEV_PEER_PROTOCOL_COUNT
 	struct protocol_trace_count protocol_trace_cnt[CDP_TRACE_MAX];
 #endif
+	uint32_t release_src_not_tqm;
 };
 
 /**