From 4e10e7c5ae0ee7bb6dcb1e2c123cc8f1ec79a9a1 Mon Sep 17 00:00:00 2001 From: Amit Mehta Date: Fri, 15 Oct 2021 15:11:58 +0530 Subject: [PATCH] qcacmn: Update MPDU retries in case of successful transmission In case of successful transmission If MPDU tx is retried more than the threshold then increment MPDU retry count by transmit_cnt / threshold Change-Id: Idbc7e2d0579ff68e272132fe4ffe9f951c4aacf5 CRs-Fixed: 3058464 --- dp/inc/cdp_txrx_stats_struct.h | 2 ++ dp/wifi3.0/dp_internal.h | 2 ++ dp/wifi3.0/dp_tx.c | 7 ++++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h index 11c5ec3aa0ba..de4ed05f0882 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/dp/inc/cdp_txrx_stats_struct.h @@ -1024,6 +1024,8 @@ struct cdp_tx_stats { uint32_t num_ppdu_cookie_valid; uint32_t no_ack_count[QDF_PROTO_SUBTYPE_MAX]; struct cdp_pkt_info tx_success_twt; + /* mpdu retry count in case of successful transmission */ + uint32_t mpdu_success_with_retries; }; /* struct cdp_rx_stats - rx Level Stats diff --git a/dp/wifi3.0/dp_internal.h b/dp/wifi3.0/dp_internal.h index 22da8713a5cf..13e4a851611c 100644 --- a/dp/wifi3.0/dp_internal.h +++ b/dp/wifi3.0/dp_internal.h @@ -871,6 +871,8 @@ static inline void dp_update_vdev_stats(struct dp_soc *soc, tgtobj->tx.dropped.fw_reason3 += srcobj->stats.tx.dropped.fw_reason3; tgtobj->tx.dropped.age_out += srcobj->stats.tx.dropped.age_out; + tgtobj->tx.mpdu_success_with_retries += + srcobj->stats.tx.mpdu_success_with_retries; tgtobj->rx.err.mic_err += srcobj->stats.rx.err.mic_err; if (srcobj->stats.rx.rssi != 0) tgtobj->rx.rssi = srcobj->stats.rx.rssi; diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index e54928cb66ca..1848fa50f48d 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -58,6 +58,8 @@ /* invalid peer id for reinject*/ #define DP_INVALID_PEER 0XFFFE +#define DP_RETRY_COUNT 7 + /*mapping between hal encrypt type and cdp_sec_type*/ #define MAX_CDP_SEC_TYPE 12 static const uint8_t sec_type_map[MAX_CDP_SEC_TYPE] = { @@ -4113,12 +4115,15 @@ 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) + DP_STATS_INCC(peer, tx.mpdu_success_with_retries, + qdf_do_div(ts->transmit_cnt, DP_RETRY_COUNT), + ts->transmit_cnt > DP_RETRY_COUNT); } #ifdef QCA_LL_TX_FLOW_CONTROL_V2