]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mac80211: make monitor link info check more specific
authorBenjamin Berg <benjamin.berg@intel.com>
Mon, 10 Nov 2025 12:20:20 +0000 (14:20 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 11 Nov 2025 10:05:19 +0000 (11:05 +0100)
Verify that only one of the permitted change flags is set when changing
the link of a monitor interface. Before the WARN_ON_ONCE would accept
anything if mu_mimo_owner was set.

Also, split out the mu_mimo_owner flag and enable it for all interface
types. The option is set during association when VHT is available and it
is not expected that any configuration of the MU groups is done without
it being set.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20251110141948.6696dba8678d.Icafac3be4724825dd6140e4407bae3a2adb593a5@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/driver-ops.c
net/mac80211/main.c

index ba9fba165926585134cdd06abb9c9a8f0da80400..49753b73aba26551cfa1587d98e9699d514bf2e5 100644 (file)
@@ -476,8 +476,12 @@ void drv_link_info_changed(struct ieee80211_local *local,
        if (WARN_ON_ONCE(sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE ||
                         sdata->vif.type == NL80211_IFTYPE_NAN ||
                         (sdata->vif.type == NL80211_IFTYPE_MONITOR &&
-                         !sdata->vif.bss_conf.mu_mimo_owner &&
-                         !(changed & BSS_CHANGED_TXPOWER))))
+                         changed & ~(BSS_CHANGED_TXPOWER |
+                                     BSS_CHANGED_MU_GROUPS))))
+               return;
+
+       if (WARN_ON_ONCE(changed & BSS_CHANGED_MU_GROUPS &&
+                        !sdata->vif.bss_conf.mu_mimo_owner))
                return;
 
        if (!check_sdata_in_driver(sdata))
index eefa6f7e899bd9d3ea11d1239d2d29a1b02a0a8d..b05e313c7f1760590abe583a626228ef58e114a6 100644 (file)
@@ -356,8 +356,7 @@ void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata,
        if (WARN_ON_ONCE(sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE ||
                         sdata->vif.type == NL80211_IFTYPE_NAN ||
                         (sdata->vif.type == NL80211_IFTYPE_MONITOR &&
-                         !sdata->vif.bss_conf.mu_mimo_owner &&
-                         !(changed & BSS_CHANGED_TXPOWER))))
+                         changed & ~BSS_CHANGED_TXPOWER)))
                return;
 
        if (!check_sdata_in_driver(sdata))