summaryrefslogtreecommitdiffstats
path: root/net/wireless/nl80211.c
diff options
context:
space:
mode:
authorSam Leffler <sleffler@chromium.org>2012-10-11 21:03:32 -0700
committerJohannes Berg <johannes.berg@intel.com>2012-10-18 09:01:50 +0200
commit46856bbf0f0412c12e9674df68822cb531d49327 (patch)
treeef5a3cb5642a6736e5bae7f1bafd9fd48f98a59f /net/wireless/nl80211.c
parente8e27c668bf5977d9fe1a64d0b69598ff9e292b7 (diff)
downloadlinux-46856bbf0f0412c12e9674df68822cb531d49327.tar.gz
linux-46856bbf0f0412c12e9674df68822cb531d49327.tar.bz2
linux-46856bbf0f0412c12e9674df68822cb531d49327.zip
cfg80211: add scan flag to indicate its priority
Add NL80211_SCAN_FLAG_LOW_PRIORITY flag support. It tells drivers that this is a low priority scan request, so that they can take necessary action. Drivers need to advertise low priority scan capability during registration. 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> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/nl80211.c')
-rw-r--r--net/wireless/nl80211.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index dc08211c6c6b..aee252d65b8f 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -4368,9 +4368,15 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
}
}
- if (info->attrs[NL80211_ATTR_SCAN_FLAGS])
+ if (info->attrs[NL80211_ATTR_SCAN_FLAGS]) {
request->flags = nla_get_u32(
info->attrs[NL80211_ATTR_SCAN_FLAGS]);
+ if ((request->flags & NL80211_SCAN_FLAG_LOW_PRIORITY) &&
+ !(wiphy->features & NL80211_FEATURE_LOW_PRIORITY_SCAN)) {
+ err = -EOPNOTSUPP;
+ goto out_free;
+ }
+ }
request->no_cck =
nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]);
@@ -4603,9 +4609,15 @@ static int nl80211_start_sched_scan(struct sk_buff *skb,
request->ie_len);
}
- if (info->attrs[NL80211_ATTR_SCAN_FLAGS])
+ if (info->attrs[NL80211_ATTR_SCAN_FLAGS]) {
request->flags = nla_get_u32(
info->attrs[NL80211_ATTR_SCAN_FLAGS]);
+ if ((request->flags & NL80211_SCAN_FLAG_LOW_PRIORITY) &&
+ !(wiphy->features & NL80211_FEATURE_LOW_PRIORITY_SCAN)) {
+ err = -EOPNOTSUPP;
+ goto out_free;
+ }
+ }
request->dev = dev;
request->wiphy = &rdev->wiphy;