wifi: cfg80211: add a flag to disable wireless extensions
commit be23b2d7c3
upstream.
Wireless extensions are already disabled if MLO is enabled,
given that we cannot support MLO there with all the hard-
coded assumptions about BSSID etc.
However, the WiFi7 ecosystem is still stabilizing, and some
devices may need MLO disabled while that happens. In that
case, we might end up with a device that supports wext (but
not MLO) in one kernel, and then breaks wext in the future
(by enabling MLO), which is not desirable.
Add a flag to let such drivers/devices disable wext even if
MLO isn't yet enabled.
Cc: stable@vger.kernel.org
Link: https://msgid.link/20240314110951.b50f1dc4ec21.I656ddd8178eedb49dc5c6c0e70f8ce5807afb54f@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2884a50f52
commit
f1c91159c7
|
@ -4914,6 +4914,7 @@ struct cfg80211_ops {
|
|||
* NL80211_REGDOM_SET_BY_DRIVER.
|
||||
* @WIPHY_FLAG_CHANNEL_CHANGE_ON_BEACON: reg_call_notifier() is called if driver
|
||||
* set this flag to update channels on beacon hints.
|
||||
* @WIPHY_FLAG_DISABLE_WEXT: disable wireless extensions for this device
|
||||
*/
|
||||
enum wiphy_flags {
|
||||
WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK = BIT(0),
|
||||
|
@ -4925,6 +4926,7 @@ enum wiphy_flags {
|
|||
WIPHY_FLAG_4ADDR_STATION = BIT(6),
|
||||
WIPHY_FLAG_CONTROL_PORT_PROTOCOL = BIT(7),
|
||||
WIPHY_FLAG_IBSS_RSN = BIT(8),
|
||||
WIPHY_FLAG_DISABLE_WEXT = BIT(9),
|
||||
WIPHY_FLAG_MESH_AUTH = BIT(10),
|
||||
WIPHY_FLAG_SUPPORTS_EXT_KCK_32 = BIT(11),
|
||||
/* use hole at 12 */
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
* Authors : Jean Tourrilhes - HPL - <jt@hpl.hp.com>
|
||||
* Copyright (c) 1997-2007 Jean Tourrilhes, All Rights Reserved.
|
||||
* Copyright 2009 Johannes Berg <johannes@sipsolutions.net>
|
||||
* Copyright (C) 2024 Intel Corporation
|
||||
*
|
||||
* (As all part of the Linux kernel, this file is GPL)
|
||||
*/
|
||||
|
@ -662,7 +663,8 @@ struct iw_statistics *get_wireless_stats(struct net_device *dev)
|
|||
dev->ieee80211_ptr->wiphy->wext &&
|
||||
dev->ieee80211_ptr->wiphy->wext->get_wireless_stats) {
|
||||
wireless_warn_cfg80211_wext();
|
||||
if (dev->ieee80211_ptr->wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO)
|
||||
if (dev->ieee80211_ptr->wiphy->flags & (WIPHY_FLAG_SUPPORTS_MLO |
|
||||
WIPHY_FLAG_DISABLE_WEXT))
|
||||
return NULL;
|
||||
return dev->ieee80211_ptr->wiphy->wext->get_wireless_stats(dev);
|
||||
}
|
||||
|
@ -704,7 +706,8 @@ static iw_handler get_handler(struct net_device *dev, unsigned int cmd)
|
|||
#ifdef CONFIG_CFG80211_WEXT
|
||||
if (dev->ieee80211_ptr && dev->ieee80211_ptr->wiphy) {
|
||||
wireless_warn_cfg80211_wext();
|
||||
if (dev->ieee80211_ptr->wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO)
|
||||
if (dev->ieee80211_ptr->wiphy->flags & (WIPHY_FLAG_SUPPORTS_MLO |
|
||||
WIPHY_FLAG_DISABLE_WEXT))
|
||||
return NULL;
|
||||
handlers = dev->ieee80211_ptr->wiphy->wext;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue