From d43b4a9f1761a19eec3b889e46604ef2514869e5 Mon Sep 17 00:00:00 2001 From: Venkateswara Swamy Bandaru Date: Thu, 18 Aug 2022 11:34:08 +0530 Subject: [PATCH] qcacmn: Fix for 3 link mlo connection issue Update CSA IE in per sta probe in already filled partner link info. Change-Id: I681813234f9dfbf0dc80009d2137765b6b5d3b62 CRs-Fixed: 3268027 --- .../scan/dispatcher/src/wlan_scan_utils_api.c | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/umac/scan/dispatcher/src/wlan_scan_utils_api.c b/umac/scan/dispatcher/src/wlan_scan_utils_api.c index 6f5fc00e34..0268e57f17 100644 --- a/umac/scan/dispatcher/src/wlan_scan_utils_api.c +++ b/umac/scan/dispatcher/src/wlan_scan_utils_api.c @@ -1989,30 +1989,29 @@ static void util_get_partner_link_info(struct scan_cache_entry *scan_entry) ielist_len = 0; } - scan_entry->ml_info.link_info[0].link_id = sta_ctrl & 0xF; - if (sta_ctrl & LINK_INFO_MAC_ADDR_PRESENT_BIT) { - qdf_mem_copy( - &scan_entry->ml_info.link_info[0].link_addr, - ml_ie + offset, 6); - scm_debug("Found partner info in ML IE"); - } + link_info = NULL; + for (link_idx = 0; link_idx < scan_entry->ml_info.num_links; + link_idx++) { + if (scan_entry->ml_info.link_info[link_idx].link_id == + (sta_ctrl & 0xF)) { + link_info = &scan_entry->ml_info.link_info[link_idx]; + } + } /* Get the pointers to CSA, ECSA, Max Channel Switch Time IE. */ - link_info = &scan_entry->ml_info.link_info[0]; + if (link_info) { + link_info->csa_ie = wlan_get_ie_ptr_from_eid + (WLAN_ELEMID_CHANSWITCHANN, ielist_offset, + ielist_len); - link_info->csa_ie = wlan_get_ie_ptr_from_eid - (WLAN_ELEMID_CHANSWITCHANN, ielist_offset, - ielist_len); + link_info->ecsa_ie = wlan_get_ie_ptr_from_eid + (WLAN_ELEMID_EXTCHANSWITCHANN, ielist_offset, + ielist_len); - link_info->ecsa_ie = wlan_get_ie_ptr_from_eid - (WLAN_ELEMID_EXTCHANSWITCHANN, ielist_offset, - ielist_len); - - eid = WLAN_EXTN_ELEMID_MAX_CHAN_SWITCH_TIME; - link_info->max_cst_ie = wlan_get_ext_ie_ptr_from_ext_id - (&eid, 1, ielist_offset, ielist_len); - - scan_entry->ml_info.num_links++; + eid = WLAN_EXTN_ELEMID_MAX_CHAN_SWITCH_TIME; + link_info->max_cst_ie = wlan_get_ext_ie_ptr_from_ext_id + (&eid, 1, ielist_offset, ielist_len); + } } }