qcacmn: vdev stats Support for MLO Hybrid Mode

Add vdev stats support for DP MLO Unified
and Hybrid Mode.
Add new CDP API for getting vdev stats for
NON_MLD interface.
Add support to get vdev stats for specific
vdev which is a part of MLO.

Change-Id: I72c8b25958649d473e1b65cee21810cd86951187
CRs-Fixed: 3455607
This commit is contained in:
Kenvish Butani
2023-04-05 18:58:01 +05:30
committed by Madan Koyyalamudi
parent fa5b39c322
commit ef68ac521f
12 changed files with 398 additions and 28 deletions

View File

@@ -2330,6 +2330,51 @@ dp_peer_update_state(struct dp_soc *soc,
QDF_MAC_ADDR_REF(peer->mac_addr.raw));
}
/**
* dp_vdev_iterate_specific_peer_type() - API to iterate through vdev peer
* list based on type of peer (Legacy or MLD peer)
*
* @vdev: DP vdev context
* @func: function to be called for each peer
* @arg: argument need to be passed to func
* @mod_id: module_id
* @peer_type: type of peer - MLO Link Peer or Legacy Peer
*
* Return: void
*/
static inline void
dp_vdev_iterate_specific_peer_type(struct dp_vdev *vdev,
dp_peer_iter_func *func,
void *arg, enum dp_mod_id mod_id,
enum dp_peer_type peer_type)
{
struct dp_peer *peer;
struct dp_peer *tmp_peer;
struct dp_soc *soc = NULL;
if (!vdev || !vdev->pdev || !vdev->pdev->soc)
return;
soc = vdev->pdev->soc;
qdf_spin_lock_bh(&vdev->peer_list_lock);
TAILQ_FOREACH_SAFE(peer, &vdev->peer_list,
peer_list_elem,
tmp_peer) {
if (dp_peer_get_ref(soc, peer, mod_id) ==
QDF_STATUS_SUCCESS) {
if ((peer_type == DP_PEER_TYPE_LEGACY &&
(IS_DP_LEGACY_PEER(peer))) ||
(peer_type == DP_PEER_TYPE_MLO_LINK &&
(IS_MLO_DP_LINK_PEER(peer)))) {
(*func)(soc, peer, arg);
}
dp_peer_unref_delete(peer, mod_id);
}
}
qdf_spin_unlock_bh(&vdev->peer_list_lock);
}
#ifdef REO_SHARED_QREF_TABLE_EN
void dp_peer_rx_reo_shared_qaddr_delete(struct dp_soc *soc,
struct dp_peer *peer);