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
This commit is contained in:
Srinivas Girigowda
2022-05-25 10:22:14 -07:00
committed by Madan Koyyalamudi
parent 9d283234a7
commit 85b76d5a6c
5 changed files with 13 additions and 2 deletions

View File

@@ -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

View File

@@ -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];\

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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;
};
/**