wifi: wireless: warn on most wireless extension usage
authorJohannes Berg <johannes.berg@intel.com>
Wed, 18 Jan 2023 09:51:52 +0000 (10:51 +0100)
committerKalle Valo <kvalo@kernel.org>
Thu, 19 Jan 2023 18:01:41 +0000 (20:01 +0200)
With WiFi 7 (802.11ax, MLO/EHT) around the corner, we're going to
remove support for wireless extensions with new devices since MLO
(multi-link operation) cannot be properly indicated using them.

Add a warning to indicate which processes are still using wireless
extensions, if being used with modern (i.e. cfg80211) drivers.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230118105152.a7158a929a6f.Ifcf30eeeb8fc7019e4dcf2782b04515254d165e1@changeid
net/wireless/wext-core.c

index fe8765c..6e5f5ea 100644 (file)
@@ -636,7 +636,15 @@ void wireless_send_event(struct net_device *       dev,
 }
 EXPORT_SYMBOL(wireless_send_event);
 
+#ifdef CONFIG_CFG80211_WEXT
+static void wireless_warn_cfg80211_wext(void)
+{
+       char name[sizeof(current->comm)];
 
+       pr_warn_ratelimited("warning: `%s' uses wireless extensions that are deprecated for modern drivers; use nl80211\n",
+                           get_task_comm(name, current));
+}
+#endif
 
 /* IW handlers */
 
@@ -652,8 +660,10 @@ struct iw_statistics *get_wireless_stats(struct net_device *dev)
        if (dev->ieee80211_ptr &&
            dev->ieee80211_ptr->wiphy &&
            dev->ieee80211_ptr->wiphy->wext &&
-           dev->ieee80211_ptr->wiphy->wext->get_wireless_stats)
+           dev->ieee80211_ptr->wiphy->wext->get_wireless_stats) {
+               wireless_warn_cfg80211_wext();
                return dev->ieee80211_ptr->wiphy->wext->get_wireless_stats(dev);
+       }
 #endif
 
        /* not found */
@@ -690,8 +700,10 @@ static iw_handler get_handler(struct net_device *dev, unsigned int cmd)
        const struct iw_handler_def *handlers = NULL;
 
 #ifdef CONFIG_CFG80211_WEXT
-       if (dev->ieee80211_ptr && dev->ieee80211_ptr->wiphy)
+       if (dev->ieee80211_ptr && dev->ieee80211_ptr->wiphy) {
+               wireless_warn_cfg80211_wext();
                handlers = dev->ieee80211_ptr->wiphy->wext;
+       }
 #endif
 #ifdef CONFIG_WIRELESS_EXT
        if (dev->wireless_handlers)