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 2022-01-05 11:32:47 +08:00 • committed by Madan Koyyalamudi
commit 40395a8bda
3 changed files with 7 additions and 1 deletions

View file

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

View file

@ -853,6 +853,7 @@ static inline void dp_update_vdev_stats(struct dp_soc *soc,
tgtobj->tx.ldpc += srcobj->stats.tx.ldpc;
tgtobj->tx.pream_punct_cnt += srcobj->stats.tx.pream_punct_cnt;
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.amsdu_cnt += srcobj->stats.tx.amsdu_cnt;
tgtobj->tx.non_ampdu_cnt += srcobj->stats.tx.non_ampdu_cnt;

View file

@ -4117,15 +4117,18 @@ 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.ldpc, 1, ts->ldpc);
DP_STATS_INCC(peer, tx.retries, 1, ts->transmit_cnt > 1);
#if defined(FEATURE_PERPKT_INFO) && WDI_EVENT_ENABLE
dp_wdi_event_handler(WDI_EVENT_UPDATE_DP_STATS, pdev->soc,
&peer->stats, ts->peer_id,
UPDATE_PEER_STATS, pdev->pdev_id);
#endif
if (ts->first_msdu)
if (ts->first_msdu) {
DP_STATS_INCC(peer, tx.mpdu_success_with_retries,
qdf_do_div(ts->transmit_cnt, DP_RETRY_COUNT),
ts->transmit_cnt > DP_RETRY_COUNT);
DP_STATS_INCC(peer, tx.retries_mpdu, 1, ts->transmit_cnt > 1);
}
}
#ifdef QCA_LL_TX_FLOW_CONTROL_V2