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
This commit is contained in:
Jayachandran Sreekumaran 2017-10-11 14:23:23 +05:30 • committed by snandini
commit 9575dec599
2 changed files with 23 additions and 16 deletions

View file

@ -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) {

View file

@ -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)) {