]> git.baikalelectronics.ru Git - kernel.git/commitdiff
wifi: mac80211: mlme: fix disassoc with MLO
authorJohannes Berg <johannes.berg@intel.com>
Fri, 22 Jul 2022 09:01:18 +0000 (11:01 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 22 Jul 2022 12:28:50 +0000 (14:28 +0200)
In MLO we shouldn't call ieee80211_bss_info_change_notify(),
call that only (for backward compatibility) without MLO, and
otherwise ieee80211_vif_cfg_change_notify().

Similarly, ieee80211_reset_erp_info() only applies to the
current link, and in MLO we assume the driver doesn't really
need that.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/mlme.c

index 8c614daedeb8edb4da400caaa8f5ba09e070e37e..3d4ab711f0d1ebd5d4584d36e23909b3b894bdd1 100644 (file)
@@ -2878,7 +2878,8 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
        sta_info_flush(sdata);
 
        /* finally reset all BSS / config parameters */
-       changed |= ieee80211_reset_erp_info(sdata);
+       if (!sdata->vif.valid_links)
+               changed |= ieee80211_reset_erp_info(sdata);
 
        ieee80211_led_assoc(local, 0);
        changed |= BSS_CHANGED_ASSOC;
@@ -2920,10 +2921,11 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
                changed |= BSS_CHANGED_QOS;
                /* The BSSID (not really interesting) and HT changed */
                changed |= BSS_CHANGED_BSSID | BSS_CHANGED_HT;
+               ieee80211_bss_info_change_notify(sdata, changed);
+       } else {
+               ieee80211_vif_cfg_change_notify(sdata, changed);
        }
 
-       ieee80211_bss_info_change_notify(sdata, changed);
-
        /* disassociated - set to defaults now */
        ieee80211_set_wmm_default(&sdata->deflink, false, false);