Forráskód Böngészése

qcacld-3.0: Allow MCC in exceptional cases

In AP + STA case allow MCC if the STA's channel
is DFS or passive or part of LTE avaoidance channel list

Change-Id: Iece69bf5d70d5e2ed9f9505a72c7a40f35d11b75
CRs-Fixed: 2127091
Jayachandran Sreekumaran 7 éve
szülő
commit
9575dec599
2 módosított fájl, 23 hozzáadás és 16 törlés
  1. 12 8
      core/hdd/src/wlan_hdd_hostapd.c
  2. 11 8
      core/sap/src/sap_fsm.c

+ 12 - 8
core/hdd/src/wlan_hdd_hostapd.c

@@ -2794,14 +2794,18 @@ QDF_STATUS wlan_hdd_get_channel_for_sap_restart(
 	 */
 	intf_ch = wlansap_check_cc_intf(hdd_ap_ctx->sapContext);
 	hdd_info("intf_ch: %d", intf_ch);
-	if (QDF_IS_STATUS_ERROR(
-		policy_mgr_valid_sap_conc_channel_check(hdd_ctx->hdd_psoc,
-			&intf_ch,
-			policy_mgr_mode_specific_get_channel(
-				hdd_ctx->hdd_psoc, PM_SAP_MODE)))) {
-		hdd_debug("can't move sap to %d",
-			hdd_sta_ctx->conn_info.operationChannel);
-		return QDF_STATUS_E_FAILURE;
+	if (QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION !=
+		hdd_ctx->config->WlanMccToSccSwitchMode) {
+		if (QDF_IS_STATUS_ERROR(
+			policy_mgr_valid_sap_conc_channel_check(
+				hdd_ctx->hdd_psoc,
+				&intf_ch,
+				policy_mgr_mode_specific_get_channel(
+					hdd_ctx->hdd_psoc, PM_SAP_MODE)))) {
+			hdd_debug("can't move sap to %d",
+				hdd_sta_ctx->conn_info.operationChannel);
+			return QDF_STATUS_E_FAILURE;
+		}
 	}
 
 	if (intf_ch == 0) {

+ 11 - 8
core/sap/src/sap_fsm.c

@@ -1764,14 +1764,17 @@ QDF_STATUS sap_goto_channel_sel(struct sap_context *sap_context,
 					sap_context->channel,
 					sap_context->csr_roamProfile.phyMode,
 					sap_context->cc_switch_mode);
-			if (QDF_IS_STATUS_ERROR(
-				policy_mgr_valid_sap_conc_channel_check(
-					mac_ctx->psoc, &con_ch,
-					sap_context->channel)))	{
-				QDF_TRACE(QDF_MODULE_ID_SAP,
-					QDF_TRACE_LEVEL_WARN,
-					FL("SAP can't start (no MCC)"));
-				return QDF_STATUS_E_ABORTED;
+			if (sap_context->cc_switch_mode !=
+		QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION) {
+				if (QDF_IS_STATUS_ERROR(
+					policy_mgr_valid_sap_conc_channel_check(
+						mac_ctx->psoc, &con_ch,
+						sap_context->channel)))	{
+					QDF_TRACE(QDF_MODULE_ID_SAP,
+						QDF_TRACE_LEVEL_WARN,
+						FL("SAP can't start (no MCC)"));
+					return QDF_STATUS_E_ABORTED;
+				}
 			}
 			if (con_ch && !wlan_reg_is_dfs_ch(mac_ctx->pdev,
 						con_ch)) {