|
@@ -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;
|