mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-26 12:47:53 +00:00
nl80211: Introduce scan flags to emphasize requested scan behavior
This commit defines new scan flags (LOW_SPAN, LOW_POWER, HIGH_LATENCY) to emphasize the requested scan behavior for the driver. These flags are optional and are mutually exclusive. The implementation of the respective functionality can be driver/hardware specific. These flags can be used to control the compromise between how long a scan takes, how much power it uses, and high accurate/complete the scan is in finding the BSSs. Signed-off-by: Sunil Dutt <usdutt@qti.qualcomm.com> Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
6335698e24
commit
5037a00992
@ -4945,6 +4945,9 @@ enum nl80211_feature_flags {
|
|||||||
* probe request tx deferral and suppression
|
* probe request tx deferral and suppression
|
||||||
* @NL80211_EXT_FEATURE_MFP_OPTIONAL: Driver supports the %NL80211_MFP_OPTIONAL
|
* @NL80211_EXT_FEATURE_MFP_OPTIONAL: Driver supports the %NL80211_MFP_OPTIONAL
|
||||||
* value in %NL80211_ATTR_USE_MFP.
|
* value in %NL80211_ATTR_USE_MFP.
|
||||||
|
* @NL80211_EXT_FEATURE_LOW_SPAN_SCAN: Driver supports low span scan.
|
||||||
|
* @NL80211_EXT_FEATURE_LOW_POWER_SCAN: Driver supports low power scan.
|
||||||
|
* @NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN: Driver supports high accuracy scan.
|
||||||
*
|
*
|
||||||
* @NUM_NL80211_EXT_FEATURES: number of extended features.
|
* @NUM_NL80211_EXT_FEATURES: number of extended features.
|
||||||
* @MAX_NL80211_EXT_FEATURES: highest extended feature index.
|
* @MAX_NL80211_EXT_FEATURES: highest extended feature index.
|
||||||
@ -4972,6 +4975,9 @@ enum nl80211_ext_feature_index {
|
|||||||
NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE,
|
NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE,
|
||||||
NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION,
|
NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION,
|
||||||
NL80211_EXT_FEATURE_MFP_OPTIONAL,
|
NL80211_EXT_FEATURE_MFP_OPTIONAL,
|
||||||
|
NL80211_EXT_FEATURE_LOW_SPAN_SCAN,
|
||||||
|
NL80211_EXT_FEATURE_LOW_POWER_SCAN,
|
||||||
|
NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN,
|
||||||
|
|
||||||
/* add new features before the definition below */
|
/* add new features before the definition below */
|
||||||
NUM_NL80211_EXT_FEATURES,
|
NUM_NL80211_EXT_FEATURES,
|
||||||
@ -5032,6 +5038,10 @@ enum nl80211_timeout_reason {
|
|||||||
* of NL80211_CMD_TRIGGER_SCAN and NL80211_CMD_START_SCHED_SCAN
|
* of NL80211_CMD_TRIGGER_SCAN and NL80211_CMD_START_SCHED_SCAN
|
||||||
* requests.
|
* requests.
|
||||||
*
|
*
|
||||||
|
* NL80211_SCAN_FLAG_LOW_SPAN, NL80211_SCAN_FLAG_LOW_POWER, and
|
||||||
|
* NL80211_SCAN_FLAG_HIGH_ACCURACY flags are exclusive of each other, i.e., only
|
||||||
|
* one of them can be used in the request.
|
||||||
|
*
|
||||||
* @NL80211_SCAN_FLAG_LOW_PRIORITY: scan request has low priority
|
* @NL80211_SCAN_FLAG_LOW_PRIORITY: scan request has low priority
|
||||||
* @NL80211_SCAN_FLAG_FLUSH: flush cache before scanning
|
* @NL80211_SCAN_FLAG_FLUSH: flush cache before scanning
|
||||||
* @NL80211_SCAN_FLAG_AP: force a scan even if the interface is configured
|
* @NL80211_SCAN_FLAG_AP: force a scan even if the interface is configured
|
||||||
@ -5059,7 +5069,20 @@ enum nl80211_timeout_reason {
|
|||||||
* and suppression (if it has received a broadcast Probe Response frame,
|
* and suppression (if it has received a broadcast Probe Response frame,
|
||||||
* Beacon frame or FILS Discovery frame from an AP that the STA considers
|
* Beacon frame or FILS Discovery frame from an AP that the STA considers
|
||||||
* a suitable candidate for (re-)association - suitable in terms of
|
* a suitable candidate for (re-)association - suitable in terms of
|
||||||
* SSID and/or RSSI
|
* SSID and/or RSSI.
|
||||||
|
* @NL80211_SCAN_FLAG_LOW_SPAN: Span corresponds to the total time taken to
|
||||||
|
* accomplish the scan. Thus, this flag intends the driver to perform the
|
||||||
|
* scan request with lesser span/duration. It is specific to the driver
|
||||||
|
* implementations on how this is accomplished. Scan accuracy may get
|
||||||
|
* impacted with this flag.
|
||||||
|
* @NL80211_SCAN_FLAG_LOW_POWER: This flag intends the scan attempts to consume
|
||||||
|
* optimal possible power. Drivers can resort to their specific means to
|
||||||
|
* optimize the power. Scan accuracy may get impacted with this flag.
|
||||||
|
* @NL80211_SCAN_FLAG_HIGH_ACCURACY: Accuracy here intends to the extent of scan
|
||||||
|
* results obtained. Thus HIGH_ACCURACY scan flag aims to get maximum
|
||||||
|
* possible scan results. This flag hints the driver to use the best
|
||||||
|
* possible scan configuration to improve the accuracy in scanning.
|
||||||
|
* Latency and power use may get impacted with this flag.
|
||||||
*/
|
*/
|
||||||
enum nl80211_scan_flags {
|
enum nl80211_scan_flags {
|
||||||
NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0,
|
NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0,
|
||||||
@ -5070,6 +5093,9 @@ enum nl80211_scan_flags {
|
|||||||
NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP = 1<<5,
|
NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP = 1<<5,
|
||||||
NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE = 1<<6,
|
NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE = 1<<6,
|
||||||
NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 1<<7,
|
NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 1<<7,
|
||||||
|
NL80211_SCAN_FLAG_LOW_SPAN = 1<<8,
|
||||||
|
NL80211_SCAN_FLAG_LOW_POWER = 1<<9,
|
||||||
|
NL80211_SCAN_FLAG_HIGH_ACCURACY = 1<<10,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -6715,8 +6715,17 @@ nl80211_check_scan_flags(struct wiphy *wiphy, struct wireless_dev *wdev,
|
|||||||
|
|
||||||
*flags = nla_get_u32(attrs[NL80211_ATTR_SCAN_FLAGS]);
|
*flags = nla_get_u32(attrs[NL80211_ATTR_SCAN_FLAGS]);
|
||||||
|
|
||||||
if ((*flags & NL80211_SCAN_FLAG_LOW_PRIORITY) &&
|
if (((*flags & NL80211_SCAN_FLAG_LOW_PRIORITY) &&
|
||||||
!(wiphy->features & NL80211_FEATURE_LOW_PRIORITY_SCAN))
|
!(wiphy->features & NL80211_FEATURE_LOW_PRIORITY_SCAN)) ||
|
||||||
|
((*flags & NL80211_SCAN_FLAG_LOW_SPAN) &&
|
||||||
|
!wiphy_ext_feature_isset(wiphy,
|
||||||
|
NL80211_EXT_FEATURE_LOW_SPAN_SCAN)) ||
|
||||||
|
((*flags & NL80211_SCAN_FLAG_LOW_POWER) &&
|
||||||
|
!wiphy_ext_feature_isset(wiphy,
|
||||||
|
NL80211_EXT_FEATURE_LOW_POWER_SCAN)) ||
|
||||||
|
((*flags & NL80211_SCAN_FLAG_HIGH_ACCURACY) &&
|
||||||
|
!wiphy_ext_feature_isset(wiphy,
|
||||||
|
NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN)))
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
if (*flags & NL80211_SCAN_FLAG_RANDOM_ADDR) {
|
if (*flags & NL80211_SCAN_FLAG_RANDOM_ADDR) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user