* [PATCH 1/8] wireless: remove CONFIG_WIRELESS_WDS
2020-11-09 9:57 [PATCH 0/8] wireless: remove WDS mode Johannes Berg
@ 2020-11-09 9:57 ` Johannes Berg
2020-11-09 9:57 ` [PATCH 2/8] ath9k: remove WDS code Johannes Berg
` (7 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Johannes Berg @ 2020-11-09 9:57 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
WDS has long been superseded by 4-addr AP/client and lacks such
fundamental features like encryption, capability negotiation,
and similar. As such, it was basically always unusable as is.
Back in 2016, in commit 8f20542386c5 ("wireless: deprecate WDS
and disable by default") I disabled it and made the Kconfig option
only available under CONFIG_EXPERT to turn it back on. Since then,
nobody has complained about that, and given the severe limitations
with the code, it's unlikely anyone would have a reason to.
Remove the Kconfig option now, so we can clean up the associated
code in follow-up patches.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
drivers/net/wireless/Kconfig | 13 -------------
1 file changed, 13 deletions(-)
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 170a64e67709..7add2002ff4c 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -18,19 +18,6 @@ menuconfig WLAN
if WLAN
-config WIRELESS_WDS
- bool "mac80211-based legacy WDS support" if EXPERT
- help
- This option enables the deprecated WDS support, the newer
- mac80211-based 4-addr AP/client support supersedes it with
- a much better feature set (HT, VHT, ...)
-
- We plan to remove this option and code, so if you find
- that you have to enable it, please let us know on the
- linux-wireless@vger.kernel.org mailing list, so we can
- help you migrate to 4-addr AP/client (or, if it's really
- necessary, give up on our plan of removing it).
-
source "drivers/net/wireless/admtek/Kconfig"
source "drivers/net/wireless/ath/Kconfig"
source "drivers/net/wireless/atmel/Kconfig"
--
2.26.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH 2/8] ath9k: remove WDS code
2020-11-09 9:57 [PATCH 0/8] wireless: remove WDS mode Johannes Berg
2020-11-09 9:57 ` [PATCH 1/8] wireless: remove CONFIG_WIRELESS_WDS Johannes Berg
@ 2020-11-09 9:57 ` Johannes Berg
2020-11-09 9:57 ` [PATCH 3/8] carl9170: " Johannes Berg
` (6 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Johannes Berg @ 2020-11-09 9:57 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
The ability to reach this code was hidden behind
CONFIG_WIRELESS_WDS, which was just removed. Clean
up the driver accordingly.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
drivers/net/wireless/ath/ath9k/ath9k.h | 1 -
drivers/net/wireless/ath/ath9k/init.c | 19 -------------------
drivers/net/wireless/ath/ath9k/main.c | 5 -----
3 files changed, 25 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index e06b74a54a69..13b4f5f50f8a 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -661,7 +661,6 @@ struct ath9k_vif_iter_data {
int naps; /* number of AP vifs */
int nmeshes; /* number of mesh vifs */
int nstations; /* number of station vifs */
- int nwds; /* number of WDS vifs */
int nadhocs; /* number of adhoc vifs */
int nocbs; /* number of OCB vifs */
int nbcnvifs; /* number of beaconing vifs */
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index 690fe3a1b516..42a208787f5a 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -832,12 +832,6 @@ static const struct ieee80211_iface_limit if_limits[] = {
BIT(NL80211_IFTYPE_P2P_GO) },
};
-#ifdef CONFIG_WIRELESS_WDS
-static const struct ieee80211_iface_limit wds_limits[] = {
- { .max = 2048, .types = BIT(NL80211_IFTYPE_WDS) },
-};
-#endif
-
#ifdef CONFIG_ATH9K_CHANNEL_CONTEXT
static const struct ieee80211_iface_limit if_limits_multi[] = {
@@ -874,15 +868,6 @@ static const struct ieee80211_iface_combination if_comb[] = {
BIT(NL80211_CHAN_WIDTH_40),
#endif
},
-#ifdef CONFIG_WIRELESS_WDS
- {
- .limits = wds_limits,
- .n_limits = ARRAY_SIZE(wds_limits),
- .max_interfaces = 2048,
- .num_different_channels = 1,
- .beacon_int_infra_match = true,
- },
-#endif
};
#ifdef CONFIG_ATH9K_CHANNEL_CONTEXT
@@ -897,7 +882,6 @@ static void ath9k_set_mcc_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
ieee80211_hw_set(hw, QUEUE_CONTROL);
hw->queues = ATH9K_NUM_TX_QUEUES;
hw->offchannel_tx_hw_queue = hw->queues - 1;
- hw->wiphy->interface_modes &= ~ BIT(NL80211_IFTYPE_WDS);
hw->wiphy->iface_combinations = if_comb_multi;
hw->wiphy->n_iface_combinations = ARRAY_SIZE(if_comb_multi);
hw->wiphy->max_scan_ssids = 255;
@@ -953,9 +937,6 @@ static void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
BIT(NL80211_IFTYPE_STATION) |
BIT(NL80211_IFTYPE_ADHOC) |
BIT(NL80211_IFTYPE_MESH_POINT) |
-#ifdef CONFIG_WIRELESS_WDS
- BIT(NL80211_IFTYPE_WDS) |
-#endif
BIT(NL80211_IFTYPE_OCB);
if (ath9k_is_chanctx_enabled())
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 8dbf68b94228..caebe3fd6869 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -973,9 +973,6 @@ static void ath9k_vif_iter(struct ath9k_vif_iter_data *iter_data,
if (vif->bss_conf.enable_beacon)
ath9k_vif_iter_set_beacon(iter_data, vif);
break;
- case NL80211_IFTYPE_WDS:
- iter_data->nwds++;
- break;
default:
break;
}
@@ -1136,8 +1133,6 @@ void ath9k_calculate_summary_state(struct ath_softc *sc,
ah->opmode = NL80211_IFTYPE_MESH_POINT;
else if (iter_data.nocbs)
ah->opmode = NL80211_IFTYPE_OCB;
- else if (iter_data.nwds)
- ah->opmode = NL80211_IFTYPE_AP;
else if (iter_data.nadhocs)
ah->opmode = NL80211_IFTYPE_ADHOC;
else
--
2.26.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH 3/8] carl9170: remove WDS code
2020-11-09 9:57 [PATCH 0/8] wireless: remove WDS mode Johannes Berg
2020-11-09 9:57 ` [PATCH 1/8] wireless: remove CONFIG_WIRELESS_WDS Johannes Berg
2020-11-09 9:57 ` [PATCH 2/8] ath9k: remove WDS code Johannes Berg
@ 2020-11-09 9:57 ` Johannes Berg
2020-11-09 9:57 ` [PATCH 4/8] b43: " Johannes Berg
` (5 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Johannes Berg @ 2020-11-09 9:57 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
The ability to reach this code was hidden behind
CONFIG_WIRELESS_WDS, which was just removed. Clean
up the driver accordingly.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
drivers/net/wireless/ath/carl9170/mac.c | 4 ----
drivers/net/wireless/ath/carl9170/main.c | 1 -
2 files changed, 5 deletions(-)
diff --git a/drivers/net/wireless/ath/carl9170/mac.c b/drivers/net/wireless/ath/carl9170/mac.c
index b2eeb9fd68d2..6cdbee5beb07 100644
--- a/drivers/net/wireless/ath/carl9170/mac.c
+++ b/drivers/net/wireless/ath/carl9170/mac.c
@@ -329,10 +329,6 @@ int carl9170_set_operating_mode(struct ar9170 *ar)
/* iwlagn 802.11n STA Workaround */
rx_ctrl |= AR9170_MAC_RX_CTRL_PASS_TO_HOST;
break;
- case NL80211_IFTYPE_WDS:
- cam_mode |= AR9170_MAC_CAM_AP_WDS;
- rx_ctrl |= AR9170_MAC_RX_CTRL_PASS_TO_HOST;
- break;
case NL80211_IFTYPE_STATION:
cam_mode |= AR9170_MAC_CAM_STA;
rx_ctrl |= AR9170_MAC_RX_CTRL_PASS_TO_HOST;
diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c
index dbef9d8fc893..cca3b086aa70 100644
--- a/drivers/net/wireless/ath/carl9170/main.c
+++ b/drivers/net/wireless/ath/carl9170/main.c
@@ -646,7 +646,6 @@ static int carl9170_op_add_interface(struct ieee80211_hw *hw,
case NL80211_IFTYPE_MESH_POINT:
case NL80211_IFTYPE_AP:
if ((vif->type == NL80211_IFTYPE_STATION) ||
- (vif->type == NL80211_IFTYPE_WDS) ||
(vif->type == NL80211_IFTYPE_AP) ||
(vif->type == NL80211_IFTYPE_MESH_POINT))
break;
--
2.26.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH 4/8] b43: remove WDS code
2020-11-09 9:57 [PATCH 0/8] wireless: remove WDS mode Johannes Berg
` (2 preceding siblings ...)
2020-11-09 9:57 ` [PATCH 3/8] carl9170: " Johannes Berg
@ 2020-11-09 9:57 ` Johannes Berg
2020-11-09 9:57 ` [PATCH 5/8] b43legacy: " Johannes Berg
` (4 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Johannes Berg @ 2020-11-09 9:57 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
The ability to reach this code was hidden behind
CONFIG_WIRELESS_WDS, which was just removed. Clean
up the driver accordingly.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
drivers/net/wireless/broadcom/b43/main.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/net/wireless/broadcom/b43/main.c b/drivers/net/wireless/broadcom/b43/main.c
index f175dbaffc30..150a366e8f62 100644
--- a/drivers/net/wireless/broadcom/b43/main.c
+++ b/drivers/net/wireless/broadcom/b43/main.c
@@ -4961,12 +4961,11 @@ static int b43_op_add_interface(struct ieee80211_hw *hw,
struct b43_wldev *dev;
int err = -EOPNOTSUPP;
- /* TODO: allow WDS/AP devices to coexist */
+ /* TODO: allow AP devices to coexist */
if (vif->type != NL80211_IFTYPE_AP &&
vif->type != NL80211_IFTYPE_MESH_POINT &&
vif->type != NL80211_IFTYPE_STATION &&
- vif->type != NL80211_IFTYPE_WDS &&
vif->type != NL80211_IFTYPE_ADHOC)
return -EOPNOTSUPP;
@@ -5576,9 +5575,6 @@ static struct b43_wl *b43_wireless_init(struct b43_bus_dev *dev)
BIT(NL80211_IFTYPE_AP) |
BIT(NL80211_IFTYPE_MESH_POINT) |
BIT(NL80211_IFTYPE_STATION) |
-#ifdef CONFIG_WIRELESS_WDS
- BIT(NL80211_IFTYPE_WDS) |
-#endif
BIT(NL80211_IFTYPE_ADHOC);
hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
--
2.26.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH 5/8] b43legacy: remove WDS code
2020-11-09 9:57 [PATCH 0/8] wireless: remove WDS mode Johannes Berg
` (3 preceding siblings ...)
2020-11-09 9:57 ` [PATCH 4/8] b43: " Johannes Berg
@ 2020-11-09 9:57 ` Johannes Berg
2020-11-09 9:57 ` [PATCH 6/8] rt2x00: " Johannes Berg
` (3 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Johannes Berg @ 2020-11-09 9:57 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
The ability to reach this code was hidden behind
CONFIG_WIRELESS_WDS, which was just removed. Clean
up the driver accordingly.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
drivers/net/wireless/broadcom/b43legacy/main.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/net/wireless/broadcom/b43legacy/main.c b/drivers/net/wireless/broadcom/b43legacy/main.c
index a27125b7922c..7692a2618c97 100644
--- a/drivers/net/wireless/broadcom/b43legacy/main.c
+++ b/drivers/net/wireless/broadcom/b43legacy/main.c
@@ -3381,11 +3381,10 @@ static int b43legacy_op_add_interface(struct ieee80211_hw *hw,
unsigned long flags;
int err = -EOPNOTSUPP;
- /* TODO: allow WDS/AP devices to coexist */
+ /* TODO: allow AP devices to coexist */
if (vif->type != NL80211_IFTYPE_AP &&
vif->type != NL80211_IFTYPE_STATION &&
- vif->type != NL80211_IFTYPE_WDS &&
vif->type != NL80211_IFTYPE_ADHOC)
return -EOPNOTSUPP;
@@ -3805,9 +3804,6 @@ static int b43legacy_wireless_init(struct ssb_device *dev)
hw->wiphy->interface_modes =
BIT(NL80211_IFTYPE_AP) |
BIT(NL80211_IFTYPE_STATION) |
-#ifdef CONFIG_WIRELESS_WDS
- BIT(NL80211_IFTYPE_WDS) |
-#endif
BIT(NL80211_IFTYPE_ADHOC);
hw->queues = 1; /* FIXME: hardware has more queues */
hw->max_rates = 2;
--
2.26.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH 6/8] rt2x00: remove WDS code
2020-11-09 9:57 [PATCH 0/8] wireless: remove WDS mode Johannes Berg
` (4 preceding siblings ...)
2020-11-09 9:57 ` [PATCH 5/8] b43legacy: " Johannes Berg
@ 2020-11-09 9:57 ` Johannes Berg
2020-11-09 9:57 ` [PATCH 7/8] mac80211: remove WDS-related code Johannes Berg
` (2 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Johannes Berg @ 2020-11-09 9:57 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
The ability to reach this code was hidden behind
CONFIG_WIRELESS_WDS, which was just removed. Clean
up the driver accordingly.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
drivers/net/wireless/ralink/rt2x00/rt2x00config.c | 1 -
drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 6 +-----
drivers/net/wireless/ralink/rt2x00/rt2x00mac.c | 3 +--
3 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00config.c b/drivers/net/wireless/ralink/rt2x00/rt2x00config.c
index 0ee1813e8453..6bafdd991171 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00config.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00config.c
@@ -32,7 +32,6 @@ void rt2x00lib_config_intf(struct rt2x00_dev *rt2x00dev,
break;
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_MESH_POINT:
- case NL80211_IFTYPE_WDS:
conf.sync = TSF_SYNC_AP_NONE;
break;
case NL80211_IFTYPE_STATION:
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
index b04f76551ca4..61a4f1ad31e2 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -194,8 +194,7 @@ static void rt2x00lib_beaconupdate_iter(void *data, u8 *mac,
if (vif->type != NL80211_IFTYPE_AP &&
vif->type != NL80211_IFTYPE_ADHOC &&
- vif->type != NL80211_IFTYPE_MESH_POINT &&
- vif->type != NL80211_IFTYPE_WDS)
+ vif->type != NL80211_IFTYPE_MESH_POINT)
return;
/*
@@ -1436,9 +1435,6 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
BIT(NL80211_IFTYPE_ADHOC) |
#ifdef CONFIG_MAC80211_MESH
BIT(NL80211_IFTYPE_MESH_POINT) |
-#endif
-#ifdef CONFIG_WIRELESS_WDS
- BIT(NL80211_IFTYPE_WDS) |
#endif
BIT(NL80211_IFTYPE_AP);
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
index 2f68a31072ae..dea5babd30fe 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
@@ -408,8 +408,7 @@ static void rt2x00mac_set_tim_iter(void *data, u8 *mac,
if (vif->type != NL80211_IFTYPE_AP &&
vif->type != NL80211_IFTYPE_ADHOC &&
- vif->type != NL80211_IFTYPE_MESH_POINT &&
- vif->type != NL80211_IFTYPE_WDS)
+ vif->type != NL80211_IFTYPE_MESH_POINT)
return;
set_bit(DELAYED_UPDATE_BEACON, &intf->delayed_flags);
--
2.26.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH 7/8] mac80211: remove WDS-related code
2020-11-09 9:57 [PATCH 0/8] wireless: remove WDS mode Johannes Berg
` (5 preceding siblings ...)
2020-11-09 9:57 ` [PATCH 6/8] rt2x00: " Johannes Berg
@ 2020-11-09 9:57 ` Johannes Berg
2020-11-10 4:58 ` kernel test robot
2020-11-09 9:57 ` [PATCH 8/8] cfg80211: remove WDS code Johannes Berg
2020-11-09 11:13 ` [PATCH 0/8] wireless: remove WDS mode Kalle Valo
8 siblings, 1 reply; 14+ messages in thread
From: Johannes Berg @ 2020-11-09 9:57 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
Now that all the mac80211-based drivers have removed WDS code
and in particular the ability to advertise such devices, also
remove all the code related to WDS here.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
net/mac80211/cfg.c | 11 --------
net/mac80211/chan.c | 3 +--
net/mac80211/debugfs_netdev.c | 11 --------
net/mac80211/ieee80211_i.h | 6 -----
net/mac80211/iface.c | 50 ++++-------------------------------
net/mac80211/main.c | 8 ------
net/mac80211/pm.c | 15 -----------
net/mac80211/rx.c | 5 ----
net/mac80211/tx.c | 26 ++----------------
net/mac80211/util.c | 2 +-
net/mac80211/wme.c | 3 ---
11 files changed, 9 insertions(+), 131 deletions(-)
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 7276e66ae435..454432ced0c9 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2708,16 +2708,6 @@ static int ieee80211_get_tx_power(struct wiphy *wiphy,
return 0;
}
-static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
- const u8 *addr)
-{
- struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
-
- memcpy(&sdata->u.wds.remote_addr, addr, ETH_ALEN);
-
- return 0;
-}
-
static void ieee80211_rfkill_poll(struct wiphy *wiphy)
{
struct ieee80211_local *local = wiphy_priv(wiphy);
@@ -4138,7 +4128,6 @@ const struct cfg80211_ops mac80211_config_ops = {
.set_wiphy_params = ieee80211_set_wiphy_params,
.set_tx_power = ieee80211_set_tx_power,
.get_tx_power = ieee80211_get_tx_power,
- .set_wds_peer = ieee80211_set_wds_peer,
.rfkill_poll = ieee80211_rfkill_poll,
CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd)
CFG80211_TESTMODE_DUMP(ieee80211_testmode_dump)
diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c
index 8f48aff74c7b..b6c80a45b9f5 100644
--- a/net/mac80211/chan.c
+++ b/net/mac80211/chan.c
@@ -275,11 +275,11 @@ ieee80211_get_chanctx_max_required_bw(struct ieee80211_local *local,
case NL80211_IFTYPE_NAN:
continue;
case NL80211_IFTYPE_ADHOC:
- case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_MESH_POINT:
case NL80211_IFTYPE_OCB:
width = vif->bss_conf.chandef.width;
break;
+ case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_UNSPECIFIED:
case NUM_NL80211_IFTYPES:
case NL80211_IFTYPE_MONITOR:
@@ -743,7 +743,6 @@ void ieee80211_recalc_smps_chanctx(struct ieee80211_local *local,
continue;
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_ADHOC:
- case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_MESH_POINT:
case NL80211_IFTYPE_OCB:
break;
diff --git a/net/mac80211/debugfs_netdev.c b/net/mac80211/debugfs_netdev.c
index fe8a7a87e513..9fc8ce214322 100644
--- a/net/mac80211/debugfs_netdev.c
+++ b/net/mac80211/debugfs_netdev.c
@@ -574,9 +574,6 @@ static ssize_t ieee80211_if_parse_tsf(
IEEE80211_IF_FILE_RW(tsf);
-/* WDS attributes */
-IEEE80211_IF_FILE(peer, u.wds.remote_addr, MAC);
-
#ifdef CONFIG_MAC80211_MESH
IEEE80211_IF_FILE(estab_plinks, u.mesh.estab_plinks, ATOMIC);
@@ -701,11 +698,6 @@ static void add_ibss_files(struct ieee80211_sub_if_data *sdata)
DEBUGFS_ADD_MODE(tsf, 0600);
}
-static void add_wds_files(struct ieee80211_sub_if_data *sdata)
-{
- DEBUGFS_ADD(peer);
-}
-
#ifdef CONFIG_MAC80211_MESH
static void add_mesh_files(struct ieee80211_sub_if_data *sdata)
@@ -805,9 +797,6 @@ static void add_files(struct ieee80211_sub_if_data *sdata)
case NL80211_IFTYPE_AP_VLAN:
add_vlan_files(sdata);
break;
- case NL80211_IFTYPE_WDS:
- add_wds_files(sdata);
- break;
default:
break;
}
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 2a21226fb518..bb56fdd0db81 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -311,11 +311,6 @@ struct ieee80211_if_ap {
bool multicast_to_unicast;
};
-struct ieee80211_if_wds {
- struct sta_info *sta;
- u8 remote_addr[ETH_ALEN];
-};
-
struct ieee80211_if_vlan {
struct list_head list; /* write-protected with RTNL and local->mtx */
@@ -985,7 +980,6 @@ struct ieee80211_sub_if_data {
union {
struct ieee80211_if_ap ap;
- struct ieee80211_if_wds wds;
struct ieee80211_if_vlan vlan;
struct ieee80211_if_managed mgd;
struct ieee80211_if_ibss ibss;
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 56a1bcea2c1c..51ef7a7ea93c 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -230,10 +230,6 @@ static inline int identical_mac_addr_allowed(int type1, int type2)
type2 == NL80211_IFTYPE_MONITOR ||
type1 == NL80211_IFTYPE_P2P_DEVICE ||
type2 == NL80211_IFTYPE_P2P_DEVICE ||
- (type1 == NL80211_IFTYPE_AP && type2 == NL80211_IFTYPE_WDS) ||
- (type1 == NL80211_IFTYPE_WDS &&
- (type2 == NL80211_IFTYPE_WDS ||
- type2 == NL80211_IFTYPE_AP)) ||
(type1 == NL80211_IFTYPE_AP && type2 == NL80211_IFTYPE_AP_VLAN) ||
(type1 == NL80211_IFTYPE_AP_VLAN &&
(type2 == NL80211_IFTYPE_AP ||
@@ -417,15 +413,12 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
* (because if we remove a STA after ops->remove_interface()
* the driver will have removed the vif info already!)
*
- * In WDS mode a station must exist here and be flushed, for
- * AP_VLANs stations may exist since there's nothing else that
+ * For AP_VLANs stations may exist since there's nothing else that
* would have removed them, but in other modes there shouldn't
* be any stations.
*/
flushed = sta_info_flush(sdata);
- WARN_ON_ONCE(sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
- ((sdata->vif.type != NL80211_IFTYPE_WDS && flushed > 0) ||
- (sdata->vif.type == NL80211_IFTYPE_WDS && flushed != 1)));
+ WARN_ON_ONCE(sdata->vif.type != NL80211_IFTYPE_AP_VLAN && flushed > 0);
/* don't count this interface for allmulti while it is down */
if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
@@ -552,8 +545,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
* When we get here, the interface is marked down.
* Free the remaining keys, if there are any
* (which can happen in AP mode if userspace sets
- * keys before the interface is operating, and maybe
- * also in WDS mode)
+ * keys before the interface is operating)
*
* Force the key freeing to always synchronize_net()
* to wait for the RX path in case it is using this
@@ -1026,10 +1018,6 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
u32 hw_reconf_flags = 0;
switch (sdata->vif.type) {
- case NL80211_IFTYPE_WDS:
- if (!is_valid_ether_addr(sdata->u.wds.remote_addr))
- return -ENOLINK;
- break;
case NL80211_IFTYPE_AP_VLAN: {
struct ieee80211_sub_if_data *master;
@@ -1078,6 +1066,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
case NUM_NL80211_IFTYPES:
case NL80211_IFTYPE_P2P_CLIENT:
case NL80211_IFTYPE_P2P_GO:
+ case NL80211_IFTYPE_WDS:
/* cannot happen */
WARN_ON(1);
break;
@@ -1196,7 +1185,6 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
case NL80211_IFTYPE_OCB:
netif_carrier_off(dev);
break;
- case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_P2P_DEVICE:
case NL80211_IFTYPE_NAN:
break;
@@ -1218,28 +1206,6 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
set_bit(SDATA_STATE_RUNNING, &sdata->state);
switch (sdata->vif.type) {
- case NL80211_IFTYPE_WDS:
- /* Create STA entry for the WDS peer */
- sta = sta_info_alloc(sdata, sdata->u.wds.remote_addr,
- GFP_KERNEL);
- if (!sta) {
- res = -ENOMEM;
- goto err_del_interface;
- }
-
- sta_info_pre_move_state(sta, IEEE80211_STA_AUTH);
- sta_info_pre_move_state(sta, IEEE80211_STA_ASSOC);
- sta_info_pre_move_state(sta, IEEE80211_STA_AUTHORIZED);
-
- res = sta_info_insert(sta);
- if (res) {
- /* STA has been freed */
- goto err_del_interface;
- }
-
- rate_control_rate_init(sta);
- netif_carrier_on(dev);
- break;
case NL80211_IFTYPE_P2P_DEVICE:
rcu_assign_pointer(local->p2p_sdata, sdata);
break;
@@ -1576,9 +1542,6 @@ static void ieee80211_setup_sdata(struct ieee80211_sub_if_data *sdata,
sdata->u.mntr.flags = MONITOR_FLAG_CONTROL |
MONITOR_FLAG_OTHER_BSS;
break;
- case NL80211_IFTYPE_WDS:
- sdata->vif.bss_conf.bssid = NULL;
- break;
case NL80211_IFTYPE_NAN:
idr_init(&sdata->u.nan.function_inst_ids);
spin_lock_init(&sdata->u.nan.func_lock);
@@ -1633,9 +1596,7 @@ static int ieee80211_runtime_change_iftype(struct ieee80211_sub_if_data *sdata,
case NL80211_IFTYPE_OCB:
/*
* Could probably support everything
- * but WDS here (WDS do_open can fail
- * under memory pressure, which this
- * code isn't prepared to handle).
+ * but here.
*/
break;
case NL80211_IFTYPE_P2P_CLIENT:
@@ -1728,7 +1689,6 @@ static void ieee80211_assign_perm_addr(struct ieee80211_local *local,
case NL80211_IFTYPE_MONITOR:
/* doesn't matter */
break;
- case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_AP_VLAN:
/* match up with an AP interface */
list_for_each_entry(sdata, &local->interfaces, list) {
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 523380aed92e..b58d588440f0 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -935,14 +935,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
return -EINVAL;
}
} else {
- /*
- * WDS is currently prohibited when channel contexts are used
- * because there's no clear definition of which channel WDS
- * type interfaces use
- */
- if (local->hw.wiphy->interface_modes & BIT(NL80211_IFTYPE_WDS))
- return -EINVAL;
-
/* DFS is not supported with multi-channel combinations yet */
for (i = 0; i < local->hw.wiphy->n_iface_combinations; i++) {
const struct ieee80211_iface_combination *comb;
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
index 38c45e1dafd8..ae378a41c927 100644
--- a/net/mac80211/pm.c
+++ b/net/mac80211/pm.c
@@ -150,21 +150,6 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
case NL80211_IFTYPE_STATION:
ieee80211_mgd_quiesce(sdata);
break;
- case NL80211_IFTYPE_WDS:
- /* tear down aggregation sessions and remove STAs */
- mutex_lock(&local->sta_mtx);
- sta = sdata->u.wds.sta;
- if (sta && sta->uploaded) {
- enum ieee80211_sta_state state;
-
- state = sta->sta_state;
- for (; state > IEEE80211_STA_NOTEXIST; state--)
- WARN_ON(drv_sta_state(local, sta->sdata,
- sta, state,
- state - 1));
- }
- mutex_unlock(&local->sta_mtx);
- break;
default:
break;
}
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 09d1c9fb8872..062c2b45584e 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1477,7 +1477,6 @@ ieee80211_rx_h_check(struct ieee80211_rx_data *rx)
if (unlikely((ieee80211_is_data(hdr->frame_control) ||
ieee80211_is_pspoll(hdr->frame_control)) &&
rx->sdata->vif.type != NL80211_IFTYPE_ADHOC &&
- rx->sdata->vif.type != NL80211_IFTYPE_WDS &&
rx->sdata->vif.type != NL80211_IFTYPE_OCB &&
(!rx->sta || !test_sta_flag(rx->sta, WLAN_STA_ASSOC)))) {
/*
@@ -4080,10 +4079,6 @@ static bool ieee80211_accept_frame(struct ieee80211_rx_data *rx)
return false;
return true;
- case NL80211_IFTYPE_WDS:
- if (bssid || !ieee80211_is_data(hdr->frame_control))
- return false;
- return ether_addr_equal(sdata->u.wds.remote_addr, hdr->addr2);
case NL80211_IFTYPE_P2P_DEVICE:
return ieee80211_is_public_action(hdr, skb->len) ||
ieee80211_is_probe_req(hdr->frame_control) ||
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 1651cf7b2500..72f84b33a6ba 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -319,9 +319,6 @@ ieee80211_tx_h_check_assoc(struct ieee80211_tx_data *tx)
if (tx->sdata->vif.type == NL80211_IFTYPE_OCB)
return TX_CONTINUE;
- if (tx->sdata->vif.type == NL80211_IFTYPE_WDS)
- return TX_CONTINUE;
-
if (tx->flags & IEEE80211_TX_PS_BUFFERED)
return TX_CONTINUE;
@@ -2289,8 +2286,7 @@ netdev_tx_t ieee80211_monitor_start_xmit(struct sk_buff *skb,
* we handle as though they are non-injected frames.
* This code here isn't entirely correct, the local MAC address
* isn't always enough to find the interface to use; for proper
- * VLAN/WDS support we will need a different mechanism (which
- * likely isn't going to be monitor interfaces).
+ * VLAN support we have an nl80211-based mechanism.
*
* This is necessary, for example, for old hostapd versions that
* don't use nl80211-based management TX/RX.
@@ -2301,8 +2297,7 @@ netdev_tx_t ieee80211_monitor_start_xmit(struct sk_buff *skb,
if (!ieee80211_sdata_running(tmp_sdata))
continue;
if (tmp_sdata->vif.type == NL80211_IFTYPE_MONITOR ||
- tmp_sdata->vif.type == NL80211_IFTYPE_AP_VLAN ||
- tmp_sdata->vif.type == NL80211_IFTYPE_WDS)
+ tmp_sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
continue;
if (ether_addr_equal(tmp_sdata->vif.addr, hdr->addr2)) {
sdata = tmp_sdata;
@@ -2396,9 +2391,6 @@ int ieee80211_lookup_ra_sta(struct ieee80211_sub_if_data *sdata,
}
sta = sta_info_get_bss(sdata, skb->data);
break;
- case NL80211_IFTYPE_WDS:
- sta = sta_info_get(sdata, sdata->u.wds.remote_addr);
- break;
#ifdef CONFIG_MAC80211_MESH
case NL80211_IFTYPE_MESH_POINT:
/* determined much later */
@@ -2574,20 +2566,6 @@ static struct sk_buff *ieee80211_build_hdr(struct ieee80211_sub_if_data *sdata,
hdrlen = 24;
band = chanctx_conf->def.chan->band;
break;
- case NL80211_IFTYPE_WDS:
- fc |= cpu_to_le16(IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS);
- /* RA TA DA SA */
- memcpy(hdr.addr1, sdata->u.wds.remote_addr, ETH_ALEN);
- memcpy(hdr.addr2, sdata->vif.addr, ETH_ALEN);
- memcpy(hdr.addr3, skb->data, ETH_ALEN);
- memcpy(hdr.addr4, skb->data + ETH_ALEN, ETH_ALEN);
- hdrlen = 30;
- /*
- * This is the exception! WDS style interfaces are prohibited
- * when channel contexts are in used so this must be valid
- */
- band = local->hw.conf.chandef.chan->band;
- break;
#ifdef CONFIG_MAC80211_MESH
case NL80211_IFTYPE_MESH_POINT:
if (!is_multicast_ether_addr(skb->data)) {
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 49342060490f..70a27948a084 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -2513,7 +2513,6 @@ int ieee80211_reconfig(struct ieee80211_local *local)
return res;
}
break;
- case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_AP_VLAN:
case NL80211_IFTYPE_MONITOR:
case NL80211_IFTYPE_P2P_DEVICE:
@@ -2523,6 +2522,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
case NUM_NL80211_IFTYPES:
case NL80211_IFTYPE_P2P_CLIENT:
case NL80211_IFTYPE_P2P_GO:
+ case NL80211_IFTYPE_WDS:
WARN_ON(1);
break;
}
diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c
index 2702d314ef59..9ea6004abe1b 100644
--- a/net/mac80211/wme.c
+++ b/net/mac80211/wme.c
@@ -205,9 +205,6 @@ u16 ieee80211_select_queue(struct ieee80211_sub_if_data *sdata,
case NL80211_IFTYPE_AP:
ra = skb->data;
break;
- case NL80211_IFTYPE_WDS:
- ra = sdata->u.wds.remote_addr;
- break;
case NL80211_IFTYPE_STATION:
/* might be a TDLS station */
sta = sta_info_get(sdata, skb->data);
--
2.26.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH 7/8] mac80211: remove WDS-related code
2020-11-09 9:57 ` [PATCH 7/8] mac80211: remove WDS-related code Johannes Berg
@ 2020-11-10 4:58 ` kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2020-11-10 4:58 UTC (permalink / raw)
To: Johannes Berg, linux-wireless; +Cc: kbuild-all, Johannes Berg
[-- Attachment #1: Type: text/plain, Size: 13181 bytes --]
Hi Johannes,
I love your patch! Perhaps something to improve:
[auto build test WARNING on mac80211-next/master]
[also build test WARNING on mac80211/master wireless-drivers-next/master v5.10-rc3 next-20201109]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Johannes-Berg/wireless-remove-CONFIG_WIRELESS_WDS/20201109-175921
base: https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git master
config: sparc-randconfig-r016-20201109 (attached as .config)
compiler: sparc64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/c57a74c8fb0ee0e2f65123e27dff3c4887fd9c07
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Johannes-Berg/wireless-remove-CONFIG_WIRELESS_WDS/20201109-175921
git checkout c57a74c8fb0ee0e2f65123e27dff3c4887fd9c07
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sparc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
net/mac80211/iface.c: In function 'ieee80211_do_open':
net/mac80211/iface.c:1015:19: warning: unused variable 'sta' [-Wunused-variable]
1015 | struct sta_info *sta;
| ^~~
net/mac80211/iface.c: In function 'ieee80211_setup_sdata':
>> net/mac80211/iface.c:1507:2: warning: enumeration value 'NL80211_IFTYPE_WDS' not handled in switch [-Wswitch]
1507 | switch (type) {
| ^~~~~~
vim +/NL80211_IFTYPE_WDS +1507 net/mac80211/iface.c
1fa57d017366fb2 net/mac80211/iface.c Johannes Berg 2010-06-10 1466
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1467 /*
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1468 * Helper function to initialise an interface to a specific type.
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1469 */
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1470 static void ieee80211_setup_sdata(struct ieee80211_sub_if_data *sdata,
05c914fe330fa8e net/mac80211/iface.c Johannes Berg 2008-09-11 1471 enum nl80211_iftype type)
f0706e828e96d0f net/mac80211/ieee80211_iface.c Jiri Benc 2007-05-05 1472 {
239281f803e2efd net/mac80211/iface.c Rostislav Lisovy 2014-11-03 1473 static const u8 bssid_wildcard[ETH_ALEN] = {0xff, 0xff, 0xff,
239281f803e2efd net/mac80211/iface.c Rostislav Lisovy 2014-11-03 1474 0xff, 0xff, 0xff};
239281f803e2efd net/mac80211/iface.c Rostislav Lisovy 2014-11-03 1475
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1476 /* clear type-dependent union */
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1477 memset(&sdata->u, 0, sizeof(sdata->u));
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1478
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1479 /* and set some type-dependent values */
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1480 sdata->vif.type = type;
2ca27bcff7127da net/mac80211/iface.c Johannes Berg 2010-09-16 1481 sdata->vif.p2p = false;
60719ffd721f676 net/mac80211/iface.c Johannes Berg 2008-09-16 1482 sdata->wdev.iftype = type;
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1483
a621fa4d6a7fdf9 net/mac80211/iface.c Johannes Berg 2010-08-27 1484 sdata->control_port_protocol = cpu_to_be16(ETH_P_PAE);
a621fa4d6a7fdf9 net/mac80211/iface.c Johannes Berg 2010-08-27 1485 sdata->control_port_no_encrypt = false;
7f3f96cedd79e36 net/mac80211/iface.c Markus Theil 2020-03-12 1486 sdata->control_port_over_nl80211 = false;
7f3f96cedd79e36 net/mac80211/iface.c Markus Theil 2020-03-12 1487 sdata->control_port_no_preauth = false;
2475b1cc0d5283a net/mac80211/iface.c Max Stepanov 2013-03-24 1488 sdata->encrypt_headroom = IEEE80211_ENCRYPT_HEADROOM;
d3a58df87a2e4c2 net/mac80211/iface.c Avraham Stern 2014-05-22 1489 sdata->vif.bss_conf.idle = true;
db6d9e9e8b48b7a net/mac80211/iface.c Ben Greear 2019-12-17 1490 sdata->vif.bss_conf.txpower = INT_MIN; /* unset */
a621fa4d6a7fdf9 net/mac80211/iface.c Johannes Berg 2010-08-27 1491
b53be7920bd9bb1 net/mac80211/iface.c Simon Wunderlich 2011-11-18 1492 sdata->noack_map = 0;
b53be7920bd9bb1 net/mac80211/iface.c Simon Wunderlich 2011-11-18 1493
f142c6b906da451 net/mac80211/iface.c Johannes Berg 2012-06-18 1494 /* only monitor/p2p-device differ */
f142c6b906da451 net/mac80211/iface.c Johannes Berg 2012-06-18 1495 if (sdata->dev) {
f142c6b906da451 net/mac80211/iface.c Johannes Berg 2012-06-18 1496 sdata->dev->netdev_ops = &ieee80211_dataif_ops;
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1497 sdata->dev->type = ARPHRD_ETHER;
f142c6b906da451 net/mac80211/iface.c Johannes Berg 2012-06-18 1498 }
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1499
35f20c14a103ca2 net/mac80211/iface.c Johannes Berg 2010-06-10 1500 skb_queue_head_init(&sdata->skb_queue);
1fa57d017366fb2 net/mac80211/iface.c Johannes Berg 2010-06-10 1501 INIT_WORK(&sdata->work, ieee80211_iface_work);
04ecd2578e712c3 net/mac80211/iface.c Johannes Berg 2012-09-11 1502 INIT_WORK(&sdata->recalc_smps, ieee80211_recalc_smps_work);
73da7d5bab79ad7 net/mac80211/iface.c Simon Wunderlich 2013-07-11 1503 INIT_WORK(&sdata->csa_finalize_work, ieee80211_csa_finalize_work);
484298ad1afaf24 net/mac80211/iface.c Michal Kazior 2014-04-09 1504 INIT_LIST_HEAD(&sdata->assigned_chanctx_list);
e3afb920227d37f net/mac80211/iface.c Michal Kazior 2014-04-09 1505 INIT_LIST_HEAD(&sdata->reserved_chanctx_list);
35f20c14a103ca2 net/mac80211/iface.c Johannes Berg 2010-06-10 1506
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 @1507 switch (type) {
2ca27bcff7127da net/mac80211/iface.c Johannes Berg 2010-09-16 1508 case NL80211_IFTYPE_P2P_GO:
2ca27bcff7127da net/mac80211/iface.c Johannes Berg 2010-09-16 1509 type = NL80211_IFTYPE_AP;
2ca27bcff7127da net/mac80211/iface.c Johannes Berg 2010-09-16 1510 sdata->vif.type = type;
2ca27bcff7127da net/mac80211/iface.c Johannes Berg 2010-09-16 1511 sdata->vif.p2p = true;
fc0561dc6a9c616 net/mac80211/iface.c Gustavo A. R. Silva 2020-07-07 1512 fallthrough;
05c914fe330fa8e net/mac80211/iface.c Johannes Berg 2008-09-11 1513 case NL80211_IFTYPE_AP:
d012a605108a482 net/mac80211/iface.c Marco Porsch 2012-10-10 1514 skb_queue_head_init(&sdata->u.ap.ps.bc_buf);
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1515 INIT_LIST_HEAD(&sdata->u.ap.vlans);
ad2d223aa900179 net/mac80211/iface.c Johannes Berg 2012-12-14 1516 sdata->vif.bss_conf.bssid = sdata->vif.addr;
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1517 break;
2ca27bcff7127da net/mac80211/iface.c Johannes Berg 2010-09-16 1518 case NL80211_IFTYPE_P2P_CLIENT:
2ca27bcff7127da net/mac80211/iface.c Johannes Berg 2010-09-16 1519 type = NL80211_IFTYPE_STATION;
2ca27bcff7127da net/mac80211/iface.c Johannes Berg 2010-09-16 1520 sdata->vif.type = type;
2ca27bcff7127da net/mac80211/iface.c Johannes Berg 2010-09-16 1521 sdata->vif.p2p = true;
fc0561dc6a9c616 net/mac80211/iface.c Gustavo A. R. Silva 2020-07-07 1522 fallthrough;
05c914fe330fa8e net/mac80211/iface.c Johannes Berg 2008-09-11 1523 case NL80211_IFTYPE_STATION:
ad2d223aa900179 net/mac80211/iface.c Johannes Berg 2012-12-14 1524 sdata->vif.bss_conf.bssid = sdata->u.mgd.bssid;
9c6bd79011b14a8 net/mac80211/iface.c Johannes Berg 2008-09-11 1525 ieee80211_sta_setup_sdata(sdata);
472dbc45dc19662 net/mac80211/iface.c Johannes Berg 2008-09-11 1526 break;
6e0bd6c35b021dc net/mac80211/iface.c Rostislav Lisovy 2014-11-03 1527 case NL80211_IFTYPE_OCB:
239281f803e2efd net/mac80211/iface.c Rostislav Lisovy 2014-11-03 1528 sdata->vif.bss_conf.bssid = bssid_wildcard;
239281f803e2efd net/mac80211/iface.c Rostislav Lisovy 2014-11-03 1529 ieee80211_ocb_setup_sdata(sdata);
6e0bd6c35b021dc net/mac80211/iface.c Rostislav Lisovy 2014-11-03 1530 break;
469002983fc90c2 net/mac80211/iface.c Johannes Berg 2009-02-15 1531 case NL80211_IFTYPE_ADHOC:
ad2d223aa900179 net/mac80211/iface.c Johannes Berg 2012-12-14 1532 sdata->vif.bss_conf.bssid = sdata->u.ibss.bssid;
469002983fc90c2 net/mac80211/iface.c Johannes Berg 2009-02-15 1533 ieee80211_ibss_setup_sdata(sdata);
469002983fc90c2 net/mac80211/iface.c Johannes Berg 2009-02-15 1534 break;
05c914fe330fa8e net/mac80211/iface.c Johannes Berg 2008-09-11 1535 case NL80211_IFTYPE_MESH_POINT:
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1536 if (ieee80211_vif_is_mesh(&sdata->vif))
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1537 ieee80211_mesh_init_sdata(sdata);
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1538 break;
05c914fe330fa8e net/mac80211/iface.c Johannes Berg 2008-09-11 1539 case NL80211_IFTYPE_MONITOR:
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1540 sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP;
587e729ecff9594 net/mac80211/iface.c Johannes Berg 2009-01-30 1541 sdata->dev->netdev_ops = &ieee80211_monitorif_ops;
d82121845d44334 net/mac80211/iface.c Aviya Erenfeld 2016-08-29 1542 sdata->u.mntr.flags = MONITOR_FLAG_CONTROL |
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1543 MONITOR_FLAG_OTHER_BSS;
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1544 break;
167e33f4f68cc8e net/mac80211/iface.c Ayala Beker 2016-09-20 1545 case NL80211_IFTYPE_NAN:
167e33f4f68cc8e net/mac80211/iface.c Ayala Beker 2016-09-20 1546 idr_init(&sdata->u.nan.function_inst_ids);
167e33f4f68cc8e net/mac80211/iface.c Ayala Beker 2016-09-20 1547 spin_lock_init(&sdata->u.nan.func_lock);
167e33f4f68cc8e net/mac80211/iface.c Ayala Beker 2016-09-20 1548 sdata->vif.bss_conf.bssid = sdata->vif.addr;
167e33f4f68cc8e net/mac80211/iface.c Ayala Beker 2016-09-20 1549 break;
05c914fe330fa8e net/mac80211/iface.c Johannes Berg 2008-09-11 1550 case NL80211_IFTYPE_AP_VLAN:
98104fdeda63d57 net/mac80211/iface.c Johannes Berg 2012-06-16 1551 case NL80211_IFTYPE_P2P_DEVICE:
ad2d223aa900179 net/mac80211/iface.c Johannes Berg 2012-12-14 1552 sdata->vif.bss_conf.bssid = sdata->vif.addr;
f142c6b906da451 net/mac80211/iface.c Johannes Berg 2012-06-18 1553 break;
05c914fe330fa8e net/mac80211/iface.c Johannes Berg 2008-09-11 1554 case NL80211_IFTYPE_UNSPECIFIED:
2e161f78e5f63a7 net/mac80211/iface.c Johannes Berg 2010-08-12 1555 case NUM_NL80211_IFTYPES:
c7976f5272486e4 net/mac80211/iface.c Luca Coelho 2017-10-29 1556 WARN_ON(1);
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1557 break;
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1558 }
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1559
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1560 ieee80211_debugfs_add_netdev(sdata);
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1561 }
75636525fbfa78f net/mac80211/iface.c Johannes Berg 2008-07-09 1562
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 30448 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 8/8] cfg80211: remove WDS code
2020-11-09 9:57 [PATCH 0/8] wireless: remove WDS mode Johannes Berg
` (6 preceding siblings ...)
2020-11-09 9:57 ` [PATCH 7/8] mac80211: remove WDS-related code Johannes Berg
@ 2020-11-09 9:57 ` Johannes Berg
2020-11-09 11:11 ` Kalle Valo
2020-11-09 11:13 ` [PATCH 0/8] wireless: remove WDS mode Kalle Valo
8 siblings, 1 reply; 14+ messages in thread
From: Johannes Berg @ 2020-11-09 9:57 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
Remove all the code that was there to configure WDS interfaces,
now that there's no way to reach it anymore.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
include/net/cfg80211.h | 5 ----
include/uapi/linux/nl80211.h | 3 ++-
net/wireless/chan.c | 6 ++---
net/wireless/core.c | 8 +-----
net/wireless/nl80211.c | 36 ++-----------------------
net/wireless/rdev-ops.h | 10 -------
net/wireless/trace.h | 5 ----
net/wireless/util.c | 5 ++--
net/wireless/wext-compat.c | 51 ------------------------------------
9 files changed, 10 insertions(+), 119 deletions(-)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 0ba8d1fa6eb9..4ff804a8bc1d 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -3745,8 +3745,6 @@ struct mgmt_frame_regs {
* @get_tx_power: store the current TX power into the dbm variable;
* return 0 if successful
*
- * @set_wds_peer: set the WDS peer for a WDS interface
- *
* @rfkill_poll: polls the hw rfkill line, use cfg80211 reporting
* functions to adjust rfkill hw state
*
@@ -4067,9 +4065,6 @@ struct cfg80211_ops {
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
int *dbm);
- int (*set_wds_peer)(struct wiphy *wiphy, struct net_device *dev,
- const u8 *addr);
-
void (*rfkill_poll)(struct wiphy *wiphy);
#ifdef CONFIG_NL80211_TESTMODE
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index e1e5b3d4dd81..3e0d4a038ab6 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -757,7 +757,8 @@
* of any other interfaces, and other interfaces will again take
* precedence when they are used.
*
- * @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface.
+ * @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface
+ * (no longer supported).
*
* @NL80211_CMD_SET_MULTICAST_TO_UNICAST: Configure if this AP should perform
* multicast to unicast conversion. When enabled, all multicast packets
diff --git a/net/wireless/chan.c b/net/wireless/chan.c
index 22d1779ab2b1..e4030f1fbc60 100644
--- a/net/wireless/chan.c
+++ b/net/wireless/chan.c
@@ -530,10 +530,10 @@ int cfg80211_chandef_dfs_required(struct wiphy *wiphy,
case NL80211_IFTYPE_P2P_CLIENT:
case NL80211_IFTYPE_MONITOR:
case NL80211_IFTYPE_AP_VLAN:
- case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_P2P_DEVICE:
case NL80211_IFTYPE_NAN:
break;
+ case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_UNSPECIFIED:
case NUM_NL80211_IFTYPES:
WARN_ON(1);
@@ -677,12 +677,12 @@ bool cfg80211_beaconing_iface_active(struct wireless_dev *wdev)
case NL80211_IFTYPE_P2P_CLIENT:
case NL80211_IFTYPE_MONITOR:
case NL80211_IFTYPE_AP_VLAN:
- case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_P2P_DEVICE:
/* Can NAN type be considered as beaconing interface? */
case NL80211_IFTYPE_NAN:
break;
case NL80211_IFTYPE_UNSPECIFIED:
+ case NL80211_IFTYPE_WDS:
case NUM_NL80211_IFTYPES:
WARN_ON(1);
}
@@ -1324,12 +1324,12 @@ cfg80211_get_chan_state(struct wireless_dev *wdev,
break;
case NL80211_IFTYPE_MONITOR:
case NL80211_IFTYPE_AP_VLAN:
- case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_P2P_DEVICE:
case NL80211_IFTYPE_NAN:
/* these interface types don't really have a channel */
return;
case NL80211_IFTYPE_UNSPECIFIED:
+ case NL80211_IFTYPE_WDS:
case NUM_NL80211_IFTYPES:
WARN_ON(1);
}
diff --git a/net/wireless/core.c b/net/wireless/core.c
index 9f23923e8d29..f6b744e91ff4 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -631,10 +631,8 @@ static int wiphy_verify_combinations(struct wiphy *wiphy)
return -EINVAL;
}
-#ifndef CONFIG_WIRELESS_WDS
if (WARN_ON(all_iftypes & BIT(NL80211_IFTYPE_WDS)))
return -EINVAL;
-#endif
/* You can't even choose that many! */
if (WARN_ON(cnt < c->max_interfaces))
@@ -675,10 +673,8 @@ int wiphy_register(struct wiphy *wiphy)
!(wiphy->nan_supported_bands & BIT(NL80211_BAND_2GHZ)))))
return -EINVAL;
-#ifndef CONFIG_WIRELESS_WDS
if (WARN_ON(wiphy->interface_modes & BIT(NL80211_IFTYPE_WDS)))
return -EINVAL;
-#endif
if (WARN_ON(wiphy->pmsr_capa && !wiphy->pmsr_capa->ftm.supported))
return -EINVAL;
@@ -1202,9 +1198,6 @@ void __cfg80211_leave(struct cfg80211_registered_device *rdev,
case NL80211_IFTYPE_OCB:
__cfg80211_leave_ocb(rdev, dev);
break;
- case NL80211_IFTYPE_WDS:
- /* must be handled by mac80211/driver, has no APIs */
- break;
case NL80211_IFTYPE_P2P_DEVICE:
case NL80211_IFTYPE_NAN:
/* cannot happen, has no netdev */
@@ -1214,6 +1207,7 @@ void __cfg80211_leave(struct cfg80211_registered_device *rdev,
/* nothing to do */
break;
case NL80211_IFTYPE_UNSPECIFIED:
+ case NL80211_IFTYPE_WDS:
case NUM_NL80211_IFTYPES:
/* invalid */
break;
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index aad37e7c7f91..b76bdc8417c4 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1885,7 +1885,6 @@ static int nl80211_add_commands_unsplit(struct cfg80211_registered_device *rdev,
if (nla_put_u32(msg, i, NL80211_CMD_SET_CHANNEL))
goto nla_put_failure;
}
- CMD(set_wds_peer, SET_WDS_PEER);
if (rdev->wiphy.flags & WIPHY_FLAG_SUPPORTS_TDLS) {
CMD(tdls_mgmt, TDLS_MGMT);
CMD(tdls_oper, TDLS_OPER);
@@ -2863,8 +2862,8 @@ static int parse_txq_params(struct nlattr *tb[],
static bool nl80211_can_set_dev_channel(struct wireless_dev *wdev)
{
/*
- * You can only set the channel explicitly for WDS interfaces,
- * all others have their channel managed via their respective
+ * You can only set the channel explicitly for some interfaces,
+ * most have their channel managed via their respective
* "establish a connection" command (connect, join, ...)
*
* For AP/GO and mesh mode, the channel can be set with the
@@ -3069,29 +3068,6 @@ static int nl80211_set_channel(struct sk_buff *skb, struct genl_info *info)
return __nl80211_set_channel(rdev, netdev, info);
}
-static int nl80211_set_wds_peer(struct sk_buff *skb, struct genl_info *info)
-{
- struct cfg80211_registered_device *rdev = info->user_ptr[0];
- struct net_device *dev = info->user_ptr[1];
- struct wireless_dev *wdev = dev->ieee80211_ptr;
- const u8 *bssid;
-
- if (!info->attrs[NL80211_ATTR_MAC])
- return -EINVAL;
-
- if (netif_running(dev))
- return -EBUSY;
-
- if (!rdev->ops->set_wds_peer)
- return -EOPNOTSUPP;
-
- if (wdev->iftype != NL80211_IFTYPE_WDS)
- return -EOPNOTSUPP;
-
- bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
- return rdev_set_wds_peer(rdev, dev, bssid);
-}
-
static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
{
struct cfg80211_registered_device *rdev;
@@ -15173,14 +15149,6 @@ static const struct genl_small_ops nl80211_small_ops[] = {
.internal_flags = NL80211_FLAG_NEED_NETDEV |
NL80211_FLAG_NEED_RTNL,
},
- {
- .cmd = NL80211_CMD_SET_WDS_PEER,
- .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
- .doit = nl80211_set_wds_peer,
- .flags = GENL_UNS_ADMIN_PERM,
- .internal_flags = NL80211_FLAG_NEED_NETDEV |
- NL80211_FLAG_NEED_RTNL,
- },
{
.cmd = NL80211_CMD_JOIN_MESH,
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
diff --git a/net/wireless/rdev-ops.h b/net/wireless/rdev-ops.h
index 950d57494168..5e2f349c92a8 100644
--- a/net/wireless/rdev-ops.h
+++ b/net/wireless/rdev-ops.h
@@ -582,16 +582,6 @@ static inline int rdev_get_tx_power(struct cfg80211_registered_device *rdev,
return ret;
}
-static inline int rdev_set_wds_peer(struct cfg80211_registered_device *rdev,
- struct net_device *dev, const u8 *addr)
-{
- int ret;
- trace_rdev_set_wds_peer(&rdev->wiphy, dev, addr);
- ret = rdev->ops->set_wds_peer(&rdev->wiphy, dev, addr);
- trace_rdev_return_int(&rdev->wiphy, ret);
- return ret;
-}
-
static inline int
rdev_set_multicast_to_unicast(struct cfg80211_registered_device *rdev,
struct net_device *dev,
diff --git a/net/wireless/trace.h b/net/wireless/trace.h
index 6e218a0acd4e..817c6fef13be 100644
--- a/net/wireless/trace.h
+++ b/net/wireless/trace.h
@@ -838,11 +838,6 @@ DEFINE_EVENT(wiphy_netdev_mac_evt, rdev_del_mpath,
TP_ARGS(wiphy, netdev, mac)
);
-DEFINE_EVENT(wiphy_netdev_mac_evt, rdev_set_wds_peer,
- TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, const u8 *mac),
- TP_ARGS(wiphy, netdev, mac)
-);
-
TRACE_EVENT(rdev_dump_station,
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int _idx,
u8 *mac),
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 5b6c80ae564a..5af88037f1fb 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -550,8 +550,7 @@ int ieee80211_data_to_8023_exthdr(struct sk_buff *skb, struct ethhdr *ehdr,
return -1;
break;
case cpu_to_le16(IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS):
- if (unlikely(iftype != NL80211_IFTYPE_WDS &&
- iftype != NL80211_IFTYPE_MESH_POINT &&
+ if (unlikely(iftype != NL80211_IFTYPE_MESH_POINT &&
iftype != NL80211_IFTYPE_AP_VLAN &&
iftype != NL80211_IFTYPE_STATION))
return -1;
@@ -1051,7 +1050,6 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
case NL80211_IFTYPE_P2P_GO:
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_AP_VLAN:
- case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_MESH_POINT:
/* bridging OK */
break;
@@ -1063,6 +1061,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
/* not happening */
break;
case NL80211_IFTYPE_P2P_DEVICE:
+ case NL80211_IFTYPE_WDS:
case NL80211_IFTYPE_NAN:
WARN_ON(1);
break;
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c
index 78f2927ead7f..b84a345b2653 100644
--- a/net/wireless/wext-compat.c
+++ b/net/wireless/wext-compat.c
@@ -49,9 +49,6 @@ int cfg80211_wext_siwmode(struct net_device *dev, struct iw_request_info *info,
case IW_MODE_ADHOC:
type = NL80211_IFTYPE_ADHOC;
break;
- case IW_MODE_REPEAT:
- type = NL80211_IFTYPE_WDS;
- break;
case IW_MODE_MONITOR:
type = NL80211_IFTYPE_MONITOR;
break;
@@ -1150,50 +1147,6 @@ static int cfg80211_wext_giwpower(struct net_device *dev,
return 0;
}
-static int cfg80211_wds_wext_siwap(struct net_device *dev,
- struct iw_request_info *info,
- struct sockaddr *addr, char *extra)
-{
- struct wireless_dev *wdev = dev->ieee80211_ptr;
- struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
- int err;
-
- if (WARN_ON(wdev->iftype != NL80211_IFTYPE_WDS))
- return -EINVAL;
-
- if (addr->sa_family != ARPHRD_ETHER)
- return -EINVAL;
-
- if (netif_running(dev))
- return -EBUSY;
-
- if (!rdev->ops->set_wds_peer)
- return -EOPNOTSUPP;
-
- err = rdev_set_wds_peer(rdev, dev, (u8 *)&addr->sa_data);
- if (err)
- return err;
-
- memcpy(&wdev->wext.bssid, (u8 *) &addr->sa_data, ETH_ALEN);
-
- return 0;
-}
-
-static int cfg80211_wds_wext_giwap(struct net_device *dev,
- struct iw_request_info *info,
- struct sockaddr *addr, char *extra)
-{
- struct wireless_dev *wdev = dev->ieee80211_ptr;
-
- if (WARN_ON(wdev->iftype != NL80211_IFTYPE_WDS))
- return -EINVAL;
-
- addr->sa_family = ARPHRD_ETHER;
- memcpy(&addr->sa_data, wdev->wext.bssid, ETH_ALEN);
-
- return 0;
-}
-
static int cfg80211_wext_siwrate(struct net_device *dev,
struct iw_request_info *info,
struct iw_param *rate, char *extra)
@@ -1371,8 +1324,6 @@ static int cfg80211_wext_siwap(struct net_device *dev,
return cfg80211_ibss_wext_siwap(dev, info, ap_addr, extra);
case NL80211_IFTYPE_STATION:
return cfg80211_mgd_wext_siwap(dev, info, ap_addr, extra);
- case NL80211_IFTYPE_WDS:
- return cfg80211_wds_wext_siwap(dev, info, ap_addr, extra);
default:
return -EOPNOTSUPP;
}
@@ -1389,8 +1340,6 @@ static int cfg80211_wext_giwap(struct net_device *dev,
return cfg80211_ibss_wext_giwap(dev, info, ap_addr, extra);
case NL80211_IFTYPE_STATION:
return cfg80211_mgd_wext_giwap(dev, info, ap_addr, extra);
- case NL80211_IFTYPE_WDS:
- return cfg80211_wds_wext_giwap(dev, info, ap_addr, extra);
default:
return -EOPNOTSUPP;
}
--
2.26.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH 8/8] cfg80211: remove WDS code
2020-11-09 9:57 ` [PATCH 8/8] cfg80211: remove WDS code Johannes Berg
@ 2020-11-09 11:11 ` Kalle Valo
2020-11-09 11:12 ` Johannes Berg
0 siblings, 1 reply; 14+ messages in thread
From: Kalle Valo @ 2020-11-09 11:11 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless, Johannes Berg
Johannes Berg <johannes@sipsolutions.net> writes:
> From: Johannes Berg <johannes.berg@intel.com>
>
> Remove all the code that was there to configure WDS interfaces,
> now that there's no way to reach it anymore.
>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
[...]
> @@ -675,10 +673,8 @@ int wiphy_register(struct wiphy *wiphy)
> !(wiphy->nan_supported_bands & BIT(NL80211_BAND_2GHZ)))))
> return -EINVAL;
>
> -#ifndef CONFIG_WIRELESS_WDS
> if (WARN_ON(wiphy->interface_modes & BIT(NL80211_IFTYPE_WDS)))
> return -EINVAL;
> -#endif
What about out-of-tree drivers? Should we have (or do we already have?)
a some kind safe guard if an out of tree driver tries to use WDS?
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 8/8] cfg80211: remove WDS code
2020-11-09 11:11 ` Kalle Valo
@ 2020-11-09 11:12 ` Johannes Berg
2020-11-09 11:33 ` Kalle Valo
0 siblings, 1 reply; 14+ messages in thread
From: Johannes Berg @ 2020-11-09 11:12 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless
On Mon, 2020-11-09 at 13:11 +0200, Kalle Valo wrote:
> Johannes Berg <johannes@sipsolutions.net> writes:
>
> > From: Johannes Berg <johannes.berg@intel.com>
> >
> > Remove all the code that was there to configure WDS interfaces,
> > now that there's no way to reach it anymore.
> >
> > Signed-off-by: Johannes Berg <johannes.berg@intel.com>
>
> [...]
>
> > @@ -675,10 +673,8 @@ int wiphy_register(struct wiphy *wiphy)
> > !(wiphy->nan_supported_bands & BIT(NL80211_BAND_2GHZ)))))
> > return -EINVAL;
> >
> > -#ifndef CONFIG_WIRELESS_WDS
> > if (WARN_ON(wiphy->interface_modes & BIT(NL80211_IFTYPE_WDS)))
> > return -EINVAL;
> > -#endif
>
> What about out-of-tree drivers? Should we have (or do we already have?)
> a some kind safe guard if an out of tree driver tries to use WDS?
That's what happens here, no? We warn and return invalid - now
unconditionally, before we allowed it if CONFIG_WIRELESS_WDS was
enabled.
johannes
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 8/8] cfg80211: remove WDS code
2020-11-09 11:12 ` Johannes Berg
@ 2020-11-09 11:33 ` Kalle Valo
0 siblings, 0 replies; 14+ messages in thread
From: Kalle Valo @ 2020-11-09 11:33 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless
Johannes Berg <johannes@sipsolutions.net> writes:
> On Mon, 2020-11-09 at 13:11 +0200, Kalle Valo wrote:
>> Johannes Berg <johannes@sipsolutions.net> writes:
>>
>> > From: Johannes Berg <johannes.berg@intel.com>
>> >
>> > Remove all the code that was there to configure WDS interfaces,
>> > now that there's no way to reach it anymore.
>> >
>> > Signed-off-by: Johannes Berg <johannes.berg@intel.com>
>>
>> [...]
>>
>> > @@ -675,10 +673,8 @@ int wiphy_register(struct wiphy *wiphy)
>> > !(wiphy->nan_supported_bands & BIT(NL80211_BAND_2GHZ)))))
>> > return -EINVAL;
>> >
>> > -#ifndef CONFIG_WIRELESS_WDS
>> > if (WARN_ON(wiphy->interface_modes & BIT(NL80211_IFTYPE_WDS)))
>> > return -EINVAL;
>> > -#endif
>>
>> What about out-of-tree drivers? Should we have (or do we already have?)
>> a some kind safe guard if an out of tree driver tries to use WDS?
>
> That's what happens here, no? We warn and return invalid - now
> unconditionally, before we allowed it if CONFIG_WIRELESS_WDS was
> enabled.
Argh, I'm blind. I read that the whole if block was removed :) Sorry for
the noise.
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/8] wireless: remove WDS mode
2020-11-09 9:57 [PATCH 0/8] wireless: remove WDS mode Johannes Berg
` (7 preceding siblings ...)
2020-11-09 9:57 ` [PATCH 8/8] cfg80211: remove WDS code Johannes Berg
@ 2020-11-09 11:13 ` Kalle Valo
8 siblings, 0 replies; 14+ messages in thread
From: Kalle Valo @ 2020-11-09 11:13 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless
Johannes Berg <johannes@sipsolutions.net> writes:
> We use 4-addr AP/client instead. Remove WDS code that was
> basically not possible to enable anyway.
If you take the driver patches to your tree:
Acked-by: Kalle Valo <kvalo@codeaurora.org>
But just let me know if I should take the driver patches instead.
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 14+ messages in thread