Commit efbabc11 authored by Veerendranath Jakkam's avatar Veerendranath Jakkam Committed by Johannes Berg
Browse files

cfg80211: Indicate MLO connection info in connect and roam callbacks



The MLO links used for connection with an MLD AP are decided by the
driver in case of SME offloaded to driver.

Add support for the drivers to indicate the information of links used
for MLO connection in connect and roam callbacks, update the connected
links information in wdev from connect/roam result sent by driver.
Also, send the connected links information to userspace.

Add a netlink flag attribute to indicate that userspace supports
handling of MLO connection. Drivers must not do MLO connection when this
flag is not set. This is to maintain backwards compatibility with older
supplicant versions which doesn't have support for MLO connection.

Signed-off-by: default avatarVeerendranath Jakkam <quic_vjakkam@quicinc.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 245e5ebc
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -807,7 +807,7 @@ void ath6kl_cfg80211_connect_event(struct ath6kl_vif *vif, u16 channel,
		cfg80211_put_bss(ar->wiphy, bss);
	} else if (vif->sme_state == SME_CONNECTED) {
		struct cfg80211_roam_info roam_info = {
			.bss = bss,
			.links[0].bss = bss,
			.req_ie = assoc_req_ie,
			.req_ie_len = assoc_req_len,
			.resp_ie = assoc_resp_ie,
+2 −2
Original line number Diff line number Diff line
@@ -1822,8 +1822,8 @@ wmi_evt_reassoc_status(struct wil6210_vif *vif, int id, void *d, int len)
	freq = ieee80211_channel_to_frequency(ch, NL80211_BAND_60GHZ);

	memset(&info, 0, sizeof(info));
	info.channel = ieee80211_get_channel(wiphy, freq);
	info.bss = vif->bss;
	info.links[0].channel = ieee80211_get_channel(wiphy, freq);
	info.links[0].bss = vif->bss;
	info.req_ie = assoc_req_ie;
	info.req_ie_len = assoc_req_ie_len;
	info.resp_ie = assoc_resp_ie;
+3 −3
Original line number Diff line number Diff line
@@ -6017,8 +6017,8 @@ brcmf_bss_roaming_done(struct brcmf_cfg80211_info *cfg,
done:
	kfree(buf);

	roam_info.channel = notify_channel;
	roam_info.bssid = profile->bssid;
	roam_info.links[0].channel = notify_channel;
	roam_info.links[0].bssid = profile->bssid;
	roam_info.req_ie = conn_info->req_ie;
	roam_info.req_ie_len = conn_info->req_ie_len;
	roam_info.resp_ie = conn_info->resp_ie;
@@ -6061,7 +6061,7 @@ brcmf_bss_connect_done(struct brcmf_cfg80211_info *cfg,
		} else {
			conn_params.status = WLAN_STATUS_AUTH_TIMEOUT;
		}
		conn_params.bssid = profile->bssid;
		conn_params.links[0].bssid = profile->bssid;
		conn_params.req_ie = conn_info->req_ie;
		conn_params.req_ie_len = conn_info->req_ie_len;
		conn_params.resp_ie = conn_info->resp_ie;
+3 −2
Original line number Diff line number Diff line
@@ -2813,8 +2813,9 @@ static void rndis_wlan_do_link_up_work(struct usbnet *usbdev)
						resp_ie_len, 0, GFP_KERNEL);
		} else {
			struct cfg80211_roam_info roam_info = {
				.channel = get_current_channel(usbdev, NULL),
				.bssid = bssid,
				.links[0].channel =
					get_current_channel(usbdev, NULL),
				.links[0].bssid = bssid,
				.req_ie = req_ie,
				.req_ie_len = req_ie_len,
				.resp_ie = resp_ie,
+2 −2
Original line number Diff line number Diff line
@@ -450,8 +450,8 @@ void rtw_cfg80211_indicate_connect(struct adapter *padapter)

		notify_channel = ieee80211_get_channel(wiphy, freq);

		roam_info.channel = notify_channel;
		roam_info.bssid = cur_network->network.mac_address;
		roam_info.links[0].channel = notify_channel;
		roam_info.links[0].bssid = cur_network->network.mac_address;
		roam_info.req_ie =
			pmlmepriv->assoc_req+sizeof(struct ieee80211_hdr_3addr)+2;
		roam_info.req_ie_len =
Loading