All of lore.kernel.org
 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; 16+ 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] 16+ 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; 16+ 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] 16+ 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; 16+ 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] 16+ 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; 16+ 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] 16+ 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; 16+ 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] 16+ 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; 16+ 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] 16+ 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; 16+ 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] 16+ 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-11 11:23   ` 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, 2 replies; 16+ 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] 16+ 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; 16+ 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] 16+ 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; 16+ 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] 16+ 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; 16+ 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] 16+ 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; 16+ 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] 16+ 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; 16+ 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] 16+ 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
  2020-11-11 11:23   ` kernel test robot
  1 sibling, 0 replies; 16+ 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] 16+ messages in thread

* Re: [PATCH 7/8] mac80211: remove WDS-related code
@ 2020-11-10  4:58     ` kernel test robot
  0 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2020-11-10  4:58 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 13324 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(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30448 bytes --]

^ permalink raw reply	[flat|nested] 16+ 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
@ 2020-11-11 11:23   ` kernel test robot
  1 sibling, 0 replies; 16+ messages in thread
From: kernel test robot @ 2020-11-11 11:23 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 13409 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-20201111]
[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: arm64-randconfig-r013-20201109 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 09ec07827b1128504457a93dee80b2ceee1af600)
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
        # install arm64 cross compiling tool for clang build
        # apt-get install binutils-aarch64-linux-gnu
        # 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=clang make.cross ARCH=arm64 

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:1015:19: warning: unused variable 'sta' [-Wunused-variable]
           struct sta_info *sta;
                            ^
>> net/mac80211/iface.c:1507:10: warning: enumeration value 'NL80211_IFTYPE_WDS' not handled in switch [-Wswitch]
           switch (type) {
                   ^
   2 warnings generated.

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(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34259 bytes --]

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

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

Thread overview: 16+ 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-10  4:58     ` kernel test robot
2020-11-11 11:23   ` 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.