From d261c841e3e14499c464b5e057f445991198204a Mon Sep 17 00:00:00 2001 From: Sai Rupesh Chevuru Date: Wed, 7 Jun 2023 15:13:41 +0530 Subject: [PATCH] qcacmn: API to get the number of links for a peer from CP API to get the number of links for a peer from CP Change-Id: I63b118a339f591f0a86ddcc29c392dc5f9803e01 CRs-Fixed: 3521689 --- dp/inc/cdp_txrx_ops.h | 6 ++++++ dp/wifi3.0/dp_main.c | 25 +++++++---------------- umac/mlo_mgr/src/wlan_mlo_mgr_peer_list.c | 2 ++ 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h index 7259605ce7..8834636004 100644 --- a/dp/inc/cdp_txrx_ops.h +++ b/dp/inc/cdp_txrx_ops.h @@ -1586,6 +1586,12 @@ struct ol_if_ops { uint8_t *target_pdev_id); bool (*is_roam_inprogress)(uint32_t vdev_id); enum QDF_GLOBAL_MODE (*get_con_mode)(void); +#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP) + uint8_t (*peer_get_num_mlo_links)(struct cdp_ctrl_objmgr_psoc *psoc, + uint8_t vdev_id, + uint8_t *peer_macaddr, + bool is_mld_peer); +#endif #ifdef QCA_PEER_MULTIQ_SUPPORT int (*peer_ast_flowid_map)(struct cdp_ctrl_objmgr_psoc *ol_soc_handle, uint16_t peer_id, uint8_t vdev_id, diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 62f0b8bc5e..9486eaed72 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -4145,25 +4145,14 @@ void dp_peer_delete(struct dp_soc *soc, static uint8_t dp_mlo_get_num_link_peer(struct dp_soc *soc, struct dp_peer *peer) { - struct dp_peer *mld_peer = NULL; - struct dp_mld_link_peers link_peers_info = {0}; - uint8_t num_link = 0; + if (soc->cdp_soc.ol_ops->peer_get_num_mlo_links) + return soc->cdp_soc.ol_ops->peer_get_num_mlo_links( + soc->ctrl_psoc, + peer->vdev->vdev_id, + peer->mac_addr.raw, + IS_MLO_DP_MLD_PEER(peer)); - if (IS_MLO_DP_LINK_PEER(peer)) - mld_peer = DP_GET_MLD_PEER_FROM_PEER(peer); - - if (IS_MLO_DP_MLD_PEER(peer)) - mld_peer = peer; - - if (!mld_peer) - return 0; - - /* get link peers with reference */ - dp_get_link_peers_ref_from_mld_peer(soc, mld_peer, &link_peers_info, - DP_MOD_ID_CDP); - num_link = link_peers_info.num_links; - dp_release_link_peers_ref(&link_peers_info, DP_MOD_ID_CDP); - return num_link; + return 0; } void dp_mlo_peer_delete(struct dp_soc *soc, struct dp_peer *peer, void *arg) diff --git a/umac/mlo_mgr/src/wlan_mlo_mgr_peer_list.c b/umac/mlo_mgr/src/wlan_mlo_mgr_peer_list.c index 95f569e817..b79223fbcf 100644 --- a/umac/mlo_mgr/src/wlan_mlo_mgr_peer_list.c +++ b/umac/mlo_mgr/src/wlan_mlo_mgr_peer_list.c @@ -255,6 +255,8 @@ struct wlan_mlo_peer_context *wlan_mlo_get_mlpeer_by_linkmac( return NULL; } +qdf_export_symbol(wlan_mlo_get_mlpeer_by_linkmac); + struct wlan_mlo_peer_context *wlan_mlo_get_mlpeer_by_aid( struct wlan_mlo_dev_context *ml_dev, uint16_t assoc_id)