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

Commit 40395a8b authored by Jianmin Zhu's avatar Jianmin Zhu Committed by Madan Koyyalamudi
Browse files

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
parent 72890133
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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;
+4 −1
Original line number Diff line number Diff line
@@ -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