diff --git a/dp/cmn_dp_api/dp_cal_client_api.c b/dp/cmn_dp_api/dp_cal_client_api.c index 8a7f6080d15d..8e2bcd9d3353 100644 --- a/dp/cmn_dp_api/dp_cal_client_api.c +++ b/dp/cmn_dp_api/dp_cal_client_api.c @@ -134,6 +134,7 @@ void dp_cal_client_update_peer_stats(struct cdp_peer_stats *peer_stats) uint32_t temp_rx_data = peer_stats->rx.to_stack.num; uint32_t temp_tx_bytes = peer_stats->tx.tx_success.bytes; uint32_t temp_tx_data = peer_stats->tx.tx_success.num; + uint32_t temp_tx_ucast_pkts = peer_stats->tx.ucast.num; peer_stats->rx.rx_byte_rate = temp_rx_bytes - peer_stats->rx.rx_bytes_success_last; @@ -143,11 +144,19 @@ void dp_cal_client_update_peer_stats(struct cdp_peer_stats *peer_stats) peer_stats->tx.tx_bytes_success_last; peer_stats->tx.tx_data_rate = temp_tx_data - peer_stats->tx.tx_data_success_last; + peer_stats->tx.tx_data_ucast_rate = temp_tx_ucast_pkts - + peer_stats->tx.tx_data_ucast_last; peer_stats->rx.rx_bytes_success_last = temp_rx_bytes; peer_stats->rx.rx_data_success_last = temp_rx_data; peer_stats->tx.tx_bytes_success_last = temp_tx_bytes; peer_stats->tx.tx_data_success_last = temp_tx_data; + peer_stats->tx.tx_data_ucast_last = temp_tx_ucast_pkts; + + if (peer_stats->tx.tx_data_ucast_rate) + peer_stats->tx.last_per = ((peer_stats->tx.tx_data_ucast_last - + peer_stats->tx.tx_data_success_last) * 100) / + peer_stats->tx.tx_data_ucast_last; } qdf_export_symbol(dp_cal_client_update_peer_stats); diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h index b7563a217d11..192657a73e86 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/dp/inc/cdp_txrx_stats_struct.h @@ -258,6 +258,8 @@ struct cdp_tx_stats { uint32_t tx_data_success_last; uint32_t tx_byte_rate; uint32_t tx_data_rate; + uint32_t tx_data_ucast_last; + uint32_t tx_data_ucast_rate; struct cdp_pkt_type pkt_type[DOT11_MAX]; uint32_t sgi_count[MAX_GI]; diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c index e9da148728b9..c8280606c404 100644 --- a/dp/wifi3.0/dp_htt.c +++ b/dp/wifi3.0/dp_htt.c @@ -195,11 +195,6 @@ static void dp_tx_stats_update(struct dp_soc *soc, struct dp_peer *peer, dp_peer_stats_notify(peer); - if (peer->stats.tx.ucast.num) - peer->stats.tx.last_per = ((peer->stats.tx.ucast.num - - peer->stats.tx.tx_success.num) * 100) / - peer->stats.tx.ucast.num; - #if defined(FEATURE_PERPKT_INFO) && WDI_EVENT_ENABLE dp_wdi_event_handler(WDI_EVENT_UPDATE_DP_STATS, pdev->soc, &peer->stats, ppdu->peer_id,