aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/cfg80211.h
diff options
context:
space:
mode:
authorLuciano Coelho <coelho@ti.com>2011-08-31 09:01:48 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-09-13 15:53:45 -0400
commita1f1c21c181be20a8b7e073e5292ff1fe77769fa (patch)
tree8b8e46d1dba26f4ef45d4e4d969cbda524d8a4c1 /include/net/cfg80211.h
parentcedb5412baeffd7326fc4869aa996d7f68d98ebb (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.h20
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 */
883struct 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