nl80211: Set NL80211_SCAN_FLAG_COLOCATED_6GHZ in scan

Set NL80211_SCAN_FLAG_COLOCATED_6GHZ in the scan parameters to enable
scanning for co-located APs discovered based on neighbor reports from
the 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@intel.com>
Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Avraham Stern <avraham.stern@intel.com>
This commit is contained in:
Tova Mussai 2022-04-24 12:57:52 +03:00 committed by Jouni Malinen
parent 96a7f38329
commit 3b8d9da9b5
3 changed files with 26 additions and 0 deletions

View file

@ -667,6 +667,16 @@ struct wpa_driver_scan_params {
*/ */
unsigned int p2p_include_6ghz:1; unsigned int p2p_include_6ghz:1;
/**
* non_coloc_6ghz - Force scanning of non-PSC 6 GHz channels
*
* If this is set, the driver should scan non-PSC channels from the
* scan request even if neighbor reports from 2.4/5 GHz APs did not
* report a co-located AP 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 * NOTE: Whenever adding new parameters here, please make sure
* wpa_scan_clone_params() and wpa_scan_free_params() get updated with * wpa_scan_clone_params() and wpa_scan_free_params() get updated with

View file

@ -203,6 +203,21 @@ nl80211_scan_common(struct i802_bss *bss, u8 cmd,
goto fail; goto fail;
} }
nla_nest_end(msg, ssids); nla_nest_end(msg, ssids);
/*
* If allowed, scan for 6 GHz APs that are reported by other
* APs. Note that if the flag is not set and 6 GHz channels are
* to be scanned, it is highly likely that non-PSC channels
* would be scanned passively (due to the Probe Request frame
* transmission restrictions mandated in IEEE Std 802.11ax-2021,
* 26.17.2.3 (Scanning in the 6 GHz band). Passive scanning of
* all non-PSC channels would take a significant amount of time.
*/
if (!params->non_coloc_6ghz) {
wpa_printf(MSG_DEBUG,
"nl80211: Scan co-located APs on 6 GHz");
scan_flags |= NL80211_SCAN_FLAG_COLOCATED_6GHZ;
}
} else { } else {
wpa_printf(MSG_DEBUG, "nl80211: Passive scan requested"); wpa_printf(MSG_DEBUG, "nl80211: Passive scan requested");
} }

View file

@ -2915,6 +2915,7 @@ wpa_scan_clone_params(const struct wpa_driver_scan_params *src)
params->relative_adjust_band = src->relative_adjust_band; params->relative_adjust_band = src->relative_adjust_band;
params->relative_adjust_rssi = src->relative_adjust_rssi; params->relative_adjust_rssi = src->relative_adjust_rssi;
params->p2p_include_6ghz = src->p2p_include_6ghz; params->p2p_include_6ghz = src->p2p_include_6ghz;
params->non_coloc_6ghz = src->non_coloc_6ghz;
return params; return params;
failed: failed: