qcacmn: Add mpdu tx retries stats

Customer reported their HLOS LTE-WLAN transition algo sometimes go wrong
for wrong low layer stats, Txretry delta is bigger than Txtotal delta.
Txretry unit is msdu while Txtotal unit is mpdu.

Add vdev/peer stats for mpdu number of successfully transmitted after
more than one retransmission attempt, to align mpdu tx_packets, tx_failed.

CRs-Fixed: 3099490
Change-Id: Id4b9d8fd81af4bf0c141dad481bfd2b3f6c1db2a
This commit is contained in:
Jianmin Zhu
2021-12-29 22:38:13 +08:00
committed by Madan Koyyalamudi
parent a48bfbce7c
commit 326f1015bc
3 changed files with 6 additions and 1 deletions

View File

@@ -1166,6 +1166,7 @@ struct protocol_trace_count {
* @stbc: Packets in STBC * @stbc: Packets in STBC
* @ldpc: Packets in LDPC * @ldpc: Packets in LDPC
* @retries: Packet retries * @retries: Packet retries
* @retries_mpdu: mpdu number of successfully transmitted after retries
* @non_amsdu_cnt: Number of MSDUs with no MSDU level aggregation * @non_amsdu_cnt: Number of MSDUs with no MSDU level aggregation
* @amsdu_cnt: Number of MSDUs part of AMSDU * @amsdu_cnt: Number of MSDUs part of AMSDU
* @tx_rate: Tx Rate * @tx_rate: Tx Rate
@@ -1262,6 +1263,7 @@ struct cdp_tx_stats {
uint32_t stbc; uint32_t stbc;
uint32_t ldpc; uint32_t ldpc;
uint32_t retries; uint32_t retries;
uint32_t retries_mpdu;
uint32_t non_amsdu_cnt; uint32_t non_amsdu_cnt;
uint32_t amsdu_cnt; uint32_t amsdu_cnt;
uint32_t tx_rate; uint32_t tx_rate;

View File

@@ -7260,6 +7260,7 @@ void dp_update_vdev_stats(struct dp_soc *soc,
tgtobj->tx.ldpc += srcobj->stats.tx.ldpc; tgtobj->tx.ldpc += srcobj->stats.tx.ldpc;
tgtobj->tx.pream_punct_cnt += srcobj->stats.tx.pream_punct_cnt; tgtobj->tx.pream_punct_cnt += srcobj->stats.tx.pream_punct_cnt;
tgtobj->tx.retries += srcobj->stats.tx.retries; tgtobj->tx.retries += srcobj->stats.tx.retries;
tgtobj->tx.retries_mpdu += srcobj->stats.tx.retries_mpdu;
tgtobj->tx.non_amsdu_cnt += srcobj->stats.tx.non_amsdu_cnt; tgtobj->tx.non_amsdu_cnt += srcobj->stats.tx.non_amsdu_cnt;
tgtobj->tx.amsdu_cnt += srcobj->stats.tx.amsdu_cnt; tgtobj->tx.amsdu_cnt += srcobj->stats.tx.amsdu_cnt;
tgtobj->tx.non_ampdu_cnt += srcobj->stats.tx.non_ampdu_cnt; tgtobj->tx.non_ampdu_cnt += srcobj->stats.tx.non_ampdu_cnt;

View File

@@ -3783,10 +3783,12 @@ dp_tx_update_peer_stats(struct dp_tx_desc_s *tx_desc,
DP_STATS_INCC(peer, tx.stbc, 1, ts->stbc); DP_STATS_INCC(peer, tx.stbc, 1, ts->stbc);
DP_STATS_INCC(peer, tx.ldpc, 1, ts->ldpc); DP_STATS_INCC(peer, tx.ldpc, 1, ts->ldpc);
DP_STATS_INCC(peer, tx.retries, 1, ts->transmit_cnt > 1); DP_STATS_INCC(peer, tx.retries, 1, ts->transmit_cnt > 1);
if (ts->first_msdu) if (ts->first_msdu) {
DP_STATS_INCC(peer, tx.retries_mpdu, 1, ts->transmit_cnt > 1);
DP_STATS_INCC(peer, tx.mpdu_success_with_retries, DP_STATS_INCC(peer, tx.mpdu_success_with_retries,
qdf_do_div(ts->transmit_cnt, DP_RETRY_COUNT), qdf_do_div(ts->transmit_cnt, DP_RETRY_COUNT),
ts->transmit_cnt > DP_RETRY_COUNT); ts->transmit_cnt > DP_RETRY_COUNT);
}
peer->stats.tx.last_tx_ts = qdf_system_ticks(); peer->stats.tx.last_tx_ts = qdf_system_ticks();
} }