Commit dc09766c authored by Johannes Berg's avatar Johannes Berg Committed by Kalle Valo

wifi: wireless: warn on most wireless extension usage

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: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230118105152.a7158a929a6f.Ifcf30eeeb8fc7019e4dcf2782b04515254d165e1@changeid
parent 82253dda
...@@ -636,7 +636,15 @@ void wireless_send_event(struct net_device * dev, ...@@ -636,7 +636,15 @@ void wireless_send_event(struct net_device * dev,
} }
EXPORT_SYMBOL(wireless_send_event); 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 */ /* IW handlers */
...@@ -652,8 +660,10 @@ struct iw_statistics *get_wireless_stats(struct net_device *dev) ...@@ -652,8 +660,10 @@ struct iw_statistics *get_wireless_stats(struct net_device *dev)
if (dev->ieee80211_ptr && if (dev->ieee80211_ptr &&
dev->ieee80211_ptr->wiphy && dev->ieee80211_ptr->wiphy &&
dev->ieee80211_ptr->wiphy->wext && 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); return dev->ieee80211_ptr->wiphy->wext->get_wireless_stats(dev);
}
#endif #endif
/* not found */ /* not found */
...@@ -690,8 +700,10 @@ static iw_handler get_handler(struct net_device *dev, unsigned int cmd) ...@@ -690,8 +700,10 @@ static iw_handler get_handler(struct net_device *dev, unsigned int cmd)
const struct iw_handler_def *handlers = NULL; const struct iw_handler_def *handlers = NULL;
#ifdef CONFIG_CFG80211_WEXT #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; handlers = dev->ieee80211_ptr->wiphy->wext;
}
#endif #endif
#ifdef CONFIG_WIRELESS_EXT #ifdef CONFIG_WIRELESS_EXT
if (dev->wireless_handlers) if (dev->wireless_handlers)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment