summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-09-02 13:52:27 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-09-02 13:52:27 -0700
commitd9fed05410462d58dd0f69609d6469782e03c753 (patch)
treefd6227c01a168d7ab9afbc0a42f3b6e03f0ad66d
parent01b7812ef9f2a465461be5e1938a3601ff2722c4 (diff)
parent5a9bcc929f3a064dbb3e1146e55f0166c7b369ee (diff)
Merge "cfg80211: Add option to specify previous BSSID for Connect command"
-rw-r--r--include/net/cfg80211.h2
-rw-r--r--net/wireless/nl80211.c4
-rw-r--r--net/wireless/trace.h6
3 files changed, 10 insertions, 2 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 3ee07db23049..73b0fbe034fb 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1898,6 +1898,7 @@ struct cfg80211_ibss_params {
* @vht_capa_mask: The bits of vht_capa which are to be used.
* @pbss: if set, connect to a PCP instead of AP. Valid for DMG
* networks.
+ * @prev_bssid: previous BSSID, if not %NULL use reassociate frame
*/
struct cfg80211_connect_params {
struct ieee80211_channel *channel;
@@ -1921,6 +1922,7 @@ struct cfg80211_connect_params {
struct ieee80211_vht_cap vht_capa;
struct ieee80211_vht_cap vht_capa_mask;
bool pbss;
+ const u8 *prev_bssid;
};
/**
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index c4ab1abcf514..913843530213 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -7938,6 +7938,10 @@ static int nl80211_connect(struct sk_buff *skb, struct genl_info *info)
connect.mfp = NL80211_MFP_NO;
}
+ if (info->attrs[NL80211_ATTR_PREV_BSSID])
+ connect.prev_bssid =
+ nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]);
+
if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) {
connect.channel = nl80211_get_valid_chan(
wiphy, info->attrs[NL80211_ATTR_WIPHY_FREQ]);
diff --git a/net/wireless/trace.h b/net/wireless/trace.h
index 43edcf8f6d5e..c800ad6dd5dd 100644
--- a/net/wireless/trace.h
+++ b/net/wireless/trace.h
@@ -1221,6 +1221,7 @@ TRACE_EVENT(rdev_connect,
__field(bool, privacy)
__field(u32, wpa_versions)
__field(u32, flags)
+ MAC_ENTRY(prev_bssid)
),
TP_fast_assign(
WIPHY_ASSIGN;
@@ -1232,13 +1233,14 @@ TRACE_EVENT(rdev_connect,
__entry->privacy = sme->privacy;
__entry->wpa_versions = sme->crypto.wpa_versions;
__entry->flags = sme->flags;
+ MAC_ASSIGN(prev_bssid, sme->prev_bssid);
),
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT
", ssid: %s, auth type: %d, privacy: %s, wpa versions: %u, "
- "flags: %u",
+ "flags: %u, previous bssid: " MAC_PR_FMT,
WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid), __entry->ssid,
__entry->auth_type, BOOL_TO_STR(__entry->privacy),
- __entry->wpa_versions, __entry->flags)
+ __entry->wpa_versions, __entry->flags, MAC_PR_ARG(prev_bssid))
);
TRACE_EVENT(rdev_set_cqm_rssi_config,