From: Ilan Peer <ilan.peer@xxxxxxxxx> Extend 'struct wpa_driver_scan_params' to allow higher layer to indicate if minimal probe request content should be included by the driver as part of the scan logic. Implement this with driver_nl80211, by setting NL80211_SCAN_FLAG_MIN_PREQ_CONTENT. Signed-off-by: Ilan Peer <ilan.peer@xxxxxxxxx> --- src/drivers/driver.h | 9 +++++++++ src/drivers/driver_nl80211_capa.c | 4 ++++ src/drivers/driver_nl80211_scan.c | 8 ++++++++ wpa_supplicant/scan.c | 1 + 4 files changed, 22 insertions(+) diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 12371a7d81..651a5f76d9 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -685,6 +685,13 @@ struct wpa_driver_scan_params { */ unsigned int non_coloc_6ghz:1; + /** + * min_probe_req_content - Minimize probe request content to only have + * minimal requirement elements, e.g., supported rates etc., and no + * additional elements other then those provided by user space. + */ + unsigned int min_probe_req_content:1; + /* * NOTE: Whenever adding new parameters here, please make sure * wpa_scan_clone_params() and wpa_scan_free_params() get updated with @@ -2238,6 +2245,8 @@ struct wpa_driver_capa { #define WPA_DRIVER_FLAGS2_PROT_RANGE_NEG_STA 0x0000000000002000ULL /** Driver supports MLO in station/AP mode */ #define WPA_DRIVER_FLAGS2_MLO 0x0000000000004000ULL +/** Driver supports minimal scan request probe content */ +#define WPA_DRIVER_FLAGS2_SCAN_MIN_PREQ 0x0000000000008000ULL u64 flags2; #define FULL_AP_CLIENT_STATE_SUPP(drv_flags) \ diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c index b904398ca3..4148f502c2 100644 --- a/src/drivers/driver_nl80211_capa.c +++ b/src/drivers/driver_nl80211_capa.c @@ -697,6 +697,10 @@ static void wiphy_info_ext_feature_flags(struct wiphy_info_data *info, capa->flags2 |= WPA_DRIVER_FLAGS2_PROT_RANGE_NEG_STA; capa->flags2 |= WPA_DRIVER_FLAGS2_PROT_RANGE_NEG_AP; } + + if (ext_feature_isset(ext_features, len, + NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT)) + capa->flags2 |= WPA_DRIVER_FLAGS2_SCAN_MIN_PREQ; } diff --git a/src/drivers/driver_nl80211_scan.c b/src/drivers/driver_nl80211_scan.c index 4d33b149d0..7ae6cecbcd 100644 --- a/src/drivers/driver_nl80211_scan.c +++ b/src/drivers/driver_nl80211_scan.c @@ -315,6 +315,14 @@ nl80211_scan_common(struct i802_bss *bss, u8 cmd, NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION; } + if (params->min_probe_req_content) { + if (drv->capa.flags2 & WPA_DRIVER_FLAGS2_SCAN_MIN_PREQ) + scan_flags |= NL80211_SCAN_FLAG_MIN_PREQ_CONTENT; + else + wpa_printf(MSG_DEBUG, + "nl80211: NL80211_SCAN_FLAG_MIN_PREQ_CONTENT not supported"); + } + if (scan_flags && nla_put_u32(msg, NL80211_ATTR_SCAN_FLAGS, scan_flags)) goto fail; diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c index c3984a40c9..166751a1f2 100644 --- a/wpa_supplicant/scan.c +++ b/wpa_supplicant/scan.c @@ -3045,6 +3045,7 @@ wpa_scan_clone_params(const struct wpa_driver_scan_params *src) params->relative_adjust_rssi = src->relative_adjust_rssi; params->p2p_include_6ghz = src->p2p_include_6ghz; params->non_coloc_6ghz = src->non_coloc_6ghz; + params->min_probe_req_content = src->min_probe_req_content; return params; failed: -- 2.38.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap