nl80211/cfg80211: add match filtering for sched_scan
Introduce filtering for scheduled scans to reduce the number of unnecessary results (which cause useless wake-ups). Add a new nested attribute where sets of parameters to be matched can be passed when starting a scheduled scan. Only scan results that match any of the sets will be returned. At this point, the set consists of a single parameter, an SSID. This can be easily extended in the future to support more complex matches. Signed-off-by: Luciano Coelho <coelho@ti.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
cedb5412ba
commit
a1f1c21c18
@@ -769,6 +769,8 @@ enum nl80211_commands {
|
||||
* that can be added to a scan request
|
||||
* @NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN: maximum length of information
|
||||
* elements that can be added to a scheduled scan request
|
||||
* @NL80211_ATTR_MAX_MATCH_SETS: maximum number of sets that can be
|
||||
* used with @NL80211_ATTR_SCHED_SCAN_MATCH, a wiphy attribute.
|
||||
*
|
||||
* @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz)
|
||||
* @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive
|
||||
@@ -1011,6 +1013,24 @@ enum nl80211_commands {
|
||||
|
||||
* @NL80211_ATTR_SCHED_SCAN_INTERVAL: Interval between scheduled scan
|
||||
* cycles, in msecs.
|
||||
|
||||
* @NL80211_ATTR_SCHED_SCAN_MATCH: Nested attribute with one or more
|
||||
* sets of attributes to match during scheduled scans. Only BSSs
|
||||
* that match any of the sets will be reported. These are
|
||||
* pass-thru filter rules.
|
||||
* For a match to succeed, the BSS must match all attributes of a
|
||||
* set. Since not every hardware supports matching all types of
|
||||
* attributes, there is no guarantee that the reported BSSs are
|
||||
* fully complying with the match sets and userspace needs to be
|
||||
* able to ignore them by itself.
|
||||
* Thus, the implementation is somewhat hardware-dependent, but
|
||||
* this is only an optimization and the userspace application
|
||||
* needs to handle all the non-filtered results anyway.
|
||||
* If the match attributes don't make sense when combined with
|
||||
* the values passed in @NL80211_ATTR_SCAN_SSIDS (eg. if an SSID
|
||||
* is included in the probe request, but the match attributes
|
||||
* will never let it go through), -EINVAL may be returned.
|
||||
* If ommited, no filtering is done.
|
||||
*
|
||||
* @NL80211_ATTR_INTERFACE_COMBINATIONS: Nested attribute listing the supported
|
||||
* interface combinations. In each nested item, it contains attributes
|
||||
@@ -1265,6 +1285,9 @@ enum nl80211_attrs {
|
||||
|
||||
NL80211_ATTR_ROAM_SUPPORT,
|
||||
|
||||
NL80211_ATTR_SCHED_SCAN_MATCH,
|
||||
NL80211_ATTR_MAX_MATCH_SETS,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -1723,6 +1746,26 @@ enum nl80211_reg_rule_attr {
|
||||
NL80211_REG_RULE_ATTR_MAX = __NL80211_REG_RULE_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_sched_scan_match_attr - scheduled scan match attributes
|
||||
* @__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID: attribute number 0 is reserved
|
||||
* @NL80211_SCHED_SCAN_MATCH_ATTR_SSID: SSID to be used for matching,
|
||||
* only report BSS with matching SSID.
|
||||
* @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter
|
||||
* attribute number currently defined
|
||||
* @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_sched_scan_match_attr {
|
||||
__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID,
|
||||
|
||||
NL80211_ATTR_SCHED_SCAN_MATCH_SSID,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
|
||||
NL80211_SCHED_SCAN_MATCH_ATTR_MAX =
|
||||
__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_reg_rule_flags - regulatory rule flags
|
||||
*
|
||||
|
Reference in New Issue
Block a user