From 942476d37d85ed37115e6c9720b6472a9d7cb392 Mon Sep 17 00:00:00 2001 From: Neha Bisht Date: Mon, 9 Aug 2021 20:29:48 +0530 Subject: [PATCH] qcacmn: Fill peer Tx/Rx statistics from ppdu Fill peer level statistics such as nss, mcs, etc. from ppdu descriptor Change-Id: Ibc348b7fa1b6438adc06de74aeff36c882519a80 --- dp/cmn_dp_api/dp_ratetable.h | 1 + dp/inc/cdp_txrx_stats_struct.h | 35 +++++++++++++++++++++++++++ dp/wifi3.0/monitor/dp_mon.c | 5 ++++ dp/wifi3.0/monitor/dp_rx_mon_status.c | 15 ++++++++++++ 4 files changed, 56 insertions(+) diff --git a/dp/cmn_dp_api/dp_ratetable.h b/dp/cmn_dp_api/dp_ratetable.h index 3c877d9d2a..dbcef1af51 100644 --- a/dp/cmn_dp_api/dp_ratetable.h +++ b/dp/cmn_dp_api/dp_ratetable.h @@ -157,6 +157,7 @@ enum HW_RATECODE_PREAM_TYPE { HW_RATECODE_PREAM_CCK, HW_RATECODE_PREAM_HT, HW_RATECODE_PREAM_VHT, + HW_RATECODE_PREAM_HE, }; enum DP_CMN_MODULATION_TYPE dp_getmodulation( diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h index 2377cc04b1..2554da7938 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/dp/inc/cdp_txrx_stats_struct.h @@ -979,6 +979,18 @@ struct protocol_trace_count { * @ru_loc: pkt info for RU location 26/ 52/ 106/ 242/ 484 counter * @num_ppdu_cookie_valid : Number of comp received with valid ppdu cookie * @tx_success_twt: Successful Tx Packets in TWT session + * @nss_info: NSS 1,2, ...8 + * @mcs_info: MCS index + * @bw_info: Bandwidth + * + * + * + * + * @gi_info: Legacy normal GI + * Legacy short GI + * HE related GI + * HE + * @preamble_info: preamble */ struct cdp_tx_stats { struct cdp_pkt_info comp_pkt; @@ -1071,6 +1083,12 @@ 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; + + uint32_t nss_info:4, + mcs_info:4, + bw_info:4, + gi_info:4, + preamble_info:4; }; /* struct cdp_rx_stats - rx Level Stats @@ -1137,6 +1155,18 @@ struct cdp_tx_stats { * @last_snr: Previous snr * @multipass_rx_pkt_drop: Dropped multipass rx pkt * @rx_mpdu_cnt: rx mpdu count per MCS rate + * @nss_info: NSS 1,2, ...8 + * @mcs_info: MCS index + * @bw_info: Bandwidth + * + * + * + * + * @gi_info: Legacy normal GI + * Legacy short GI + * HE related GI + * HE + * @preamble_info: preamble * @to_stack_twt: Total packets sent up the stack in TWT session */ struct cdp_rx_stats { @@ -1208,6 +1238,11 @@ struct cdp_rx_stats { uint8_t last_snr; uint32_t multipass_rx_pkt_drop; uint32_t rx_mpdu_cnt[MAX_MCS]; + uint32_t nss_info:4, + mcs_info:4, + bw_info:4, + gi_info:4, + preamble_info:4; struct cdp_pkt_info to_stack_twt; }; diff --git a/dp/wifi3.0/monitor/dp_mon.c b/dp/wifi3.0/monitor/dp_mon.c index d7f3e702a5..59626c9419 100644 --- a/dp/wifi3.0/monitor/dp_mon.c +++ b/dp/wifi3.0/monitor/dp_mon.c @@ -1525,6 +1525,11 @@ dp_tx_rate_stats_update(struct dp_peer *peer, ppdu_tx_rate = dp_ath_rate_out(peer->stats.tx.avg_tx_rate); DP_STATS_UPD(peer, tx.rnd_avg_tx_rate, ppdu_tx_rate); + peer->stats.tx.bw_info = ppdu->bw; + peer->stats.tx.gi_info = ppdu->gi; + peer->stats.tx.nss_info = ppdu->nss; + peer->stats.tx.mcs_info = ppdu->mcs; + peer->stats.tx.preamble_info = ppdu->preamble; if (peer->vdev) { /* * In STA mode: diff --git a/dp/wifi3.0/monitor/dp_rx_mon_status.c b/dp/wifi3.0/monitor/dp_rx_mon_status.c index 17b027ba62..8913b5537d 100644 --- a/dp/wifi3.0/monitor/dp_rx_mon_status.c +++ b/dp/wifi3.0/monitor/dp_rx_mon_status.c @@ -558,12 +558,21 @@ static inline void dp_rx_rate_stats_update(struct dp_peer *peer, nss = ppdu_user->nss - 1; mcs = ppdu_user->mcs; + if (peer) { + peer->stats.rx.nss_info = ppdu_user->nss; + peer->stats.rx.mcs_info = ppdu_user->mcs; + } } else { if (ppdu->u.nss == 0) nss = 0; else nss = ppdu->u.nss - 1; mcs = ppdu->u.mcs; + + if (peer) { + peer->stats.rx.nss_info = ppdu->u.nss; + peer->stats.rx.mcs_info = ppdu->u.mcs; + } } ratekbps = dp_getrateindex(ppdu->u.gi, @@ -582,6 +591,12 @@ static inline void dp_rx_rate_stats_update(struct dp_peer *peer, return; } + if (peer) { + peer->stats.rx.bw_info = ppdu->u.bw; + peer->stats.rx.gi_info = ppdu->u.gi; + peer->stats.rx.preamble_info = ppdu->u.preamble; + } + ppdu->rix = rix; DP_STATS_UPD(peer, rx.last_rx_rate, ratekbps); dp_ath_rate_lpf(peer->stats.rx.avg_rx_rate, ratekbps);