wifi: mac80211: Create resources for disabled links
authorBenjamin Berg <benjamin.berg@intel.com>
Mon, 25 Sep 2023 15:30:29 +0000 (17:30 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 26 Sep 2023 07:12:47 +0000 (09:12 +0200)
When associating to an MLD AP, links may be disabled. Create all
resources associated with a disabled link so that we can later enable it
without having to create these resources on the fly.

Fixes: 6d543b34dbcf ("wifi: mac80211: Support disabled links during association")
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Link: https://lore.kernel.org/r/20230925173028.f9afdb26f6c7.I4e6e199aaefc1bf017362d64f3869645fa6830b5@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/mlme.c

index 0e61eb5..0c91989 100644 (file)
@@ -5130,9 +5130,10 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
                                continue;
 
                        valid_links |= BIT(link_id);
-                       if (assoc_data->link[link_id].disabled) {
+                       if (assoc_data->link[link_id].disabled)
                                dormant_links |= BIT(link_id);
-                       } else if (link_id != assoc_data->assoc_link_id) {
+
+                       if (link_id != assoc_data->assoc_link_id) {
                                err = ieee80211_sta_allocate_link(sta, link_id);
                                if (err)
                                        goto out_err;
@@ -5147,7 +5148,7 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
                struct ieee80211_link_data *link;
                struct link_sta_info *link_sta;
 
-               if (!cbss || assoc_data->link[link_id].disabled)
+               if (!cbss)
                        continue;
 
                link = sdata_dereference(sdata->link[link_id], sdata);