qcacmn: dp stats aggregate handling for bridge vap in mlo

dp stats aggregate handling for bridge vap in mlo

Change-Id: I4bb934776a35f76b091694de024b173c744ac087
CRs-Fixed: 3557225
This commit is contained in:
Mukul Dhiman
2023-07-21 10:28:35 +05:30
committed by Rahul Choudhary
parent aa6e9e0e0f
commit fe14b1901b

View File

@@ -662,6 +662,32 @@ void dp_aggregate_all_vdev_stats(
src_vdev_stats);
}
/**
* dp_mlo_vdev_stats_aggr_bridge_vap() - aggregate bridge vdev stats
* @be_vdev: Dp Vdev handle
* @bridge_vdev: Dp vdev handle for bridge vdev
* @arg: buffer for target vdev stats
*
* return: void
*/
static
void dp_mlo_vdev_stats_aggr_bridge_vap(struct dp_vdev_be *be_vdev,
struct dp_vdev *bridge_vdev,
void *arg)
{
struct cdp_vdev_stats *tgt_vdev_stats = (struct cdp_vdev_stats *)arg;
struct dp_vdev_be *bridge_be_vdev = NULL;
bridge_be_vdev = dp_get_be_vdev_from_dp_vdev(bridge_vdev);
if (!bridge_be_vdev)
return;
dp_aggregate_all_vdev_stats(tgt_vdev_stats, &bridge_vdev->stats);
dp_aggregate_all_vdev_stats(tgt_vdev_stats, &bridge_be_vdev->mlo_stats);
dp_vdev_iterate_peer(bridge_vdev, dp_update_vdev_stats, tgt_vdev_stats,
DP_MOD_ID_GENERIC_STATS);
}
/**
* dp_aggregate_interface_stats_based_on_peer_type() - aggregate stats at
* VDEV level based on peer type connected to vdev
@@ -679,11 +705,13 @@ void dp_aggregate_interface_stats_based_on_peer_type(
{
struct cdp_vdev_stats *tgt_vdev_stats = NULL;
struct dp_vdev_be *be_vdev = NULL;
struct dp_soc_be *be_soc = NULL;
if (!vdev || !vdev->pdev)
return;
tgt_vdev_stats = vdev_stats;
be_soc = dp_get_be_soc_from_dp_soc(vdev->pdev->soc);
be_vdev = dp_get_be_vdev_from_dp_vdev(vdev);
if (!be_vdev)
return;
@@ -692,6 +720,13 @@ void dp_aggregate_interface_stats_based_on_peer_type(
dp_aggregate_all_vdev_stats(tgt_vdev_stats,
&vdev->stats);
} else {
if (be_vdev->mcast_primary) {
dp_mlo_iter_ptnr_vdev(be_soc, be_vdev,
dp_mlo_vdev_stats_aggr_bridge_vap,
(void *)vdev_stats,
DP_MOD_ID_GENERIC_STATS,
DP_BRIDGE_VDEV_ITER);
}
dp_aggregate_vdev_ingress_stats(tgt_vdev_stats,
&vdev->stats);
dp_aggregate_vdev_stats_for_unmapped_peers(
@@ -719,14 +754,23 @@ void dp_aggregate_interface_stats(struct dp_vdev *vdev,
struct cdp_vdev_stats *vdev_stats)
{
struct dp_vdev_be *be_vdev = NULL;
struct dp_soc_be *be_soc = NULL;
if (!vdev || !vdev->pdev)
return;
be_soc = dp_get_be_soc_from_dp_soc(vdev->pdev->soc);
be_vdev = dp_get_be_vdev_from_dp_vdev(vdev);
if (!be_vdev)
return;
if (be_vdev->mcast_primary) {
dp_mlo_iter_ptnr_vdev(be_soc, be_vdev,
dp_mlo_vdev_stats_aggr_bridge_vap,
(void *)vdev_stats, DP_MOD_ID_GENERIC_STATS,
DP_BRIDGE_VDEV_ITER);
}
dp_aggregate_all_vdev_stats(vdev_stats, &be_vdev->mlo_stats);
dp_aggregate_all_vdev_stats(vdev_stats, &vdev->stats);
@@ -865,7 +909,7 @@ static QDF_STATUS dp_mlo_get_mld_vdev_stats(struct cdp_soc_t *soc_hdl,
dp_mlo_aggr_ptnr_iface_stats_mlo_links,
buf,
DP_MOD_ID_GENERIC_STATS,
DP_ALL_VDEV_ITER);
DP_LINK_VDEV_ITER);
} else {
dp_aggregate_interface_stats(vdev, buf);
@@ -876,7 +920,7 @@ static QDF_STATUS dp_mlo_get_mld_vdev_stats(struct cdp_soc_t *soc_hdl,
dp_mlo_iter_ptnr_vdev(be_soc, vdev_be,
dp_mlo_aggr_ptnr_iface_stats, buf,
DP_MOD_ID_GENERIC_STATS,
DP_ALL_VDEV_ITER);
DP_LINK_VDEV_ITER);
}
complete: