diff --git a/components/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c b/components/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c index bc927cf01a..607800ad91 100644 --- a/components/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c +++ b/components/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c @@ -1030,13 +1030,17 @@ static QDF_STATUS policy_mgr_pcl_modification_for_sap( uint32_t *len) { QDF_STATUS status = QDF_STATUS_E_FAILURE; + struct policy_mgr_psoc_priv_obj *pm_ctx; bool mandatory_modified_pcl = false; bool nol_modified_pcl = false; bool dfs_modified_pcl = false; bool indoor_modified_pcl = false; + bool passive_modified_pcl = false; bool modified_final_pcl = false; bool srd_chan_enabled; + pm_ctx = policy_mgr_get_context(psoc); + if (policy_mgr_is_sap_mandatory_channel_set(psoc)) { status = policy_mgr_modify_sap_pcl_based_on_mandatory_channel( psoc, pcl_channels, pcl_weight, len); @@ -1084,6 +1088,15 @@ static QDF_STATUS policy_mgr_pcl_modification_for_sap( } indoor_modified_pcl = true; + status = policy_mgr_filter_passive_ch(pm_ctx->pdev, + pcl_channels, len); + + if (QDF_IS_STATUS_ERROR(status)) { + policy_mgr_err("failed to filter passive channels"); + return INVALID_CHANNEL_ID; + } + passive_modified_pcl = true; + status = policy_mgr_modify_sap_pcl_for_6G_channels(psoc, pcl_channels, pcl_weight, len); @@ -1093,11 +1106,12 @@ static QDF_STATUS policy_mgr_pcl_modification_for_sap( } modified_final_pcl = true; - policy_mgr_debug(" %d %d %d %d %d", + policy_mgr_debug("%d %d %d %d %d %d", mandatory_modified_pcl, nol_modified_pcl, dfs_modified_pcl, indoor_modified_pcl, + passive_modified_pcl, modified_final_pcl); return QDF_STATUS_SUCCESS; @@ -3570,15 +3584,16 @@ uint32_t policy_mgr_get_alternate_channel_for_sap( /* * The API is expected to select the channel on the * other band which is not same as sap's home and - * concurrent interference channel, so skip the sap - * home channel in PCL. + * concurrent interference channel (if present), + * so skip the sap home channel in PCL. */ if (pcl_channels[i] == sap_ch_freq) continue; if (!is_6ghz_cap && WLAN_REG_IS_6GHZ_CHAN_FREQ(pcl_channels[i])) continue; - if (policy_mgr_are_2_freq_on_same_mac(psoc, + if (policy_mgr_get_connection_count(psoc) && + policy_mgr_are_2_freq_on_same_mac(psoc, sap_ch_freq, pcl_channels[i])) continue;