From e89b339b239bcd645e85a4818bda6fa00c206b1f Mon Sep 17 00:00:00 2001 From: Srinivas Pitla Date: Mon, 7 Mar 2022 16:56:47 -0800 Subject: [PATCH] qcacmn: Select assoc peer's psoc as primary UMAC select assoc peer as primary umac, 1) if all links are from single PSOC 2) single link MLO connection Change-Id: Ia38e6809ef7d0201a2267051b8b4bcec7b36547f CRs-Fixed: 3203804 --- umac/mlo_mgr/inc/wlan_mlo_mgr_setup.h | 7 +++++++ umac/mlo_mgr/src/wlan_mlo_mgr_primary_umac.c | 20 ++++++++++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/umac/mlo_mgr/inc/wlan_mlo_mgr_setup.h b/umac/mlo_mgr/inc/wlan_mlo_mgr_setup.h index 449f4273a0..6a1cee1883 100644 --- a/umac/mlo_mgr/inc/wlan_mlo_mgr_setup.h +++ b/umac/mlo_mgr/inc/wlan_mlo_mgr_setup.h @@ -147,5 +147,12 @@ static inline void mlo_setup_init(void) static inline void mlo_setup_deinit(void) { } + +static inline bool +mlo_vdevs_check_single_soc(struct wlan_objmgr_vdev **wlan_vdev_list, + uint8_t vdev_count) +{ + return true; +} #endif /* WLAN_MLO_MULTI_CHIP */ #endif /* _WLAN_MLO_MGR_SETUP_H_ */ diff --git a/umac/mlo_mgr/src/wlan_mlo_mgr_primary_umac.c b/umac/mlo_mgr/src/wlan_mlo_mgr_primary_umac.c index cfa1ff5017..f65a69362c 100644 --- a/umac/mlo_mgr/src/wlan_mlo_mgr_primary_umac.c +++ b/umac/mlo_mgr/src/wlan_mlo_mgr_primary_umac.c @@ -20,6 +20,7 @@ #include "wlan_cmn.h" #include "wlan_mlo_mgr_peer.h" #include +#include #include #include @@ -359,13 +360,20 @@ QDF_STATUS mlo_peer_allocate_primary_umac( return QDF_STATUS_SUCCESS; } - /* If MLD is single chip MLO then assoc link becomes primary UMAC */ - /* - * if (ml_dev->single_chip_mlo) { - * mlo_peer_assign_primary_umac(ml_peer, peer_entry); - * return QDF_STATUS_SUCCESS; - * } + /* Select assoc peer's PSOC as primary UMAC in Multi-chip solution, + * 1) for single link MLO connection + * 2) if MLD is single chip MLO */ + if ((ml_peer->max_links == 1) || + (mlo_vdevs_check_single_soc(link_vdevs, ml_peer->max_links))) { + mlo_peer_assign_primary_umac(ml_peer, peer_entry); + mlo_info("MLD ID %d Assoc peer " QDF_MAC_ADDR_FMT " primary umac soc %d ", + ml_dev->mld_id, + QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes), + ml_peer->primary_umac_psoc_id); + + return QDF_STATUS_SUCCESS; + } if (mlo_ctx->mlo_is_force_primary_umac) { for (i = 0; i < WLAN_UMAC_MLO_MAX_VDEVS; i++) {