From 11ac4bc61c783d5ca8d7d24f609e355d11a10bc4 Mon Sep 17 00:00:00 2001 From: Rachit Kankane Date: Mon, 18 Sep 2017 19:58:07 +0530 Subject: [PATCH] qcacld-3.0: Update for 3port channel overlap Update to find channel overlap in case of 3-port concurrency. The changes are made as mentioned below: 1. Find active session on same band channel 2. If found, then set same channel to achieve SCC Change-Id: I87ba2121608c789814b1213dc807fed82fd0f882 CRs-Fixed: 2127091 --- core/sap/src/sap_module.c | 3 ++- core/sme/src/csr/csr_util.c | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) 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))