diff --git a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c index 4cbffd08431c..765778787d48 100644 --- a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c +++ b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c @@ -865,6 +865,7 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check( uint8_t channel = *con_ch; uint8_t temp_channel = 0; struct policy_mgr_psoc_priv_obj *pm_ctx; + bool sta_sap_scc_on_dfs_chan; pm_ctx = policy_mgr_get_context(psoc); if (!pm_ctx) { @@ -893,6 +894,9 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check( else if (!channel) channel = sap_ch; + sta_sap_scc_on_dfs_chan = + policy_mgr_is_sta_sap_scc_allowed_on_dfs_chan(psoc); + if (policy_mgr_valid_sta_channel_check(psoc, channel)) { if (wlan_reg_is_dfs_ch(pm_ctx->pdev, channel) || wlan_reg_is_passive_or_disable_ch( @@ -920,6 +924,11 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check( return QDF_STATUS_E_FAILURE; } } else { + if (wlan_reg_is_dfs_ch(pm_ctx->pdev, channel) && + sta_sap_scc_on_dfs_chan) { + policy_mgr_debug("STA SAP SCC is allowed on DFS channel"); + goto update_chan; + } policy_mgr_warn("Can't have concurrency on %d", channel); return QDF_STATUS_E_FAILURE; @@ -927,6 +936,7 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check( } } +update_chan: if (channel != sap_ch) *con_ch = channel;