aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorSam Leffler <sleffler@chromium.org>2012-10-12 00:03:34 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-10-18 03:01:52 -0400
commit15d6030b4bec618742b8b9ccae9209c8f9e4a916 (patch)
tree97856b3f62e268880659757a85df59151958044d /include
parentb292219fa5061e2657ecf518b48426913d0ddae6 (diff)
cfg80211: add support for flushing old scan results
Add an NL80211_SCAN_FLAG_FLUSH flag that causes old bss cache entries to be flushed on scan completion. This is useful for collecting guaranteed fresh scan/survey result (e.g. on resume). For normal scan, flushing only happens on successful completion of a scan; i.e. it does not happen if the scan is aborted. For scheduled scan, previous scan results are flushed everytime when we get new scan results. This feature is enabled by default. Drivers can disable it by unsetting the NL80211_FEATURE_SCAN_FLUSH flag. Signed-off-by: Sam Leffler <sleffler@chromium.org> Tested-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> [invert polarity of feature flag to account for old kernels] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include')
-rw-r--r--include/net/cfg80211.h3
-rw-r--r--include/uapi/linux/nl80211.h4
2 files changed, 7 insertions, 0 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index d95da8f55f6e..aa0e4a12308c 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1005,6 +1005,7 @@ struct cfg80211_ssid {
1005 * @flags: bit field of flags controlling operation 1005 * @flags: bit field of flags controlling operation
1006 * @rates: bitmap of rates to advertise for each band 1006 * @rates: bitmap of rates to advertise for each band
1007 * @wiphy: the wiphy this was for 1007 * @wiphy: the wiphy this was for
1008 * @scan_start: time (in jiffies) when the scan started
1008 * @wdev: the wireless device to scan for 1009 * @wdev: the wireless device to scan for
1009 * @aborted: (internal) scan request was notified as aborted 1010 * @aborted: (internal) scan request was notified as aborted
1010 * @no_cck: used to send probe requests at non CCK rate in 2GHz band 1011 * @no_cck: used to send probe requests at non CCK rate in 2GHz band
@@ -1023,6 +1024,7 @@ struct cfg80211_scan_request {
1023 1024
1024 /* internal */ 1025 /* internal */
1025 struct wiphy *wiphy; 1026 struct wiphy *wiphy;
1027 unsigned long scan_start;
1026 bool aborted; 1028 bool aborted;
1027 bool no_cck; 1029 bool no_cck;
1028 1030
@@ -1074,6 +1076,7 @@ struct cfg80211_sched_scan_request {
1074 /* internal */ 1076 /* internal */
1075 struct wiphy *wiphy; 1077 struct wiphy *wiphy;
1076 struct net_device *dev; 1078 struct net_device *dev;
1079 unsigned long scan_start;
1077 1080
1078 /* keep last */ 1081 /* keep last */
1079 struct ieee80211_channel *channels[0]; 1082 struct ieee80211_channel *channels[0];
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index c68e15e41321..0e6277a06c29 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -3049,6 +3049,7 @@ enum nl80211_ap_sme_features {
3049 * equals (SAE) with user space SME (NL80211_CMD_AUTHENTICATE) in station 3049 * equals (SAE) with user space SME (NL80211_CMD_AUTHENTICATE) in station
3050 * mode 3050 * mode
3051 * @NL80211_FEATURE_LOW_PRIORITY_SCAN: This driver supports low priority scan 3051 * @NL80211_FEATURE_LOW_PRIORITY_SCAN: This driver supports low priority scan
3052 * @NL80211_FEATURE_SCAN_FLUSH: Scan flush is supported
3052 */ 3053 */
3053enum nl80211_feature_flags { 3054enum nl80211_feature_flags {
3054 NL80211_FEATURE_SK_TX_STATUS = 1 << 0, 3055 NL80211_FEATURE_SK_TX_STATUS = 1 << 0,
@@ -3058,6 +3059,7 @@ enum nl80211_feature_flags {
3058 NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 1 << 4, 3059 NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 1 << 4,
3059 NL80211_FEATURE_SAE = 1 << 5, 3060 NL80211_FEATURE_SAE = 1 << 5,
3060 NL80211_FEATURE_LOW_PRIORITY_SCAN = 1 << 6, 3061 NL80211_FEATURE_LOW_PRIORITY_SCAN = 1 << 6,
3062 NL80211_FEATURE_SCAN_FLUSH = 1 << 7,
3061}; 3063};
3062 3064
3063/** 3065/**
@@ -3100,9 +3102,11 @@ enum nl80211_connect_failed_reason {
3100 * requests. 3102 * requests.
3101 * 3103 *
3102 * @NL80211_SCAN_FLAG_LOW_PRIORITY: scan request has low priority 3104 * @NL80211_SCAN_FLAG_LOW_PRIORITY: scan request has low priority
3105 * @NL80211_SCAN_FLAG_FLUSH: flush cache before scanning
3103 */ 3106 */
3104enum nl80211_scan_flags { 3107enum nl80211_scan_flags {
3105 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0, 3108 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0,
3109 NL80211_SCAN_FLAG_FLUSH = 1<<1,
3106}; 3110};
3107 3111
3108#endif /* __LINUX_NL80211_H */ 3112#endif /* __LINUX_NL80211_H */