]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: mac80211: fix WARN_ON for monitor mode on some devices
authorJohannes Berg <johannes.berg@intel.com>
Wed, 23 Jul 2025 07:14:19 +0000 (09:14 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 23 Jul 2025 10:29:07 +0000 (12:29 +0200)
On devices without WANT_MONITOR_VIF (and probably without
channel context support) we get a WARN_ON for changing the
per-link setting of a monitor interface.

Since we already skip AP_VLAN interfaces and MONITOR with
WANT_MONITOR_VIF and/or NO_VIRTUAL_MONITOR should update
the settings, catch this in the link change code instead
of the warning.

Reported-by: Martin Kaistra <martin.kaistra@linutronix.de>
Link: https://lore.kernel.org/r/a9de62a0-28f1-4981-84df-253489da74ed@linutronix.de/
Fixes: c4382d5ca1af ("wifi: mac80211: update the right link for tx power")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/main.c

index 351564360c266fcf9e7504d1bbfde6066cf7c363..9c8f18b258a68c2c92981aaab68032931c6144b9 100644 (file)
@@ -408,9 +408,20 @@ void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata,
 
        WARN_ON_ONCE(changed & BSS_CHANGED_VIF_CFG_FLAGS);
 
-       if (!changed || sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
+       if (!changed)
                return;
 
+       switch (sdata->vif.type) {
+       case NL80211_IFTYPE_AP_VLAN:
+               return;
+       case NL80211_IFTYPE_MONITOR:
+               if (!ieee80211_hw_check(&local->hw, WANT_MONITOR_VIF))
+                       return;
+               break;
+       default:
+               break;
+       }
+
        if (!check_sdata_in_driver(sdata))
                return;