diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h index cc4545955e..c785b5ba41 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/dp/inc/cdp_txrx_stats_struct.h @@ -922,6 +922,7 @@ struct cdp_tx_stats { * @rssi: RSSI of received signal * @last_rssi: Previous rssi * @multipass_rx_pkt_drop: Dropped multipass rx pkt + * @rx_mpdu_cnt: rx mpdu count per MCS rate */ struct cdp_rx_stats { struct cdp_pkt_info to_stack; @@ -989,6 +990,7 @@ struct cdp_rx_stats { uint8_t rssi; uint8_t last_rssi; uint32_t multipass_rx_pkt_drop; + uint32_t rx_mpdu_cnt[MAX_MCS]; }; /* struct cdp_tx_ingress_stats - Tx ingress Stats diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index 80123e90df..d90a90397f 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/dp/wifi3.0/dp_rx.c @@ -1596,6 +1596,10 @@ static void dp_rx_msdu_stats_update(struct dp_soc *soc, nss = hal_rx_msdu_start_nss_get(soc->hal_soc, rx_tlv_hdr); pkt_type = hal_rx_msdu_start_get_pkt_type(rx_tlv_hdr); + DP_STATS_INCC(peer, rx.rx_mpdu_cnt[mcs], 1, + ((mcs < MAX_MCS) && QDF_NBUF_CB_RX_CHFRAG_START(nbuf))); + DP_STATS_INCC(peer, rx.rx_mpdu_cnt[MAX_MCS - 1], 1, + ((mcs >= MAX_MCS) && QDF_NBUF_CB_RX_CHFRAG_START(nbuf))); DP_STATS_INC(peer, rx.bw[bw], 1); /* * only if nss > 0 and pkt_type is 11N/AC/AX,