From 9bc183ab64423fdd05304234610ed082d0701a58 Mon Sep 17 00:00:00 2001 From: Jianmin Zhu Date: Fri, 19 Jan 2024 16:39:53 +0800 Subject: [PATCH] qcacmn: Don't allow MLO SCC link When MLO partner link and assoc link are on same frequency, F/W will assert. To fix it, don't allow partner link is on same frequency of assoc link. Change-Id: I01338dbbc0845e6f6284e4a374f5ad0a5cada334 CRs-Fixed: 3706613 --- .../core/src/wlan_cm_bss_scoring.c | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/umac/mlme/connection_mgr/core/src/wlan_cm_bss_scoring.c b/umac/mlme/connection_mgr/core/src/wlan_cm_bss_scoring.c index a9c26402fc..8c36045a1c 100644 --- a/umac/mlme/connection_mgr/core/src/wlan_cm_bss_scoring.c +++ b/umac/mlme/connection_mgr/core/src/wlan_cm_bss_scoring.c @@ -1824,14 +1824,7 @@ static bool is_freq_dbs_or_sbs(struct wlan_objmgr_psoc *psoc, qdf_freq_t freq_1, qdf_freq_t freq_2) { - if ((policy_mgr_is_hw_sbs_capable(psoc) && - policy_mgr_are_sbs_chan(psoc, freq_1, freq_2)) || - (policy_mgr_is_hw_dbs_capable(psoc) && - !wlan_reg_is_same_band_freqs(freq_1, freq_2))) { - return true; - } - - return false; + return !policy_mgr_2_freq_always_on_same_mac(psoc, freq_1, freq_2); } #else @@ -1879,7 +1872,6 @@ enum MLO_TYPE cm_bss_mlo_type(struct wlan_objmgr_psoc *psoc, for (i = 0; i < entry->ml_info.num_links; i++) { if (!entry->ml_info.link_info[i].is_valid_link) continue; - multi_link = true; freq_entry = entry->channel.chan_freq; freq[i] = entry->ml_info.link_info[i].freq; entry_partner[i] = @@ -1887,8 +1879,17 @@ enum MLO_TYPE cm_bss_mlo_type(struct wlan_objmgr_psoc *psoc, &entry->ml_info.link_info[i].link_addr); if (entry_partner[i]) freq[i] = entry_partner[i]->channel.chan_freq; - if (is_freq_dbs_or_sbs(psoc, freq[i], freq_entry)) + if (is_freq_dbs_or_sbs(psoc, freq[i], freq_entry)) { return MLMR; + } else if (freq[i] == freq_entry) { + mlme_debug("Partner " QDF_MAC_ADDR_FMT + " freq %d same as assoc freq, invalid it", + QDF_MAC_ADDR_REF(entry->ml_info.link_info[i].link_addr.bytes), + freq[i]); + entry->ml_info.link_info[i].is_valid_link = false; + } else { + multi_link = true; + } } if (multi_link)