[PATCH v3 1/4] nl80211: set NL80211_SCAN_FLAG_COLOCATED_6GHZ in scan

Ilan Peer ilan.peer at intel.com
Sun Apr 10 00:51:56 PDT 2022


From: Tova Mussai <tova.mussai at intel.com>

Set NL80211_SCAN_FLAG_COLOCATED_6GHZ in the scan params to enable
scanning for co-located AP's found in 2.4/5 GHz bands when
not scanning passively. Do so only when collocated scanning
is not disabled by higher layer logic.

Signed-off-by: Tova Mussai <tova.mussai at intel.com>
Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski at intel.com>
Signed-off-by: Ilan Peer <ilan.peer at intel.com>
Signed-off-by: Avraham Stern <avraham.stern at intel.com>
---
 src/drivers/driver.h              | 10 ++++++++++
 src/drivers/driver_nl80211_scan.c | 11 +++++++++++
 wpa_supplicant/scan.c             |  1 +
 3 files changed, 22 insertions(+)

diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 111e7e4081..0e31d6e3fc 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -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
diff --git a/src/drivers/driver_nl80211_scan.c b/src/drivers/driver_nl80211_scan.c
index 1316084805..31e3308081 100644
--- a/src/drivers/driver_nl80211_scan.c
+++ b/src/drivers/driver_nl80211_scan.c
@@ -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");
 	}
diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c
index b0094ca6ca..31b694713b 100644
--- a/wpa_supplicant/scan.c
+++ b/wpa_supplicant/scan.c
@@ -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 =
-- 
2.25.1




More information about the Hostap mailing list