qcacmn: Update vdev rate stats when user requests for vdev stats

Rate statistics are updated at both peer and vdev level in Tx HTT
and Rx monitor path.

As per peer optimization changes, macro DP_UPDATE_EXTD_STATS is used
for aggregation of extended stats and this macro is used for both peer
and vdev stats query.
With this approach, when user requests for vdev stats, then rate stats
for vdev are updated with the rate values of the last peer present in
peer list of vdev and this results in wrong output.

In order to fix this, add an API to update the rate stats for vdev
separately.

Change-Id: I546a130e84f7fd577b80ace24e1dbb71000c0698
CRs-Fixed: 3132195
This commit is contained in:
Harsh Kumar Bijlani
2022-02-25 00:45:10 +05:30
committed by Madan Koyyalamudi
parent c27e15c6da
commit ff71f151fc
3 changed files with 22 additions and 0 deletions

View File

@@ -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)
{