Browse Source

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
Rachit Kankane 7 years ago
parent
commit
11ac4bc61c
2 changed files with 11 additions and 3 deletions
  1. 2 1
      core/sap/src/sap_module.c
  2. 9 2
      core/sme/src/csr/csr_util.c

+ 2 - 1
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;
 }

+ 9 - 2
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))