diff options
author | Luciano Coelho <coelho@ti.com> | 2011-08-31 09:01:48 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-09-13 15:53:45 -0400 |
commit | a1f1c21c181be20a8b7e073e5292ff1fe77769fa (patch) | |
tree | 8b8e46d1dba26f4ef45d4e4d969cbda524d8a4c1 /include/net/cfg80211.h | |
parent | cedb5412baeffd7326fc4869aa996d7f68d98ebb (diff) |
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>
Diffstat (limited to 'include/net/cfg80211.h')
-rw-r--r-- | include/net/cfg80211.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 01c6bde99a41..09024ab617f9 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -876,6 +876,15 @@ struct cfg80211_scan_request { | |||
876 | }; | 876 | }; |
877 | 877 | ||
878 | /** | 878 | /** |
879 | * struct cfg80211_match_set - sets of attributes to match | ||
880 | * | ||
881 | * @ssid: SSID to be matched | ||
882 | */ | ||
883 | struct cfg80211_match_set { | ||
884 | struct cfg80211_ssid ssid; | ||
885 | }; | ||
886 | |||
887 | /** | ||
879 | * struct cfg80211_sched_scan_request - scheduled scan request description | 888 | * struct cfg80211_sched_scan_request - scheduled scan request description |
880 | * | 889 | * |
881 | * @ssids: SSIDs to scan for (passed in the probe_reqs in active scans) | 890 | * @ssids: SSIDs to scan for (passed in the probe_reqs in active scans) |
@@ -884,6 +893,11 @@ struct cfg80211_scan_request { | |||
884 | * @interval: interval between each scheduled scan cycle | 893 | * @interval: interval between each scheduled scan cycle |
885 | * @ie: optional information element(s) to add into Probe Request or %NULL | 894 | * @ie: optional information element(s) to add into Probe Request or %NULL |
886 | * @ie_len: length of ie in octets | 895 | * @ie_len: length of ie in octets |
896 | * @match_sets: sets of parameters to be matched for a scan result | ||
897 | * entry to be considered valid and to be passed to the host | ||
898 | * (others are filtered out). | ||
899 | * If ommited, all results are passed. | ||
900 | * @n_match_sets: number of match sets | ||
887 | * @wiphy: the wiphy this was for | 901 | * @wiphy: the wiphy this was for |
888 | * @dev: the interface | 902 | * @dev: the interface |
889 | * @channels: channels to scan | 903 | * @channels: channels to scan |
@@ -895,6 +909,8 @@ struct cfg80211_sched_scan_request { | |||
895 | u32 interval; | 909 | u32 interval; |
896 | const u8 *ie; | 910 | const u8 *ie; |
897 | size_t ie_len; | 911 | size_t ie_len; |
912 | struct cfg80211_match_set *match_sets; | ||
913 | int n_match_sets; | ||
898 | 914 | ||
899 | /* internal */ | 915 | /* internal */ |
900 | struct wiphy *wiphy; | 916 | struct wiphy *wiphy; |
@@ -1814,6 +1830,9 @@ struct wiphy_wowlan_support { | |||
1814 | * any given scan | 1830 | * any given scan |
1815 | * @max_sched_scan_ssids: maximum number of SSIDs the device can scan | 1831 | * @max_sched_scan_ssids: maximum number of SSIDs the device can scan |
1816 | * for in any given scheduled scan | 1832 | * for in any given scheduled scan |
1833 | * @max_match_sets: maximum number of match sets the device can handle | ||
1834 | * when performing a scheduled scan, 0 if filtering is not | ||
1835 | * supported. | ||
1817 | * @max_scan_ie_len: maximum length of user-controlled IEs device can | 1836 | * @max_scan_ie_len: maximum length of user-controlled IEs device can |
1818 | * add to probe request frames transmitted during a scan, must not | 1837 | * add to probe request frames transmitted during a scan, must not |
1819 | * include fixed IEs like supported rates | 1838 | * include fixed IEs like supported rates |
@@ -1871,6 +1890,7 @@ struct wiphy { | |||
1871 | int bss_priv_size; | 1890 | int bss_priv_size; |
1872 | u8 max_scan_ssids; | 1891 | u8 max_scan_ssids; |
1873 | u8 max_sched_scan_ssids; | 1892 | u8 max_sched_scan_ssids; |
1893 | u8 max_match_sets; | ||
1874 | u16 max_scan_ie_len; | 1894 | u16 max_scan_ie_len; |
1875 | u16 max_sched_scan_ie_len; | 1895 | u16 max_sched_scan_ie_len; |
1876 | 1896 | ||