mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 05:02:12 +00:00
cfg80211: Add option to specify previous BSSID for Connect command
This extends NL80211_CMD_CONNECT to allow the NL80211_ATTR_PREV_BSSID attribute to be used similarly to way this was already allowed with NL80211_CMD_ASSOCIATE. This allows user space to request reassociation (instead of association) when already connected to an AP. This provides an option to reassociate within an ESS without having to disconnect and associate with the AP. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
918fe04b28
commit
ba6fbacf9c
@ -1925,6 +1925,7 @@ struct cfg80211_bss_selection {
|
|||||||
* @pbss: if set, connect to a PCP instead of AP. Valid for DMG
|
* @pbss: if set, connect to a PCP instead of AP. Valid for DMG
|
||||||
* networks.
|
* networks.
|
||||||
* @bss_select: criteria to be used for BSS selection.
|
* @bss_select: criteria to be used for BSS selection.
|
||||||
|
* @prev_bssid: previous BSSID, if not %NULL use reassociate frame
|
||||||
*/
|
*/
|
||||||
struct cfg80211_connect_params {
|
struct cfg80211_connect_params {
|
||||||
struct ieee80211_channel *channel;
|
struct ieee80211_channel *channel;
|
||||||
@ -1949,6 +1950,7 @@ struct cfg80211_connect_params {
|
|||||||
struct ieee80211_vht_cap vht_capa_mask;
|
struct ieee80211_vht_cap vht_capa_mask;
|
||||||
bool pbss;
|
bool pbss;
|
||||||
struct cfg80211_bss_selection bss_select;
|
struct cfg80211_bss_selection bss_select;
|
||||||
|
const u8 *prev_bssid;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -8058,6 +8058,10 @@ static int nl80211_connect(struct sk_buff *skb, struct genl_info *info)
|
|||||||
connect.mfp = NL80211_MFP_NO;
|
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]) {
|
if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) {
|
||||||
connect.channel = nl80211_get_valid_chan(
|
connect.channel = nl80211_get_valid_chan(
|
||||||
wiphy, info->attrs[NL80211_ATTR_WIPHY_FREQ]);
|
wiphy, info->attrs[NL80211_ATTR_WIPHY_FREQ]);
|
||||||
|
@ -1259,6 +1259,7 @@ TRACE_EVENT(rdev_connect,
|
|||||||
__field(bool, privacy)
|
__field(bool, privacy)
|
||||||
__field(u32, wpa_versions)
|
__field(u32, wpa_versions)
|
||||||
__field(u32, flags)
|
__field(u32, flags)
|
||||||
|
MAC_ENTRY(prev_bssid)
|
||||||
),
|
),
|
||||||
TP_fast_assign(
|
TP_fast_assign(
|
||||||
WIPHY_ASSIGN;
|
WIPHY_ASSIGN;
|
||||||
@ -1270,13 +1271,14 @@ TRACE_EVENT(rdev_connect,
|
|||||||
__entry->privacy = sme->privacy;
|
__entry->privacy = sme->privacy;
|
||||||
__entry->wpa_versions = sme->crypto.wpa_versions;
|
__entry->wpa_versions = sme->crypto.wpa_versions;
|
||||||
__entry->flags = sme->flags;
|
__entry->flags = sme->flags;
|
||||||
|
MAC_ASSIGN(prev_bssid, sme->prev_bssid);
|
||||||
),
|
),
|
||||||
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT
|
TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT
|
||||||
", ssid: %s, auth type: %d, privacy: %s, wpa versions: %u, "
|
", 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,
|
WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid), __entry->ssid,
|
||||||
__entry->auth_type, BOOL_TO_STR(__entry->privacy),
|
__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,
|
TRACE_EVENT(rdev_set_cqm_rssi_config,
|
||||||
|
Loading…
Reference in New Issue
Block a user