summaryrefslogtreecommitdiff
path: root/net/wireless/nl80211.c
diff options
context:
space:
mode:
authorWei Ni <wni@nvidia.com>2012-11-02 13:40:04 +0800
committerSimone Willett <swillett@nvidia.com>2012-11-20 17:32:27 -0800
commit666c26e13352b19da7197ed1ca4c7bc1046b0625 (patch)
treeee2dea819c9728a83deadcd2f71dffd6a864e4f5 /net/wireless/nl80211.c
parentc2f496f4fdc8598f2fe7e3cd0bfdb0abee5daf74 (diff)
mac80211&nl80211: support to abort a scan request on tx
mac80211 & nl80211: add support to abort a scan request on tx The original issue is the chromium issue: http://code.google.com/p/chromium-os/issues/detail?id=11485 This fix comes from: https://gerrit.chromium.org/gerrit/#change,5744 https://gerrit.chromium.org/gerrit/#change,5745 Since this change is for ChromeOs and will affect Android P2P function, so we add config option MAC80211_SCAN_ABORT for it. Bug 1051830 Change-Id: I77504f4d279f3f3d99b5e5f9d734480888d62193 Signed-off-by: Wei Ni <wni@nvidia.com> Reviewed-on: http://git-master/r/160777 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Rhyland Klein <rklein@nvidia.com> Reviewed-by: Bibhay Ranjan <bibhayr@nvidia.com> Tested-by: Bibhay Ranjan <bibhayr@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'net/wireless/nl80211.c')
-rw-r--r--net/wireless/nl80211.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index e0e655b4b80a..4371ed4729d5 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -136,6 +136,9 @@ static const struct nla_policy nl80211_policy[NL80211_ATTR_MAX+1] = {
[NL80211_ATTR_MGMT_SUBTYPE] = { .type = NLA_U8 },
[NL80211_ATTR_IE] = { .type = NLA_BINARY,
.len = IEEE80211_MAX_DATA_LEN },
+#ifdef CONFIG_MAC80211_SCAN_ABORT
+ [NL80211_ATTR_SCAN_FLAGS] = { .type = NLA_U32 },
+#endif
[NL80211_ATTR_SCAN_FREQUENCIES] = { .type = NLA_NESTED },
[NL80211_ATTR_SCAN_SSIDS] = { .type = NLA_NESTED },
@@ -3867,6 +3870,12 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
request->no_cck =
nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]);
+#ifdef CONFIG_MAC80211_SCAN_ABORT
+ if (info->attrs[NL80211_ATTR_SCAN_FLAGS])
+ request->flags = nla_get_u32(
+ info->attrs[NL80211_ATTR_SCAN_FLAGS]);
+#endif
+
request->dev = dev;
request->wiphy = &rdev->wiphy;
@@ -6923,6 +6932,10 @@ static int nl80211_add_scan_req(struct sk_buff *msg,
if (req->ie)
NLA_PUT(msg, NL80211_ATTR_IE, req->ie_len, req->ie);
+#ifdef CONFIG_MAC80211_SCAN_ABORT
+ NLA_PUT_U32(msg, NL80211_ATTR_SCAN_FLAGS, req->flags);
+#endif
+
return 0;
nla_put_failure:
return -ENOBUFS;