diff --git a/core/sap/src/sap_module.c b/core/sap/src/sap_module.c index ccbf7c1b2bca..5b625c48795e 100644 --- a/core/sap/src/sap_module.c +++ b/core/sap/src/sap_module.c @@ -495,7 +495,8 @@ uint16_t wlansap_check_cc_intf(struct sap_context *sap_ctx) "%s: Invalid MAC context from p_cds_gctx", __func__); return 0; } - intf_ch = sme_check_concurrent_channel_overlap(hHal, 0, 0, + intf_ch = sme_check_concurrent_channel_overlap(hHal, sap_ctx->channel, + sap_ctx->csr_roamProfile.phyMode, sap_ctx->cc_switch_mode); return intf_ch; } diff --git a/core/sme/src/csr/csr_util.c b/core/sme/src/csr/csr_util.c index 157f24f4052f..e46e329af8ff 100644 --- a/core/sme/src/csr/csr_util.c +++ b/core/sme/src/csr/csr_util.c @@ -1235,6 +1235,9 @@ uint16_t csr_check_concurrent_channel_overlap(tpAniSirGlobal mac_ctx, i, sap_ch, sap_hbw, sap_cfreq, intf_ch, intf_hbw, intf_cfreq); } + if (intf_ch && ((intf_ch > 14 && sap_ch > 14) || + (intf_ch <= 14 && sap_ch <= 14))) + break; } sme_debug("intf_ch:%d sap_ch:%d cc_switch_mode:%d, dbs:%d", @@ -1246,7 +1249,9 @@ uint16_t csr_check_concurrent_channel_overlap(tpAniSirGlobal mac_ctx, cc_switch_mode != QDF_MCC_TO_SCC_SWITCH_FORCE_WITHOUT_DISCONNECTION && cc_switch_mode != - QDF_MCC_TO_SCC_SWITCH_WITH_FAVORITE_CHANNEL) { + QDF_MCC_TO_SCC_SWITCH_WITH_FAVORITE_CHANNEL && + cc_switch_mode != + QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION) { sap_lfreq = sap_cfreq - sap_hbw; sap_hfreq = sap_cfreq + sap_hbw; intf_lfreq = intf_cfreq - intf_hbw; @@ -1269,7 +1274,9 @@ uint16_t csr_check_concurrent_channel_overlap(tpAniSirGlobal mac_ctx, (cc_switch_mode == QDF_MCC_TO_SCC_SWITCH_FORCE_WITHOUT_DISCONNECTION) || (cc_switch_mode == - QDF_MCC_TO_SCC_SWITCH_WITH_FAVORITE_CHANNEL))) { + QDF_MCC_TO_SCC_SWITCH_WITH_FAVORITE_CHANNEL) || + (cc_switch_mode == + QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION))) { if (!((intf_ch <= 14 && sap_ch <= 14) || (intf_ch > 14 && sap_ch > 14))) { if (policy_mgr_is_dbs_enable(mac_ctx->psoc))