@@ -651,6 +651,16 @@ struct wpa_driver_scan_params {
*/
unsigned int p2p_include_6ghz:1;
+ /**
+ * non_coloc_6ghz - force scanning non-PSC 6GHz channels
+ *
+ * If this is set, the driver should scan non-PSC channels from the
+ * scan request even if no co-located AP was reported on these channels.
+ * The default is to scan non-PSC channels only if a co-located AP was
+ * reported on the channel.
+ */
+ unsigned int non_coloc_6ghz:1;
+
/*
* NOTE: Whenever adding new parameters here, please make sure
* wpa_scan_clone_params() and wpa_scan_free_params() get updated with
@@ -203,6 +203,17 @@ nl80211_scan_common(struct i802_bss *bss, u8 cmd,
goto fail;
}
nla_nest_end(msg, ssids);
+
+ /*
+ * If allowed, scan for 6GHz APs that are reported by other
+ * APs. If the flag is not set and 6GHz channels are to be
+ * scanned, they will be scanned passively.
+ */
+ wpa_printf(MSG_DEBUG, "nl80211: non_coloc_6ghz=%u",
+ params->non_coloc_6ghz);
+
+ if (!params->non_coloc_6ghz)
+ scan_flags |= NL80211_SCAN_FLAG_COLOCATED_6GHZ;
} else {
wpa_printf(MSG_DEBUG, "nl80211: Passive scan requested");
}
@@ -2872,6 +2872,7 @@ wpa_scan_clone_params(const struct wpa_driver_scan_params *src)
params->duration = src->duration;
params->duration_mandatory = src->duration_mandatory;
params->oce_scan = src->oce_scan;
+ params->non_coloc_6ghz = src->non_coloc_6ghz;
if (src->sched_scan_plans_num > 0) {
params->sched_scan_plans =