diff --git a/dp/wifi3.0/dp_internal.h b/dp/wifi3.0/dp_internal.h index c7071ae4bd..51ef95436a 100644 --- a/dp/wifi3.0/dp_internal.h +++ b/dp/wifi3.0/dp_internal.h @@ -1314,6 +1314,16 @@ void dp_update_pdev_stats(struct dp_pdev *tgtobj, */ void dp_update_vdev_ingress_stats(struct dp_vdev *tgtobj); +/** + * dp_update_vdev_rate_stats() - Update the vdev rate stats + * @tgtobj: tgt buffer for vdev stats + * @srcobj: srcobj vdev stats + * + * Return: None + */ +void dp_update_vdev_rate_stats(struct cdp_vdev_stats *tgtobj, + struct cdp_vdev_stats *srcobj); + /** * dp_update_pdev_ingress_stats(): Update the pdev ingress stats * @tgtobj: pdev handle diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 34188d110c..76a4c474f4 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -8559,6 +8559,8 @@ void dp_aggregate_vdev_stats(struct dp_vdev *vdev, dp_vdev_iterate_peer(vdev, dp_update_vdev_stats, vdev_stats, DP_MOD_ID_GENERIC_STATS); + dp_update_vdev_rate_stats(vdev_stats, &vdev->stats); + #if defined(FEATURE_PERPKT_INFO) && WDI_EVENT_ENABLE dp_wdi_event_handler(WDI_EVENT_UPDATE_DP_STATS, vdev->pdev->soc, vdev_stats, vdev->vdev_id, diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c index b973e3f268..9e1274e55e 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/dp/wifi3.0/dp_stats.c @@ -7725,6 +7725,16 @@ void dp_update_vdev_ingress_stats(struct dp_vdev *tgtobj) tgtobj->stats.tx_i.dropped.headroom_insufficient; } +void dp_update_vdev_rate_stats(struct cdp_vdev_stats *tgtobj, + struct cdp_vdev_stats *srcobj) +{ + tgtobj->tx.last_tx_rate = srcobj->tx.last_tx_rate; + tgtobj->tx.last_tx_rate_mcs = srcobj->tx.last_tx_rate_mcs; + tgtobj->tx.mcast_last_tx_rate = srcobj->tx.mcast_last_tx_rate; + tgtobj->tx.mcast_last_tx_rate_mcs = srcobj->tx.mcast_last_tx_rate_mcs; + tgtobj->rx.last_rx_rate = srcobj->rx.last_rx_rate; +} + void dp_update_pdev_ingress_stats(struct dp_pdev *tgtobj, struct dp_vdev *srcobj) {