Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb4c5e0d authored by Jouni Malinen's avatar Jouni Malinen Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarJouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Git-commit: ba6fbacf9c073effaedf0c52fe7e52e2baf67725
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git


Change-Id: Idfd211db838cdde40ecc02a1803eac5c1ebfbc77
CRs-fixed: 1004073
Signed-off-by: default avatarVidyullatha Kanchanapally <vidyullatha@codeaurora.org>
parent fdabe34a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1836,6 +1836,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;
@@ -1859,6 +1860,7 @@ struct cfg80211_connect_params {
	struct ieee80211_vht_cap vht_capa;
	struct ieee80211_vht_cap vht_capa_mask;
	bool pbss;
	const u8 *prev_bssid;
};

/**
+4 −0
Original line number Diff line number Diff line
@@ -7322,6 +7322,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]);
+4 −2
Original line number Diff line number Diff line
@@ -1166,6 +1166,7 @@ TRACE_EVENT(rdev_connect,
		__field(bool, privacy)
		__field(u32, wpa_versions)
		__field(u32, flags)
		MAC_ENTRY(prev_bssid)
	),
	TP_fast_assign(
		WIPHY_ASSIGN;
@@ -1177,13 +1178,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,