linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/8] wireless: remove WDS mode
@ 2020-11-09  9:57 Johannes Berg
  2020-11-09  9:57 ` [PATCH 1/8] wireless: remove CONFIG_WIRELESS_WDS Johannes Berg
                   ` (8 more replies)
  0 siblings, 9 replies; 14+ messages in thread
From: Johannes Berg @ 2020-11-09  9:57 UTC (permalink / raw)
  To: linux-wireless

We use 4-addr AP/client instead. Remove WDS code that was
basically not possible to enable anyway.

johannes



^ permalink raw reply	[flat|nested] 14+ messages in thread

* [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

* [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 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

* 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 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

end of thread, other threads:[~2020-11-10  4:58 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [PATCH 3/8] carl9170: " Johannes Berg
2020-11-09  9:57 ` [PATCH 4/8] b43: " Johannes Berg
2020-11-09  9:57 ` [PATCH 5/8] b43legacy: " Johannes Berg
2020-11-09  9:57 ` [PATCH 6/8] rt2x00: " Johannes Berg
2020-11-09  9:57 ` [PATCH 7/8] mac80211: remove WDS-related code 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:11   ` Kalle Valo
2020-11-09 11:12     ` Johannes Berg
2020-11-09 11:33       ` Kalle Valo
2020-11-09 11:13 ` [PATCH 0/8] wireless: remove WDS mode Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).