2023-10-10 15:57:52

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] [RFC] wireless: move obsolete drivers to staging

From: Arnd Bergmann <[email protected]>

While looking at the old drivers using the obsolete .ndo_do_ioctl()
callback, I found a number of network drivers that are especially
obsolete, in particular for 802.11b (11Mbit/s) or even older wireless
networks, using non-busmaster ISA/PCMCIA style bus interfaces, and using
the legacy wireless extension ioctls rather than the netlink interfaces
that were meant to replace them in 2007. All of these drivers are
obsolete or orphaned.

We had previously discussed this topic, but nobody ever moved the
files, so I now went through the list to my best knowledge. These
are the drivers that I would classify as "probably unused" by now:

- Atmel at76c502/at76c504/at76c506 is a PIO-only (PCMCIA, mini-PCI
and Cardbus) 802.11b driver with incomplete CFG80211 support.
The related at76c50x USB driver uses MAC80211 and remains.

- Cisco Aironet is an 802.11b PCMCIA and mini-PCI with limited support
for Cardbus DMA and for CFG80211.

- HostAP is an ISA/PCMCIA style 802.11b driver supporting only
wireless extensions, and some custom ioctls (already removed).
Some devices include a legacy PCI bridge but no DMA.

- Aviator/Raytheon is an early PCMCIA driver, apparently predating
802.11b and only supporting wireless extensions.

- Planet WL3501 is another PCMCIA driver for pre-802.11b interfaces
(2Mbit/s) with incomplete CFG80211 support

- Zydas zd1201 is a USB 802.11b driver with limited support for
CFG80211.

- Orinoco is a PIO-only ISA/PCMCIA 802.11b device with extra bus
interface connections for PCI/Cardbus/mini-PCI and a few
pre-2002 Apple PowerMac variants. It supports both
wireless extensions and CFG80211, but I could not tell if
it requires using both.

- Wireless RNDIS USB is a new-style CFG80211 driver for 802.11b
and 802.11g USB hardware from around 2004 to 2006. This makes it
more modern than any of the others, but Kalle already classified
it as "legacy" in commit 298e50ad8eb8f ("wifi: move raycs, wl3501
and rndis_wlan to legacy directory"), so it stays with ray_cs and
wl3501_cs.

There are a few other drivers that are similar to these but that are
more likely to still be needed, and are not moved here:

- Intel ipw2x00 is a PCI bus-master device for 802.11a/b/g that was
popular in "Centrino" branded laptops from 2003 to 2005, but it
still requires wireless extensions.

- Marvell Libertas is an 802.11a/b/g device with a number of bus
interfaces (USB, SDIO, SPI, PCMCIA) and incomplete CFG80211
support. This one was used in the OLPC XO laptop and some other
embedded devices that are still supported.

- Some broadcom b43xx devices use the SSB bus that can be abstracted
through PCMCIA. All of them use CFG80211.

- The Sony Playstation 3 "gelic" ethernet driver contains a bridge
and an 802.11b/g client chip that is controlled through a hypervisor
interface from the OS, and it uses wireless extensions in the kernel
driver.

Link: https://lore.kernel.org/all/[email protected]/
Signed-off-by: Arnd Bergmann <[email protected]>
---
I'm mainly taking educated guesses about which drivers are actually
obsolete. Let me know if I got any of them wrong, or if any others
should be included here.

I did not move the staging drivers for ks7010, rtl8192e, rtl8192u,
rtl8712, rtl8723bs, vt6656 or wlan-ng into driver/staging/wireless,
as they are already directly under drivers/staging, but that could
be another patch if we want to keep them all in one place.
---
MAINTAINERS | 16 ++++-----
drivers/net/wireless/Kconfig | 4 ---
drivers/net/wireless/Makefile | 2 --
drivers/net/wireless/atmel/Kconfig | 35 -------------------
drivers/net/wireless/atmel/Makefile | 4 ---
drivers/net/wireless/intersil/Kconfig | 2 --
drivers/net/wireless/intersil/Makefile | 2 --
drivers/net/wireless/zydas/Kconfig | 19 ----------
drivers/net/wireless/zydas/Makefile | 2 --
drivers/staging/Kconfig | 2 ++
drivers/staging/Makefile | 1 +
drivers/staging/wireless/Kconfig | 11 ++++++
drivers/staging/wireless/Makefile | 8 +++++
drivers/staging/wireless/TODO | 11 ++++++
drivers/staging/wireless/atmel/Kconfig | 35 +++++++++++++++++++
drivers/staging/wireless/atmel/Makefile | 6 ++++
.../{net => staging}/wireless/atmel/atmel.c | 0
.../{net => staging}/wireless/atmel/atmel.h | 0
.../wireless/atmel/atmel_cs.c | 0
.../wireless/atmel/atmel_pci.c | 0
.../{net => staging}/wireless/cisco/Kconfig | 0
.../{net => staging}/wireless/cisco/Makefile | 0
.../{net => staging}/wireless/cisco/airo.c | 0
.../{net => staging}/wireless/cisco/airo.h | 0
.../{net => staging}/wireless/cisco/airo_cs.c | 0
.../wireless}/hostap/Kconfig | 1 +
.../wireless}/hostap/Makefile | 0
.../wireless}/hostap/hostap.h | 0
.../wireless}/hostap/hostap_80211.h | 0
.../wireless}/hostap/hostap_80211_rx.c | 0
.../wireless}/hostap/hostap_80211_tx.c | 0
.../wireless}/hostap/hostap_ap.c | 0
.../wireless}/hostap/hostap_ap.h | 0
.../wireless}/hostap/hostap_common.h | 0
.../wireless}/hostap/hostap_config.h | 0
.../wireless}/hostap/hostap_cs.c | 0
.../wireless}/hostap/hostap_download.c | 0
.../wireless}/hostap/hostap_hw.c | 0
.../wireless}/hostap/hostap_info.c | 0
.../wireless}/hostap/hostap_ioctl.c | 0
.../wireless}/hostap/hostap_main.c | 0
.../wireless}/hostap/hostap_pci.c | 0
.../wireless}/hostap/hostap_plx.c | 0
.../wireless}/hostap/hostap_proc.c | 0
.../wireless}/hostap/hostap_wlan.h | 0
.../{net => staging}/wireless/legacy/Kconfig | 0
.../{net => staging}/wireless/legacy/Makefile | 0
.../{net => staging}/wireless/legacy/ray_cs.c | 0
.../{net => staging}/wireless/legacy/ray_cs.h | 0
.../{net => staging}/wireless/legacy/rayctl.h | 0
.../wireless/legacy/rndis_wlan.c | 0
.../{net => staging}/wireless/legacy/wl3501.h | 0
.../wireless/legacy/wl3501_cs.c | 0
.../wireless}/orinoco/Kconfig | 0
.../wireless}/orinoco/Makefile | 0
.../wireless}/orinoco/airport.c | 0
.../wireless}/orinoco/cfg.c | 0
.../wireless}/orinoco/cfg.h | 0
.../wireless}/orinoco/fw.c | 0
.../wireless}/orinoco/fw.h | 0
.../wireless}/orinoco/hermes.c | 0
.../wireless}/orinoco/hermes.h | 0
.../wireless}/orinoco/hermes_dld.c | 0
.../wireless}/orinoco/hermes_dld.h | 0
.../wireless}/orinoco/hermes_rid.h | 0
.../wireless}/orinoco/hw.c | 0
.../wireless}/orinoco/hw.h | 0
.../wireless}/orinoco/main.c | 0
.../wireless}/orinoco/main.h | 0
.../wireless}/orinoco/mic.c | 0
.../wireless}/orinoco/mic.h | 0
.../wireless}/orinoco/orinoco.h | 0
.../wireless}/orinoco/orinoco_cs.c | 0
.../wireless}/orinoco/orinoco_nortel.c | 0
.../wireless}/orinoco/orinoco_pci.c | 0
.../wireless}/orinoco/orinoco_pci.h | 0
.../wireless}/orinoco/orinoco_plx.c | 0
.../wireless}/orinoco/orinoco_tmd.c | 0
.../wireless}/orinoco/orinoco_usb.c | 0
.../wireless}/orinoco/scan.c | 0
.../wireless}/orinoco/scan.h | 0
.../wireless}/orinoco/spectrum_cs.c | 0
.../wireless}/orinoco/wext.c | 0
.../wireless}/orinoco/wext.h | 0
drivers/staging/wireless/zydas/Kconfig | 20 +++++++++++
drivers/staging/wireless/zydas/Makefile | 3 ++
.../{net => staging}/wireless/zydas/zd1201.c | 0
.../{net => staging}/wireless/zydas/zd1201.h | 0
88 files changed, 106 insertions(+), 78 deletions(-)
create mode 100644 drivers/staging/wireless/Kconfig
create mode 100644 drivers/staging/wireless/Makefile
create mode 100644 drivers/staging/wireless/TODO
create mode 100644 drivers/staging/wireless/atmel/Kconfig
create mode 100644 drivers/staging/wireless/atmel/Makefile
rename drivers/{net => staging}/wireless/atmel/atmel.c (100%)
rename drivers/{net => staging}/wireless/atmel/atmel.h (100%)
rename drivers/{net => staging}/wireless/atmel/atmel_cs.c (100%)
rename drivers/{net => staging}/wireless/atmel/atmel_pci.c (100%)
rename drivers/{net => staging}/wireless/cisco/Kconfig (100%)
rename drivers/{net => staging}/wireless/cisco/Makefile (100%)
rename drivers/{net => staging}/wireless/cisco/airo.c (100%)
rename drivers/{net => staging}/wireless/cisco/airo.h (100%)
rename drivers/{net => staging}/wireless/cisco/airo_cs.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/Kconfig (98%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/Makefile (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_80211.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_80211_rx.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_80211_tx.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_ap.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_ap.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_common.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_config.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_cs.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_download.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_hw.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_info.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_ioctl.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_main.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_pci.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_plx.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_proc.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/hostap/hostap_wlan.h (100%)
rename drivers/{net => staging}/wireless/legacy/Kconfig (100%)
rename drivers/{net => staging}/wireless/legacy/Makefile (100%)
rename drivers/{net => staging}/wireless/legacy/ray_cs.c (100%)
rename drivers/{net => staging}/wireless/legacy/ray_cs.h (100%)
rename drivers/{net => staging}/wireless/legacy/rayctl.h (100%)
rename drivers/{net => staging}/wireless/legacy/rndis_wlan.c (100%)
rename drivers/{net => staging}/wireless/legacy/wl3501.h (100%)
rename drivers/{net => staging}/wireless/legacy/wl3501_cs.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/Kconfig (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/Makefile (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/airport.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/cfg.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/cfg.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/fw.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/fw.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/hermes.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/hermes.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/hermes_dld.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/hermes_dld.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/hermes_rid.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/hw.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/hw.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/main.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/main.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/mic.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/mic.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/orinoco.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/orinoco_cs.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/orinoco_nortel.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/orinoco_pci.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/orinoco_pci.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/orinoco_plx.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/orinoco_tmd.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/orinoco_usb.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/scan.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/scan.h (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/spectrum_cs.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/wext.c (100%)
rename drivers/{net/wireless/intersil => staging/wireless}/orinoco/wext.h (100%)
create mode 100644 drivers/staging/wireless/zydas/Kconfig
create mode 100644 drivers/staging/wireless/zydas/Makefile
rename drivers/{net => staging}/wireless/zydas/zd1201.c (100%)
rename drivers/{net => staging}/wireless/zydas/zd1201.h (100%)

diff --git a/MAINTAINERS b/MAINTAINERS
index e9e30ec6748ec..826c36d421dd1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2389,7 +2389,7 @@ F: drivers/memory/atmel*
F: drivers/watchdog/sama5d4_wdt.c
F: include/soc/at91/
X: drivers/input/touchscreen/atmel_mxt_ts.c
-X: drivers/net/wireless/atmel/
+X: drivers/staging/wireless/atmel/
N: at91
N: atmel

@@ -3298,7 +3298,7 @@ L: [email protected]
S: Orphan
W: http://www.thekelleys.org.uk/atmel
W: http://atmelwlandriver.sourceforge.net/
-F: drivers/net/wireless/atmel/atmel*
+F: drivers/staging/wireless/atmel/atmel*

ATOMIC INFRASTRUCTURE
M: Will Deacon <[email protected]>
@@ -9630,7 +9630,7 @@ F: drivers/iio/pressure/mprls0025pa.c
HOST AP DRIVER
L: [email protected]
S: Obsolete
-F: drivers/net/wireless/intersil/hostap/
+F: drivers/staging/wireless/hostap/

HP BIOSCFG DRIVER
M: Jorge Lopez <[email protected]>
@@ -16208,7 +16208,7 @@ L: [email protected]
S: Orphan
W: https://wireless.wiki.kernel.org/en/users/Drivers/orinoco
W: http://www.nongnu.org/orinoco/
-F: drivers/net/wireless/intersil/orinoco/
+F: drivers/staging/wireless/orinoco/

OV2659 OMNIVISION SENSOR DRIVER
M: "Lad, Prabhakar" <[email protected]>
@@ -18120,7 +18120,7 @@ F: include/ras/ras_event.h
RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER
L: [email protected]
S: Orphan
-F: drivers/net/wireless/legacy/ray*
+F: drivers/staging/wireless/legacy/ray*

RC-CORE / LIRC FRAMEWORK
M: Sean Young <[email protected]>
@@ -22594,7 +22594,7 @@ F: include/uapi/linux/usb/g_uvc.h
USB WIRELESS RNDIS DRIVER (rndis_wlan)
L: [email protected]
S: Orphan
-F: drivers/net/wireless/legacy/rndis_wlan.c
+F: drivers/staging/wireless/legacy/rndis_wlan.c

USB XHCI DRIVER
M: Mathias Nyman <[email protected]>
@@ -22607,7 +22607,7 @@ USB ZD1201 DRIVER
L: [email protected]
S: Orphan
W: http://linux-lc100020.sourceforge.net
-F: drivers/net/wireless/zydas/zd1201.*
+F: drivers/staging/wireless/zydas/zd1201.*

USER DATAGRAM PROTOCOL (UDP)
M: Willem de Bruijn <[email protected]>
@@ -23419,7 +23419,7 @@ F: drivers/input/misc/wistron_btns.c
WL3501 WIRELESS PCMCIA CARD DRIVER
L: [email protected]
S: Orphan
-F: drivers/net/wireless/legacy/wl3501*
+F: drivers/staging/wireless/legacy/wl3501*

WMI BINARY MOF DRIVER
M: Armin Wolf <[email protected]>
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 7555af5195ec3..35a805e10991e 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -20,9 +20,7 @@ if WLAN

source "drivers/net/wireless/admtek/Kconfig"
source "drivers/net/wireless/ath/Kconfig"
-source "drivers/net/wireless/atmel/Kconfig"
source "drivers/net/wireless/broadcom/Kconfig"
-source "drivers/net/wireless/cisco/Kconfig"
source "drivers/net/wireless/intel/Kconfig"
source "drivers/net/wireless/intersil/Kconfig"
source "drivers/net/wireless/marvell/Kconfig"
@@ -38,8 +36,6 @@ source "drivers/net/wireless/ti/Kconfig"
source "drivers/net/wireless/zydas/Kconfig"
source "drivers/net/wireless/quantenna/Kconfig"

-source "drivers/net/wireless/legacy/Kconfig"
-
source "drivers/net/wireless/virtual/Kconfig"

endif # WLAN
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
index 4d7374d567d18..e1c4141c60044 100644
--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -7,7 +7,6 @@ obj-$(CONFIG_WLAN_VENDOR_ADMTEK) += admtek/
obj-$(CONFIG_WLAN_VENDOR_ATH) += ath/
obj-$(CONFIG_WLAN_VENDOR_ATMEL) += atmel/
obj-$(CONFIG_WLAN_VENDOR_BROADCOM) += broadcom/
-obj-$(CONFIG_WLAN_VENDOR_CISCO) += cisco/
obj-$(CONFIG_WLAN_VENDOR_INTEL) += intel/
obj-$(CONFIG_WLAN_VENDOR_INTERSIL) += intersil/
obj-$(CONFIG_WLAN_VENDOR_MARVELL) += marvell/
@@ -23,5 +22,4 @@ obj-$(CONFIG_WLAN_VENDOR_ST) += st/
obj-$(CONFIG_WLAN_VENDOR_TI) += ti/
obj-$(CONFIG_WLAN_VENDOR_ZYDAS) += zydas/

-obj-$(CONFIG_WLAN) += legacy/
obj-$(CONFIG_WLAN) += virtual/
diff --git a/drivers/net/wireless/atmel/Kconfig b/drivers/net/wireless/atmel/Kconfig
index bafdd57b049a1..7a2bb7a58ab7e 100644
--- a/drivers/net/wireless/atmel/Kconfig
+++ b/drivers/net/wireless/atmel/Kconfig
@@ -12,41 +12,6 @@ config WLAN_VENDOR_ATMEL

if WLAN_VENDOR_ATMEL

-config ATMEL
- tristate "Atmel at76c50x chipset 802.11b support"
- depends on CFG80211 && (PCI || PCMCIA) && HAS_IOPORT
- select WIRELESS_EXT
- select WEXT_PRIV
- select FW_LOADER
- select CRC32
- help
- A driver 802.11b wireless cards based on the Atmel fast-vnet
- chips. This driver supports standard Linux wireless extensions.
-
- Many cards based on this chipset do not have flash memory
- and need their firmware loaded at start-up. If yours is
- one of these, you will need to provide a firmware image
- to be loaded into the card by the driver. The Atmel
- firmware package can be downloaded from
- <http://www.thekelleys.org.uk/atmel>
-
-config PCI_ATMEL
- tristate "Atmel at76c506 PCI cards"
- depends on ATMEL && PCI
- help
- Enable support for PCI and mini-PCI cards containing the
- Atmel at76c506 chip.
-
-config PCMCIA_ATMEL
- tristate "Atmel at76c502/at76c504 PCMCIA cards"
- depends on ATMEL && PCMCIA
- select WIRELESS_EXT
- select FW_LOADER
- select CRC32
- help
- Enable support for PCMCIA cards containing the
- Atmel at76c502 and at76c504 chips.
-
config AT76C50X_USB
tristate "Atmel at76c503/at76c505/at76c505a USB cards"
depends on MAC80211 && USB
diff --git a/drivers/net/wireless/atmel/Makefile b/drivers/net/wireless/atmel/Makefile
index 17e62805677d4..8338d7098ba60 100644
--- a/drivers/net/wireless/atmel/Makefile
+++ b/drivers/net/wireless/atmel/Makefile
@@ -1,6 +1,2 @@
# SPDX-License-Identifier: GPL-2.0-only
-obj-$(CONFIG_ATMEL) += atmel.o
-obj-$(CONFIG_PCI_ATMEL) += atmel_pci.o
-obj-$(CONFIG_PCMCIA_ATMEL) += atmel_cs.o
-
obj-$(CONFIG_AT76C50X_USB) += at76c50x-usb.o
diff --git a/drivers/net/wireless/intersil/Kconfig b/drivers/net/wireless/intersil/Kconfig
index bd6bf70ece03d..201b1534a9ca2 100644
--- a/drivers/net/wireless/intersil/Kconfig
+++ b/drivers/net/wireless/intersil/Kconfig
@@ -12,8 +12,6 @@ config WLAN_VENDOR_INTERSIL

if WLAN_VENDOR_INTERSIL

-source "drivers/net/wireless/intersil/hostap/Kconfig"
-source "drivers/net/wireless/intersil/orinoco/Kconfig"
source "drivers/net/wireless/intersil/p54/Kconfig"

endif # WLAN_VENDOR_INTERSIL
diff --git a/drivers/net/wireless/intersil/Makefile b/drivers/net/wireless/intersil/Makefile
index 65281d1b3d852..27e9b2869da1a 100644
--- a/drivers/net/wireless/intersil/Makefile
+++ b/drivers/net/wireless/intersil/Makefile
@@ -1,4 +1,2 @@
# SPDX-License-Identifier: GPL-2.0-only
-obj-$(CONFIG_HOSTAP) += hostap/
-obj-$(CONFIG_HERMES) += orinoco/
obj-$(CONFIG_P54_COMMON) += p54/
diff --git a/drivers/net/wireless/zydas/Kconfig b/drivers/net/wireless/zydas/Kconfig
index 08574433df66f..839e1217e855c 100644
--- a/drivers/net/wireless/zydas/Kconfig
+++ b/drivers/net/wireless/zydas/Kconfig
@@ -12,25 +12,6 @@ config WLAN_VENDOR_ZYDAS

if WLAN_VENDOR_ZYDAS

-config USB_ZD1201
- tristate "USB ZD1201 based Wireless device support"
- depends on CFG80211 && USB
- select WIRELESS_EXT
- select WEXT_PRIV
- select FW_LOADER
- help
- Say Y if you want to use wireless LAN adapters based on the ZyDAS
- ZD1201 chip.
-
- This driver makes the adapter appear as a normal Ethernet interface,
- typically on wlan0.
-
- The zd1201 device requires external firmware to be loaded.
- This can be found at http://linux-lc100020.sourceforge.net/
-
- To compile this driver as a module, choose M here: the
- module will be called zd1201.
-
source "drivers/net/wireless/zydas/zd1211rw/Kconfig"

endif # WLAN_VENDOR_ZYDAS
diff --git a/drivers/net/wireless/zydas/Makefile b/drivers/net/wireless/zydas/Makefile
index c70003d30a8fb..3e0a51db98742 100644
--- a/drivers/net/wireless/zydas/Makefile
+++ b/drivers/net/wireless/zydas/Makefile
@@ -1,4 +1,2 @@
# SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_ZD1211RW) += zd1211rw/
-
-obj-$(CONFIG_USB_ZD1201) += zd1201.o
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index f9aef39cac2e9..8206d994f144d 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -36,6 +36,8 @@ source "drivers/staging/rtl8723bs/Kconfig"

source "drivers/staging/rtl8712/Kconfig"

+source "drivers/staging/wireless/Kconfig"
+
source "drivers/staging/rts5208/Kconfig"

source "drivers/staging/octeon/Kconfig"
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index ffa70dda481d3..43c7e7a23b296 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -13,6 +13,7 @@ obj-$(CONFIG_OCTEON_ETHERNET) += octeon/
obj-$(CONFIG_VT6655) += vt6655/
obj-$(CONFIG_VT6656) += vt6656/
obj-$(CONFIG_VME_BUS) += vme_user/
+obj-$(CONFIG_WLAN) += wireless/
obj-$(CONFIG_IIO) += iio/
obj-$(CONFIG_FB_SM750) += sm750fb/
obj-$(CONFIG_USB_EMXX) += emxx_udc/
diff --git a/drivers/staging/wireless/Kconfig b/drivers/staging/wireless/Kconfig
new file mode 100644
index 0000000000000..a8ce42aa3e944
--- /dev/null
+++ b/drivers/staging/wireless/Kconfig
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: GPL-2.0
+if WIRELESS
+
+source "drivers/staging/wireless/atmel/Kconfig"
+source "drivers/staging/wireless/cisco/Kconfig"
+source "drivers/staging/wireless/hostap/Kconfig"
+source "drivers/staging/wireless/legacy/Kconfig"
+source "drivers/staging/wireless/orinoco/Kconfig"
+source "drivers/staging/wireless/zydas/Kconfig"
+
+endif
diff --git a/drivers/staging/wireless/Makefile b/drivers/staging/wireless/Makefile
new file mode 100644
index 0000000000000..33179fca40953
--- /dev/null
+++ b/drivers/staging/wireless/Makefile
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-y += atmel/
+obj-y += cisco/
+obj-y += hostap/
+obj-y += legacy/
+obj-y += orinoco/
+obj-y += zydas/
diff --git a/drivers/staging/wireless/TODO b/drivers/staging/wireless/TODO
new file mode 100644
index 0000000000000..7a3c1b6e7db41
--- /dev/null
+++ b/drivers/staging/wireless/TODO
@@ -0,0 +1,11 @@
+TODO (Oct. 2023)
+
+These 802.11(b) wireless drivers are likely all unused and can be removed
+in the near future, unless we find a reason to keep them.
+
+All except the rndis_wlan driver still rely on the deprecated wireless
+extension ioctl interface, which in modern drivers is only provided
+as an emulation layer on top of the cfg80211 interface.
+
+Ideally, any drivers we want to keep around should be converted to no
+longer require iw_handler_def.
diff --git a/drivers/staging/wireless/atmel/Kconfig b/drivers/staging/wireless/atmel/Kconfig
new file mode 100644
index 0000000000000..5771c82966347
--- /dev/null
+++ b/drivers/staging/wireless/atmel/Kconfig
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: GPL-2.0-only
+config ATMEL
+ tristate "Atmel at76c50x chipset 802.11b support"
+ depends on CFG80211 && (PCI || PCMCIA) && HAS_IOPORT
+ select WIRELESS_EXT
+ select WEXT_PRIV
+ select FW_LOADER
+ select CRC32
+ help
+ A driver 802.11b wireless cards based on the Atmel fast-vnet
+ chips. This driver supports standard Linux wireless extensions.
+
+ Many cards based on this chipset do not have flash memory
+ and need their firmware loaded at start-up. If yours is
+ one of these, you will need to provide a firmware image
+ to be loaded into the card by the driver. The Atmel
+ firmware package can be downloaded from
+ <http://www.thekelleys.org.uk/atmel>
+
+config PCI_ATMEL
+ tristate "Atmel at76c506 PCI cards"
+ depends on ATMEL && PCI
+ help
+ Enable support for PCI and mini-PCI cards containing the
+ Atmel at76c506 chip.
+
+config PCMCIA_ATMEL
+ tristate "Atmel at76c502/at76c504 PCMCIA cards"
+ depends on ATMEL && PCMCIA
+ select WIRELESS_EXT
+ select FW_LOADER
+ select CRC32
+ help
+ Enable support for PCMCIA cards containing the
+ Atmel at76c502 and at76c504 chips.
diff --git a/drivers/staging/wireless/atmel/Makefile b/drivers/staging/wireless/atmel/Makefile
new file mode 100644
index 0000000000000..31d81bcd7ff7f
--- /dev/null
+++ b/drivers/staging/wireless/atmel/Makefile
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0-only
+obj-$(CONFIG_ATMEL) += atmel.o
+obj-$(CONFIG_PCI_ATMEL) += atmel_pci.o
+obj-$(CONFIG_PCMCIA_ATMEL) += atmel_cs.o
+
+
diff --git a/drivers/net/wireless/atmel/atmel.c b/drivers/staging/wireless/atmel/atmel.c
similarity index 100%
rename from drivers/net/wireless/atmel/atmel.c
rename to drivers/staging/wireless/atmel/atmel.c
diff --git a/drivers/net/wireless/atmel/atmel.h b/drivers/staging/wireless/atmel/atmel.h
similarity index 100%
rename from drivers/net/wireless/atmel/atmel.h
rename to drivers/staging/wireless/atmel/atmel.h
diff --git a/drivers/net/wireless/atmel/atmel_cs.c b/drivers/staging/wireless/atmel/atmel_cs.c
similarity index 100%
rename from drivers/net/wireless/atmel/atmel_cs.c
rename to drivers/staging/wireless/atmel/atmel_cs.c
diff --git a/drivers/net/wireless/atmel/atmel_pci.c b/drivers/staging/wireless/atmel/atmel_pci.c
similarity index 100%
rename from drivers/net/wireless/atmel/atmel_pci.c
rename to drivers/staging/wireless/atmel/atmel_pci.c
diff --git a/drivers/net/wireless/cisco/Kconfig b/drivers/staging/wireless/cisco/Kconfig
similarity index 100%
rename from drivers/net/wireless/cisco/Kconfig
rename to drivers/staging/wireless/cisco/Kconfig
diff --git a/drivers/net/wireless/cisco/Makefile b/drivers/staging/wireless/cisco/Makefile
similarity index 100%
rename from drivers/net/wireless/cisco/Makefile
rename to drivers/staging/wireless/cisco/Makefile
diff --git a/drivers/net/wireless/cisco/airo.c b/drivers/staging/wireless/cisco/airo.c
similarity index 100%
rename from drivers/net/wireless/cisco/airo.c
rename to drivers/staging/wireless/cisco/airo.c
diff --git a/drivers/net/wireless/cisco/airo.h b/drivers/staging/wireless/cisco/airo.h
similarity index 100%
rename from drivers/net/wireless/cisco/airo.h
rename to drivers/staging/wireless/cisco/airo.h
diff --git a/drivers/net/wireless/cisco/airo_cs.c b/drivers/staging/wireless/cisco/airo_cs.c
similarity index 100%
rename from drivers/net/wireless/cisco/airo_cs.c
rename to drivers/staging/wireless/cisco/airo_cs.c
diff --git a/drivers/net/wireless/intersil/hostap/Kconfig b/drivers/staging/wireless/hostap/Kconfig
similarity index 98%
rename from drivers/net/wireless/intersil/hostap/Kconfig
rename to drivers/staging/wireless/hostap/Kconfig
index 2edff8efbcbb1..2a7072d1e7dd6 100644
--- a/drivers/net/wireless/intersil/hostap/Kconfig
+++ b/drivers/staging/wireless/hostap/Kconfig
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
config HOSTAP
tristate "IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)"
+ depends on (PCMCIA || PCI) && HAS_IOPORT
select WIRELESS_EXT
select WEXT_SPY
select WEXT_PRIV
diff --git a/drivers/net/wireless/intersil/hostap/Makefile b/drivers/staging/wireless/hostap/Makefile
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/Makefile
rename to drivers/staging/wireless/hostap/Makefile
diff --git a/drivers/net/wireless/intersil/hostap/hostap.h b/drivers/staging/wireless/hostap/hostap.h
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap.h
rename to drivers/staging/wireless/hostap/hostap.h
diff --git a/drivers/net/wireless/intersil/hostap/hostap_80211.h b/drivers/staging/wireless/hostap/hostap_80211.h
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_80211.h
rename to drivers/staging/wireless/hostap/hostap_80211.h
diff --git a/drivers/net/wireless/intersil/hostap/hostap_80211_rx.c b/drivers/staging/wireless/hostap/hostap_80211_rx.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_80211_rx.c
rename to drivers/staging/wireless/hostap/hostap_80211_rx.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_80211_tx.c b/drivers/staging/wireless/hostap/hostap_80211_tx.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_80211_tx.c
rename to drivers/staging/wireless/hostap/hostap_80211_tx.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ap.c b/drivers/staging/wireless/hostap/hostap_ap.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_ap.c
rename to drivers/staging/wireless/hostap/hostap_ap.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ap.h b/drivers/staging/wireless/hostap/hostap_ap.h
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_ap.h
rename to drivers/staging/wireless/hostap/hostap_ap.h
diff --git a/drivers/net/wireless/intersil/hostap/hostap_common.h b/drivers/staging/wireless/hostap/hostap_common.h
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_common.h
rename to drivers/staging/wireless/hostap/hostap_common.h
diff --git a/drivers/net/wireless/intersil/hostap/hostap_config.h b/drivers/staging/wireless/hostap/hostap_config.h
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_config.h
rename to drivers/staging/wireless/hostap/hostap_config.h
diff --git a/drivers/net/wireless/intersil/hostap/hostap_cs.c b/drivers/staging/wireless/hostap/hostap_cs.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_cs.c
rename to drivers/staging/wireless/hostap/hostap_cs.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_download.c b/drivers/staging/wireless/hostap/hostap_download.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_download.c
rename to drivers/staging/wireless/hostap/hostap_download.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_hw.c b/drivers/staging/wireless/hostap/hostap_hw.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_hw.c
rename to drivers/staging/wireless/hostap/hostap_hw.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_info.c b/drivers/staging/wireless/hostap/hostap_info.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_info.c
rename to drivers/staging/wireless/hostap/hostap_info.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c b/drivers/staging/wireless/hostap/hostap_ioctl.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_ioctl.c
rename to drivers/staging/wireless/hostap/hostap_ioctl.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_main.c b/drivers/staging/wireless/hostap/hostap_main.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_main.c
rename to drivers/staging/wireless/hostap/hostap_main.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_pci.c b/drivers/staging/wireless/hostap/hostap_pci.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_pci.c
rename to drivers/staging/wireless/hostap/hostap_pci.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_plx.c b/drivers/staging/wireless/hostap/hostap_plx.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_plx.c
rename to drivers/staging/wireless/hostap/hostap_plx.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_proc.c b/drivers/staging/wireless/hostap/hostap_proc.c
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_proc.c
rename to drivers/staging/wireless/hostap/hostap_proc.c
diff --git a/drivers/net/wireless/intersil/hostap/hostap_wlan.h b/drivers/staging/wireless/hostap/hostap_wlan.h
similarity index 100%
rename from drivers/net/wireless/intersil/hostap/hostap_wlan.h
rename to drivers/staging/wireless/hostap/hostap_wlan.h
diff --git a/drivers/net/wireless/legacy/Kconfig b/drivers/staging/wireless/legacy/Kconfig
similarity index 100%
rename from drivers/net/wireless/legacy/Kconfig
rename to drivers/staging/wireless/legacy/Kconfig
diff --git a/drivers/net/wireless/legacy/Makefile b/drivers/staging/wireless/legacy/Makefile
similarity index 100%
rename from drivers/net/wireless/legacy/Makefile
rename to drivers/staging/wireless/legacy/Makefile
diff --git a/drivers/net/wireless/legacy/ray_cs.c b/drivers/staging/wireless/legacy/ray_cs.c
similarity index 100%
rename from drivers/net/wireless/legacy/ray_cs.c
rename to drivers/staging/wireless/legacy/ray_cs.c
diff --git a/drivers/net/wireless/legacy/ray_cs.h b/drivers/staging/wireless/legacy/ray_cs.h
similarity index 100%
rename from drivers/net/wireless/legacy/ray_cs.h
rename to drivers/staging/wireless/legacy/ray_cs.h
diff --git a/drivers/net/wireless/legacy/rayctl.h b/drivers/staging/wireless/legacy/rayctl.h
similarity index 100%
rename from drivers/net/wireless/legacy/rayctl.h
rename to drivers/staging/wireless/legacy/rayctl.h
diff --git a/drivers/net/wireless/legacy/rndis_wlan.c b/drivers/staging/wireless/legacy/rndis_wlan.c
similarity index 100%
rename from drivers/net/wireless/legacy/rndis_wlan.c
rename to drivers/staging/wireless/legacy/rndis_wlan.c
diff --git a/drivers/net/wireless/legacy/wl3501.h b/drivers/staging/wireless/legacy/wl3501.h
similarity index 100%
rename from drivers/net/wireless/legacy/wl3501.h
rename to drivers/staging/wireless/legacy/wl3501.h
diff --git a/drivers/net/wireless/legacy/wl3501_cs.c b/drivers/staging/wireless/legacy/wl3501_cs.c
similarity index 100%
rename from drivers/net/wireless/legacy/wl3501_cs.c
rename to drivers/staging/wireless/legacy/wl3501_cs.c
diff --git a/drivers/net/wireless/intersil/orinoco/Kconfig b/drivers/staging/wireless/orinoco/Kconfig
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/Kconfig
rename to drivers/staging/wireless/orinoco/Kconfig
diff --git a/drivers/net/wireless/intersil/orinoco/Makefile b/drivers/staging/wireless/orinoco/Makefile
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/Makefile
rename to drivers/staging/wireless/orinoco/Makefile
diff --git a/drivers/net/wireless/intersil/orinoco/airport.c b/drivers/staging/wireless/orinoco/airport.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/airport.c
rename to drivers/staging/wireless/orinoco/airport.c
diff --git a/drivers/net/wireless/intersil/orinoco/cfg.c b/drivers/staging/wireless/orinoco/cfg.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/cfg.c
rename to drivers/staging/wireless/orinoco/cfg.c
diff --git a/drivers/net/wireless/intersil/orinoco/cfg.h b/drivers/staging/wireless/orinoco/cfg.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/cfg.h
rename to drivers/staging/wireless/orinoco/cfg.h
diff --git a/drivers/net/wireless/intersil/orinoco/fw.c b/drivers/staging/wireless/orinoco/fw.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/fw.c
rename to drivers/staging/wireless/orinoco/fw.c
diff --git a/drivers/net/wireless/intersil/orinoco/fw.h b/drivers/staging/wireless/orinoco/fw.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/fw.h
rename to drivers/staging/wireless/orinoco/fw.h
diff --git a/drivers/net/wireless/intersil/orinoco/hermes.c b/drivers/staging/wireless/orinoco/hermes.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/hermes.c
rename to drivers/staging/wireless/orinoco/hermes.c
diff --git a/drivers/net/wireless/intersil/orinoco/hermes.h b/drivers/staging/wireless/orinoco/hermes.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/hermes.h
rename to drivers/staging/wireless/orinoco/hermes.h
diff --git a/drivers/net/wireless/intersil/orinoco/hermes_dld.c b/drivers/staging/wireless/orinoco/hermes_dld.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/hermes_dld.c
rename to drivers/staging/wireless/orinoco/hermes_dld.c
diff --git a/drivers/net/wireless/intersil/orinoco/hermes_dld.h b/drivers/staging/wireless/orinoco/hermes_dld.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/hermes_dld.h
rename to drivers/staging/wireless/orinoco/hermes_dld.h
diff --git a/drivers/net/wireless/intersil/orinoco/hermes_rid.h b/drivers/staging/wireless/orinoco/hermes_rid.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/hermes_rid.h
rename to drivers/staging/wireless/orinoco/hermes_rid.h
diff --git a/drivers/net/wireless/intersil/orinoco/hw.c b/drivers/staging/wireless/orinoco/hw.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/hw.c
rename to drivers/staging/wireless/orinoco/hw.c
diff --git a/drivers/net/wireless/intersil/orinoco/hw.h b/drivers/staging/wireless/orinoco/hw.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/hw.h
rename to drivers/staging/wireless/orinoco/hw.h
diff --git a/drivers/net/wireless/intersil/orinoco/main.c b/drivers/staging/wireless/orinoco/main.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/main.c
rename to drivers/staging/wireless/orinoco/main.c
diff --git a/drivers/net/wireless/intersil/orinoco/main.h b/drivers/staging/wireless/orinoco/main.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/main.h
rename to drivers/staging/wireless/orinoco/main.h
diff --git a/drivers/net/wireless/intersil/orinoco/mic.c b/drivers/staging/wireless/orinoco/mic.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/mic.c
rename to drivers/staging/wireless/orinoco/mic.c
diff --git a/drivers/net/wireless/intersil/orinoco/mic.h b/drivers/staging/wireless/orinoco/mic.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/mic.h
rename to drivers/staging/wireless/orinoco/mic.h
diff --git a/drivers/net/wireless/intersil/orinoco/orinoco.h b/drivers/staging/wireless/orinoco/orinoco.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/orinoco.h
rename to drivers/staging/wireless/orinoco/orinoco.h
diff --git a/drivers/net/wireless/intersil/orinoco/orinoco_cs.c b/drivers/staging/wireless/orinoco/orinoco_cs.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/orinoco_cs.c
rename to drivers/staging/wireless/orinoco/orinoco_cs.c
diff --git a/drivers/net/wireless/intersil/orinoco/orinoco_nortel.c b/drivers/staging/wireless/orinoco/orinoco_nortel.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/orinoco_nortel.c
rename to drivers/staging/wireless/orinoco/orinoco_nortel.c
diff --git a/drivers/net/wireless/intersil/orinoco/orinoco_pci.c b/drivers/staging/wireless/orinoco/orinoco_pci.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/orinoco_pci.c
rename to drivers/staging/wireless/orinoco/orinoco_pci.c
diff --git a/drivers/net/wireless/intersil/orinoco/orinoco_pci.h b/drivers/staging/wireless/orinoco/orinoco_pci.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/orinoco_pci.h
rename to drivers/staging/wireless/orinoco/orinoco_pci.h
diff --git a/drivers/net/wireless/intersil/orinoco/orinoco_plx.c b/drivers/staging/wireless/orinoco/orinoco_plx.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/orinoco_plx.c
rename to drivers/staging/wireless/orinoco/orinoco_plx.c
diff --git a/drivers/net/wireless/intersil/orinoco/orinoco_tmd.c b/drivers/staging/wireless/orinoco/orinoco_tmd.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/orinoco_tmd.c
rename to drivers/staging/wireless/orinoco/orinoco_tmd.c
diff --git a/drivers/net/wireless/intersil/orinoco/orinoco_usb.c b/drivers/staging/wireless/orinoco/orinoco_usb.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/orinoco_usb.c
rename to drivers/staging/wireless/orinoco/orinoco_usb.c
diff --git a/drivers/net/wireless/intersil/orinoco/scan.c b/drivers/staging/wireless/orinoco/scan.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/scan.c
rename to drivers/staging/wireless/orinoco/scan.c
diff --git a/drivers/net/wireless/intersil/orinoco/scan.h b/drivers/staging/wireless/orinoco/scan.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/scan.h
rename to drivers/staging/wireless/orinoco/scan.h
diff --git a/drivers/net/wireless/intersil/orinoco/spectrum_cs.c b/drivers/staging/wireless/orinoco/spectrum_cs.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/spectrum_cs.c
rename to drivers/staging/wireless/orinoco/spectrum_cs.c
diff --git a/drivers/net/wireless/intersil/orinoco/wext.c b/drivers/staging/wireless/orinoco/wext.c
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/wext.c
rename to drivers/staging/wireless/orinoco/wext.c
diff --git a/drivers/net/wireless/intersil/orinoco/wext.h b/drivers/staging/wireless/orinoco/wext.h
similarity index 100%
rename from drivers/net/wireless/intersil/orinoco/wext.h
rename to drivers/staging/wireless/orinoco/wext.h
diff --git a/drivers/staging/wireless/zydas/Kconfig b/drivers/staging/wireless/zydas/Kconfig
new file mode 100644
index 0000000000000..9ff2ce3e1695a
--- /dev/null
+++ b/drivers/staging/wireless/zydas/Kconfig
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+config USB_ZD1201
+ tristate "USB ZD1201 based Wireless device support"
+ depends on CFG80211 && USB
+ select WIRELESS_EXT
+ select WEXT_PRIV
+ select FW_LOADER
+ help
+ Say Y if you want to use wireless LAN adapters based on the ZyDAS
+ ZD1201 chip.
+
+ This driver makes the adapter appear as a normal Ethernet interface,
+ typically on wlan0.
+
+ The zd1201 device requires external firmware to be loaded.
+ This can be found at http://linux-lc100020.sourceforge.net/
+
+ To compile this driver as a module, choose M here: the
+ module will be called zd1201.
diff --git a/drivers/staging/wireless/zydas/Makefile b/drivers/staging/wireless/zydas/Makefile
new file mode 100644
index 0000000000000..5239cc17bd2ad
--- /dev/null
+++ b/drivers/staging/wireless/zydas/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+obj-$(CONFIG_USB_ZD1201) += zd1201.o
diff --git a/drivers/net/wireless/zydas/zd1201.c b/drivers/staging/wireless/zydas/zd1201.c
similarity index 100%
rename from drivers/net/wireless/zydas/zd1201.c
rename to drivers/staging/wireless/zydas/zd1201.c
diff --git a/drivers/net/wireless/zydas/zd1201.h b/drivers/staging/wireless/zydas/zd1201.h
similarity index 100%
rename from drivers/net/wireless/zydas/zd1201.h
rename to drivers/staging/wireless/zydas/zd1201.h
--
2.39.2


2023-10-11 05:40:23

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

Greg Kroah-Hartman <[email protected]> writes:

> On Tue, Oct 10, 2023 at 05:27:29PM +0200, Arnd Bergmann wrote:
>
>> From: Arnd Bergmann <[email protected]>
>>
>> While looking at the old drivers using the obsolete .ndo_do_ioctl()
>> callback, I found a number of network drivers that are especially
>> obsolete, in particular for 802.11b (11Mbit/s) or even older wireless
>> networks, using non-busmaster ISA/PCMCIA style bus interfaces, and using
>> the legacy wireless extension ioctls rather than the netlink interfaces
>> that were meant to replace them in 2007. All of these drivers are
>> obsolete or orphaned.
>>
>> We had previously discussed this topic, but nobody ever moved the
>> files, so I now went through the list to my best knowledge. These
>> are the drivers that I would classify as "probably unused" by now:
>>
>> - Atmel at76c502/at76c504/at76c506 is a PIO-only (PCMCIA, mini-PCI
>> and Cardbus) 802.11b driver with incomplete CFG80211 support.
>> The related at76c50x USB driver uses MAC80211 and remains.
>>
>> - Cisco Aironet is an 802.11b PCMCIA and mini-PCI with limited support
>> for Cardbus DMA and for CFG80211.
>>
>> - HostAP is an ISA/PCMCIA style 802.11b driver supporting only
>> wireless extensions, and some custom ioctls (already removed).
>> Some devices include a legacy PCI bridge but no DMA.
>>
>> - Aviator/Raytheon is an early PCMCIA driver, apparently predating
>> 802.11b and only supporting wireless extensions.
>>
>> - Planet WL3501 is another PCMCIA driver for pre-802.11b interfaces
>> (2Mbit/s) with incomplete CFG80211 support
>>
>> - Zydas zd1201 is a USB 802.11b driver with limited support for
>> CFG80211.
>>
>> - Orinoco is a PIO-only ISA/PCMCIA 802.11b device with extra bus
>> interface connections for PCI/Cardbus/mini-PCI and a few
>> pre-2002 Apple PowerMac variants. It supports both
>> wireless extensions and CFG80211, but I could not tell if
>> it requires using both.
>>
>> - Wireless RNDIS USB is a new-style CFG80211 driver for 802.11b
>> and 802.11g USB hardware from around 2004 to 2006. This makes it
>> more modern than any of the others, but Kalle already classified
>> it as "legacy" in commit 298e50ad8eb8f ("wifi: move raycs, wl3501
>> and rndis_wlan to legacy directory"), so it stays with ray_cs and
>> wl3501_cs.
>>
>> There are a few other drivers that are similar to these but that are
>> more likely to still be needed, and are not moved here:
>>
>> - Intel ipw2x00 is a PCI bus-master device for 802.11a/b/g that was
>> popular in "Centrino" branded laptops from 2003 to 2005, but it
>> still requires wireless extensions.
>>
>> - Marvell Libertas is an 802.11a/b/g device with a number of bus
>> interfaces (USB, SDIO, SPI, PCMCIA) and incomplete CFG80211
>> support. This one was used in the OLPC XO laptop and some other
>> embedded devices that are still supported.
>>
>> - Some broadcom b43xx devices use the SSB bus that can be abstracted
>> through PCMCIA. All of them use CFG80211.
>>
>> - The Sony Playstation 3 "gelic" ethernet driver contains a bridge
>> and an 802.11b/g client chip that is controlled through a hypervisor
>> interface from the OS, and it uses wireless extensions in the kernel
>> driver.
>>
>> Link: https://lore.kernel.org/all/[email protected]/
>> Signed-off-by: Arnd Bergmann <[email protected]>
>
> Stuff in drivers/staging/ is to get code _into_ the main portion of the
> kernel tree, not out. If these aren't being used, let's just drop them
> entirely.
>
> What is the need to have them move to staging, only to have me delete
> them in the next release after that (or after that?) Why delay and why
> not just remove them now?

We (the wireless folks) have been talking about dropping legacy drivers
on and off for several years now. The problem is that we don't know
which of them work and which not, for example IIRC someone reported
recently that wl3501 still works.

Personally I would be extremly happy to remove all the ancient drivers
as that reduces the amount of code for us to maintain but is that the
right thing to do for the users? I don't have an answer to that,
comments very welcome.

I have been also wondering if I should add warnings like this to every
ancient driver to see if there are any users left:

"wl3501 wireless driver will be removed in 2024. If the driver still
works and you are using it send a report NOW to
[email protected] to avoid the removal."

But with the long release cycles the kernel and distros have I doubt
waiting for a year is enough, it should be more like three years.

--
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

2023-10-11 06:18:53

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On Wed, Oct 11, 2023 at 08:40:00AM +0300, Kalle Valo wrote:
> Greg Kroah-Hartman <[email protected]> writes:
>
> > On Tue, Oct 10, 2023 at 05:27:29PM +0200, Arnd Bergmann wrote:
> >
> >> From: Arnd Bergmann <[email protected]>
> >>
> >> While looking at the old drivers using the obsolete .ndo_do_ioctl()
> >> callback, I found a number of network drivers that are especially
> >> obsolete, in particular for 802.11b (11Mbit/s) or even older wireless
> >> networks, using non-busmaster ISA/PCMCIA style bus interfaces, and using
> >> the legacy wireless extension ioctls rather than the netlink interfaces
> >> that were meant to replace them in 2007. All of these drivers are
> >> obsolete or orphaned.
> >>
> >> We had previously discussed this topic, but nobody ever moved the
> >> files, so I now went through the list to my best knowledge. These
> >> are the drivers that I would classify as "probably unused" by now:
> >>
> >> - Atmel at76c502/at76c504/at76c506 is a PIO-only (PCMCIA, mini-PCI
> >> and Cardbus) 802.11b driver with incomplete CFG80211 support.
> >> The related at76c50x USB driver uses MAC80211 and remains.
> >>
> >> - Cisco Aironet is an 802.11b PCMCIA and mini-PCI with limited support
> >> for Cardbus DMA and for CFG80211.
> >>
> >> - HostAP is an ISA/PCMCIA style 802.11b driver supporting only
> >> wireless extensions, and some custom ioctls (already removed).
> >> Some devices include a legacy PCI bridge but no DMA.
> >>
> >> - Aviator/Raytheon is an early PCMCIA driver, apparently predating
> >> 802.11b and only supporting wireless extensions.
> >>
> >> - Planet WL3501 is another PCMCIA driver for pre-802.11b interfaces
> >> (2Mbit/s) with incomplete CFG80211 support
> >>
> >> - Zydas zd1201 is a USB 802.11b driver with limited support for
> >> CFG80211.
> >>
> >> - Orinoco is a PIO-only ISA/PCMCIA 802.11b device with extra bus
> >> interface connections for PCI/Cardbus/mini-PCI and a few
> >> pre-2002 Apple PowerMac variants. It supports both
> >> wireless extensions and CFG80211, but I could not tell if
> >> it requires using both.
> >>
> >> - Wireless RNDIS USB is a new-style CFG80211 driver for 802.11b
> >> and 802.11g USB hardware from around 2004 to 2006. This makes it
> >> more modern than any of the others, but Kalle already classified
> >> it as "legacy" in commit 298e50ad8eb8f ("wifi: move raycs, wl3501
> >> and rndis_wlan to legacy directory"), so it stays with ray_cs and
> >> wl3501_cs.
> >>
> >> There are a few other drivers that are similar to these but that are
> >> more likely to still be needed, and are not moved here:
> >>
> >> - Intel ipw2x00 is a PCI bus-master device for 802.11a/b/g that was
> >> popular in "Centrino" branded laptops from 2003 to 2005, but it
> >> still requires wireless extensions.
> >>
> >> - Marvell Libertas is an 802.11a/b/g device with a number of bus
> >> interfaces (USB, SDIO, SPI, PCMCIA) and incomplete CFG80211
> >> support. This one was used in the OLPC XO laptop and some other
> >> embedded devices that are still supported.
> >>
> >> - Some broadcom b43xx devices use the SSB bus that can be abstracted
> >> through PCMCIA. All of them use CFG80211.
> >>
> >> - The Sony Playstation 3 "gelic" ethernet driver contains a bridge
> >> and an 802.11b/g client chip that is controlled through a hypervisor
> >> interface from the OS, and it uses wireless extensions in the kernel
> >> driver.
> >>
> >> Link: https://lore.kernel.org/all/[email protected]/
> >> Signed-off-by: Arnd Bergmann <[email protected]>
> >
> > Stuff in drivers/staging/ is to get code _into_ the main portion of the
> > kernel tree, not out. If these aren't being used, let's just drop them
> > entirely.
> >
> > What is the need to have them move to staging, only to have me delete
> > them in the next release after that (or after that?) Why delay and why
> > not just remove them now?
>
> We (the wireless folks) have been talking about dropping legacy drivers
> on and off for several years now. The problem is that we don't know
> which of them work and which not, for example IIRC someone reported
> recently that wl3501 still works.
>
> Personally I would be extremly happy to remove all the ancient drivers
> as that reduces the amount of code for us to maintain but is that the
> right thing to do for the users? I don't have an answer to that,
> comments very welcome.
>
> I have been also wondering if I should add warnings like this to every
> ancient driver to see if there are any users left:
>
> "wl3501 wireless driver will be removed in 2024. If the driver still
> works and you are using it send a report NOW to
> [email protected] to avoid the removal."
>
> But with the long release cycles the kernel and distros have I doubt
> waiting for a year is enough, it should be more like three years.

No matter what the time frame is, it's never going to line up with all
distros, or catch everyone properly.

I recommend, just delete all the ones you feel are not being used, in a
patch that removes them one-by-one, so that it is trivial to revert if
someone shows up and says "hey, my device stopped working!" a few years
in the future.

thanks,

greg k-h

2023-10-11 07:25:28

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On Wed, Oct 11, 2023, at 07:40, Kalle Valo wrote:
> Greg Kroah-Hartman <[email protected]> writes:
>
> We (the wireless folks) have been talking about dropping legacy drivers
> on and off for several years now. The problem is that we don't know
> which of them work and which not, for example IIRC someone reported
> recently that wl3501 still works.
>
> Personally I would be extremly happy to remove all the ancient drivers
> as that reduces the amount of code for us to maintain but is that the
> right thing to do for the users? I don't have an answer to that,
> comments very welcome.

I had a look at what openwrt enables, to see if any of the drivers
in my RFC patch are actually enabled, if anything supports legacy
embedded devices with these it would be openwrt. The good news here
is that openwrt intentionally leaves WEXT disabled, and none of them
are still in use.

I also did the same thing for the kernel defconfig files, which
has a few hits:

arch/arm/configs/pxa_defconfig:CONFIG_HERMES=m
arch/arm/configs/pxa_defconfig:CONFIG_HOSTAP=m
arch/arm/configs/pxa_defconfig:CONFIG_HOSTAP_CS=m
arch/arm/configs/pxa_defconfig:CONFIG_PCMCIA_HERMES=m
arch/arm/configs/pxa_defconfig:CONFIG_PCMCIA_SPECTRUM=m
arch/loongarch/configs/loongson3_defconfig:CONFIG_HOSTAP=m
arch/loongarch/configs/loongson3_defconfig:CONFIG_USB_NET_RNDIS_WLAN=m
arch/mips/configs/ip22_defconfig:CONFIG_HOSTAP=m
arch/mips/configs/ip27_defconfig:CONFIG_ATMEL=m
arch/mips/configs/ip27_defconfig:CONFIG_HERMES=m
arch/mips/configs/ip27_defconfig:CONFIG_HOSTAP=m
arch/mips/configs/ip27_defconfig:CONFIG_HOSTAP_PCI=m
arch/mips/configs/ip27_defconfig:CONFIG_HOSTAP_PLX=m
arch/mips/configs/ip27_defconfig:CONFIG_NORTEL_HERMES=m
arch/mips/configs/ip27_defconfig:CONFIG_PCI_ATMEL=m
arch/mips/configs/ip27_defconfig:CONFIG_PLX_HERMES=m
arch/mips/configs/ip27_defconfig:CONFIG_TMD_HERMES=m
arch/mips/configs/loongson2k_defconfig:CONFIG_HOSTAP=m
arch/mips/configs/loongson3_defconfig:CONFIG_HOSTAP=m
arch/mips/configs/malta_defconfig:CONFIG_ATMEL=m
arch/mips/configs/malta_defconfig:CONFIG_HOSTAP=m
arch/mips/configs/malta_defconfig:CONFIG_HOSTAP_PCI=m
arch/mips/configs/malta_defconfig:CONFIG_HOSTAP_PLX=m
arch/mips/configs/malta_defconfig:CONFIG_PCI_ATMEL=m
arch/mips/configs/malta_kvm_defconfig:CONFIG_ATMEL=m
arch/mips/configs/malta_kvm_defconfig:CONFIG_HOSTAP=m
arch/mips/configs/malta_kvm_defconfig:CONFIG_HOSTAP_PCI=m
arch/mips/configs/malta_kvm_defconfig:CONFIG_HOSTAP_PLX=m
arch/mips/configs/malta_kvm_defconfig:CONFIG_PCI_ATMEL=m
arch/mips/configs/maltaup_xpa_defconfig:CONFIG_ATMEL=m
arch/mips/configs/maltaup_xpa_defconfig:CONFIG_HOSTAP=m
arch/mips/configs/maltaup_xpa_defconfig:CONFIG_HOSTAP_PCI=m
arch/mips/configs/maltaup_xpa_defconfig:CONFIG_HOSTAP_PLX=m
arch/mips/configs/maltaup_xpa_defconfig:CONFIG_PCI_ATMEL=m

My interpretation here is that these defconfigs just enabled
all drivers that were relevant at the time when the boards
were new. The loongarch defconfig is a bit of an outlier,
as this is a fairly new platform.

Debian on the other just enables every driver, so there
is no good way to know what they actually use.

Arnd

2023-10-11 07:27:48

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

Greg Kroah-Hartman <[email protected]> writes:

> On Wed, Oct 11, 2023 at 08:40:00AM +0300, Kalle Valo wrote:
>
>> We (the wireless folks) have been talking about dropping legacy drivers
>> on and off for several years now. The problem is that we don't know
>> which of them work and which not, for example IIRC someone reported
>> recently that wl3501 still works.
>>
>> Personally I would be extremly happy to remove all the ancient drivers
>> as that reduces the amount of code for us to maintain but is that the
>> right thing to do for the users? I don't have an answer to that,
>> comments very welcome.
>>
>> I have been also wondering if I should add warnings like this to every
>> ancient driver to see if there are any users left:
>>
>> "wl3501 wireless driver will be removed in 2024. If the driver still
>> works and you are using it send a report NOW to
>> [email protected] to avoid the removal."
>>
>> But with the long release cycles the kernel and distros have I doubt
>> waiting for a year is enough, it should be more like three years.
>
> No matter what the time frame is, it's never going to line up with all
> distros, or catch everyone properly.

Yeah, that's true.

> I recommend, just delete all the ones you feel are not being used, in a
> patch that removes them one-by-one, so that it is trivial to revert if
> someone shows up and says "hey, my device stopped working!" a few years
> in the future.

I'm starting to lean towards this as well. We have talked about this for
so long now but no practical solution ever found so maybe just bite the
bullet finally. What do others think?

--
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

2023-10-11 07:41:17

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On Wed, Oct 11, 2023 at 09:24:55AM +0200, Arnd Bergmann wrote:
> Debian on the other just enables every driver, so there
> is no good way to know what they actually use.

Yeah, as you point out, we can't go by distro kernel configs as they
obviously error on the side of "build everything!". But your openwrt
info is good, thanks for that, that's a huge hint that no one uses those
drivers anymore.

greg k-h

2023-10-11 08:44:18

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

"Arnd Bergmann" <[email protected]> writes:

> On Wed, Oct 11, 2023, at 07:40, Kalle Valo wrote:
>> Greg Kroah-Hartman <[email protected]> writes:
>>
>> We (the wireless folks) have been talking about dropping legacy drivers
>> on and off for several years now. The problem is that we don't know
>> which of them work and which not, for example IIRC someone reported
>> recently that wl3501 still works.
>>
>> Personally I would be extremly happy to remove all the ancient drivers
>> as that reduces the amount of code for us to maintain but is that the
>> right thing to do for the users? I don't have an answer to that,
>> comments very welcome.
>
> I had a look at what openwrt enables, to see if any of the drivers
> in my RFC patch are actually enabled, if anything supports legacy
> embedded devices with these it would be openwrt. The good news here
> is that openwrt intentionally leaves WEXT disabled, and none of them
> are still in use.

I don't think openwrt is a good metric in this case. These drivers are
for 20+ years old hardware, most likely running on really old x86
laptops. So the chances of them running openwrt on those laptops is low
and I would expect them to run more traditional distros like debian or
ubuntu. But of course this is just guessing.

--
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

2023-10-11 20:24:10

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On Wed, Oct 11, 2023, at 20:13, Philipp Hortmann wrote:
> On 10/10/23 17:27, Arnd Bergmann wrote:
>> From: Arnd Bergmann <[email protected]> While looking at the old drivers
>> using the obsolete .ndo_do_ioctl() callback, I found a number of network
>> drivers that are especially obsolete, in particular for 802.11b
>> (11Mbit/s) or even older wireless networks, using non-busmaster
>> ISA/PCMCIA style bus interfaces, and using the legacy wireless extension
>> ioctls rather than the netlink interfaces that were meant to replace
>> them in 2007. All of these drivers are obsolete or orphaned. We had
>> previously discussed this topic, but nobody ever moved the files, so I
>> now went through the list to my best knowledge. These are the drivers
>> that I would classify as "probably unused" by now:
>
> I found a USB WLAN Stick with a rtl8192u. I got it last Saturday and
> found out that the firmware is missing in my ubuntu 20.04. I found it on
> the web and fixed it. When I started the driver my computer crashed. The
> missing part was: priv->priv_wq = alloc_workqueue("priv_wq", 0, 0);
> Fixing this the next error was a network = kzalloc(sizeof(*network),
> GFP_KERNEL); in wrong context with leads to a crash of my computer.
> Fixing this leads to another issue which lets my computer crash.
>
> For me the firmware of rtl8192u was intentionally missing because of the
> issues with the driver.
>
> What this has to do with your question?
> Can we check for missing firmware in main distributions to know which
> drivers are considered to be old and unused?

Nice, thanks so much for testing.

I see the two bugs were introduced in 2016 by commit 1761a85c3bed3
("staging: rtl8192u: Remove create_workqueue()") and in 2021 by
commit 061e390b7c87f ("staging: rtl8192u: ieee80211_softmac: Move a
large data struct onto the heap"), so it's been broken for a while.

I also checked rtl8192e for the same bugs, but that driver
managed to avoid this even though it had the same code
originally.

Regarding the firmware files, I found:

- rtl8192e, rtl7812 and rtl8723bs are all in the linux-firmware
package, unlike rtl8192u

- atmel firmware is not in upstream linux-firmware, but Debian
has an atmel-firmware package for it

- I could not find a Debian package for ks7010sd.rom

- vt6656/vntwusb.fw is in firmware-misc-nonfree

- orinoco has multiple firmware files, but only agere_sta_fw.bin
and agere_ap_fw.bin are in Debian and linux-firmware.

Arnd

2023-10-12 06:23:30

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On Wed, Oct 11, 2023 at 10:22:32PM +0200, Arnd Bergmann wrote:
> On Wed, Oct 11, 2023, at 20:13, Philipp Hortmann wrote:
> > On 10/10/23 17:27, Arnd Bergmann wrote:
> >> From: Arnd Bergmann <[email protected]> While looking at the old drivers
> >> using the obsolete .ndo_do_ioctl() callback, I found a number of network
> >> drivers that are especially obsolete, in particular for 802.11b
> >> (11Mbit/s) or even older wireless networks, using non-busmaster
> >> ISA/PCMCIA style bus interfaces, and using the legacy wireless extension
> >> ioctls rather than the netlink interfaces that were meant to replace
> >> them in 2007. All of these drivers are obsolete or orphaned. We had
> >> previously discussed this topic, but nobody ever moved the files, so I
> >> now went through the list to my best knowledge. These are the drivers
> >> that I would classify as "probably unused" by now:
> >
> > I found a USB WLAN Stick with a rtl8192u. I got it last Saturday and
> > found out that the firmware is missing in my ubuntu 20.04. I found it on
> > the web and fixed it. When I started the driver my computer crashed. The
> > missing part was: priv->priv_wq = alloc_workqueue("priv_wq", 0, 0);
> > Fixing this the next error was a network = kzalloc(sizeof(*network),
> > GFP_KERNEL); in wrong context with leads to a crash of my computer.
> > Fixing this leads to another issue which lets my computer crash.
> >
> > For me the firmware of rtl8192u was intentionally missing because of the
> > issues with the driver.
> >
> > What this has to do with your question?
> > Can we check for missing firmware in main distributions to know which
> > drivers are considered to be old and unused?
>
> Nice, thanks so much for testing.
>
> I see the two bugs were introduced in 2016 by commit 1761a85c3bed3
> ("staging: rtl8192u: Remove create_workqueue()")

This one never made it to lore... I think we wouldn't have merged it
without a lore review these days. (There was a lot of moaning and
complaining at the time).

> and in 2021 by
> commit 061e390b7c87f ("staging: rtl8192u: ieee80211_softmac: Move a
> large data struct onto the heap"), so it's been broken for a while.

:/ No way would I have seen this in review. Smatch is supposed to find
some of these "sleeping in invalid context" warnings but the sleeping in
IRQ stuff doesn't work and hasn't been released.

regards,
dan carpenter

2023-10-12 11:48:06

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

Jakub Kicinski <[email protected]> writes:

> On Wed, 11 Oct 2023 10:29:58 +0300 Kalle Valo wrote:
>> > No matter what the time frame is, it's never going to line up with all
>> > distros, or catch everyone properly.
>>
>> Yeah, that's true.
>>
>> > I recommend, just delete all the ones you feel are not being used, in a
>> > patch that removes them one-by-one, so that it is trivial to revert if
>> > someone shows up and says "hey, my device stopped working!" a few years
>> > in the future.
>>
>> I'm starting to lean towards this as well. We have talked about this for
>> so long now but no practical solution ever found so maybe just bite the
>> bullet finally. What do others think?
>
> FWIW in Ethernet we do what Greg says. Delete it, if someone complains
> we revert back in. The revert did actually happen once, it was pretty
> painless (Greg even took it into stable tree, IIRC).

Thanks, good to know that you have had positive experiences with this
approach. As I didn't hear any concerns from anyone so I'm convinced we
should do this. I'm sure it will make my life a lot easier :)

Is anyone willing to submit patches? Use wireless-next as the baseline
for patches and one driver per commit, please. That way it's easy to
revert later, if needed (hopefully not).

--
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

2023-10-12 15:12:23

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

CC geoff, ppc

On Thu, Oct 12, 2023 at 4:46 PM Kalle Valo <[email protected]> wrote:
> "Arnd Bergmann" <[email protected]> writes:
>
> > On Thu, Oct 12, 2023, at 13:47, Kalle Valo wrote:
> >>
> >> Is anyone willing to submit patches? Use wireless-next as the baseline
> >> for patches and one driver per commit, please. That way it's easy to
> >> revert later, if needed (hopefully not).
> >
> > I can do it, I've already done most of the work for moving the
> > drivers, so I just need to split up my existing patch and leave out
> > the bits that get added to drivers/staging.
>
> Awesome, thank you!
>
> > I'll also send Greg a patch to remove rtl8192u now that we know
> > that this has been broken for 7 years. Similarly, I'd include
> > another patch to remove PCMCIA support for libertas, as that
> > would otherwise be the only remaining 16-bit PCMCIA wlan card,
> > and I could find no indication of this one ever being popular,
> > unlike the USB/SDIO/SPI variants of the same device or the
> > other PCMCIA drivers.
> >
> > This would leave only a handful of wext implementations in the
> > tree: ipw2x00, ps3-gelic-wireless, staging/rtl8712, staging/rtl8192e
> > and staging/ks7010. Since ipw2x00 is apparently still supported
> > in theory and was rather popular on Pentium-M based systems 20
> > years ago, this may still need to be converted to cfg80211
> > before you can remove support for wext style drivers altogether.
> > ps3-gelic-wireless and rtl8712 are also still maintained but have
> > a much smaller user base I assume.
>
> Actually I would prefer to remove ipw2x00 and ps3-gelic-wireless as
> well. I have not seen any evidence that there would be users for those
> drivers. If we find out that there really are users I can easily add the
> drivers back. The faster we get rid of wext the better, it really needs
> to go away.
>
> --
> https://patchwork.kernel.org/project/linux-wireless/list/
>
> https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

2023-10-12 15:39:50

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

Hi Johannes,

On Thu, Oct 12, 2023 at 5:28 PM Johannes Berg <[email protected]> wrote:
> On Thu, 2023-10-12 at 16:36 +0200, Arnd Bergmann wrote:
> >
> > ps3-gelic-wireless
>
> Didn't Sony disable Linux on PS3 eventually? Though maybe someone still
> has some devices with old software.

If you didn't update the firmware, you could keep on using Linux.

And people may have found a vulnerability in more recent firmware
versions that allows them to run custom software.
I don't know, it's been +10 years ago I touched a PS3 ;-)

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2023-10-12 15:41:46

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On Thu, 2023-10-12 at 17:39 +0200, Geert Uytterhoeven wrote:
> Hi Johannes,
>
> On Thu, Oct 12, 2023 at 5:28 PM Johannes Berg <[email protected]> wrote:
> > On Thu, 2023-10-12 at 16:36 +0200, Arnd Bergmann wrote:
> > >
> > > ps3-gelic-wireless
> >
> > Didn't Sony disable Linux on PS3 eventually? Though maybe someone still
> > has some devices with old software.
>
> If you didn't update the firmware, you could keep on using Linux.
>
> And people may have found a vulnerability in more recent firmware
> versions that allows them to run custom software.

Yeah, fair.

> I don't know, it's been +10 years ago I touched a PS3 ;-)

I never had one :-)

But seriously - is it worth to try to keep a wireless driver for it if
we don't even know anyone using a PS3 at all?

But maybe we'll find someone :-)

johannes

2023-10-12 16:16:22

by Philipp Hortmann

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On 10/12/23 16:36, Arnd Bergmann wrote:
> I'll also send Greg a patch to remove rtl8192u now that we know that
> this has been broken for 7 years.

Hi Arnd,

please allow me to do this.
I had a separate mail with Greg this morning...
https://lore.kernel.org/linux-staging/2023101244-unaudited-sadly-d9d6@gregkh/T/#t

Waiting for your confirmation who is sending the patch for removal.

Thanks

Bye Philipp

2023-10-12 16:20:08

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On Thu, 2023-10-12 at 16:36 +0200, Arnd Bergmann wrote:
> On Thu, Oct 12, 2023, at 13:47, Kalle Valo wrote:
> >
> > Is anyone willing to submit patches? Use wireless-next as the
> > baseline
> > for patches and one driver per commit, please. That way it's easy
> > to
> > revert later, if needed (hopefully not).
>
> I can do it, I've already done most of the work for moving the
> drivers, so I just need to split up my existing patch and leave out
> the bits that get added to drivers/staging.
>
> I'll also send Greg a patch to remove rtl8192u now that we know
> that this has been broken for 7 years. Similarly, I'd include
> another patch to remove PCMCIA support for libertas, as that
> would otherwise be the only remaining 16-bit PCMCIA wlan card,
> and I could find no indication of this one ever being popular,
> unlike the USB/SDIO/SPI variants of the same device or the
> other PCMCIA drivers.

This was only for CF cards of which there were a couple; I still have
cards but don't have a machine with CF anymore. USB/SDIO/SPI (as you
point out) have much higher usage.

ACK from me (if my historical libertas involvement counts for anything)
on removing Libertas CF support.

Dan

>
> This would leave only a handful of wext implementations in the
> tree: ipw2x00, ps3-gelic-wireless, staging/rtl8712, staging/rtl8192e
> and staging/ks7010. Since ipw2x00 is apparently still supported
> in theory and was rather popular on Pentium-M based systems 20
> years ago, this may still need to be converted to cfg80211
> before you can remove support for wext style drivers altogether.
> ps3-gelic-wireless and rtl8712 are also still maintained but have
> a much smaller user base I assume.
>
>       Arnd
>

2023-10-12 16:36:47

by Geoff Levand

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On 10/12/23 17:41, Johannes Berg wrote:
> But seriously - is it worth to try to keep a wireless driver for it if
> we don't even know anyone using a PS3 at all?

There is still a considerable user base for the PS3, so we
must keep the ps3-gelic-wireless driver.

-Geoff

2023-10-13 06:42:27

by Philipp Hortmann

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On 10/10/23 17:27, Arnd Bergmann wrote:
> From: Arnd Bergmann <[email protected]> While looking at the old drivers
> using the obsolete .ndo_do_ioctl() callback, I found a number of network
> drivers that are especially obsolete, in particular for 802.11b
> (11Mbit/s) or even older wireless networks, using non-busmaster
> ISA/PCMCIA style bus interfaces, and using the legacy wireless extension
> ioctls rather than the netlink interfaces that were meant to replace
> them in 2007. All of these drivers are obsolete or orphaned.


Hi Arnd,

we should take into account how good the wlan connection is.
This of course leads to tests on real hardware. I do have a vt6655.
Please have a look at the test results below. In a nutshell it is a very
bumpy connection you get with vt6655. You can have issues to connect on
every channel and data is coming in waves. So sometimes you will almost
not notice you have a wlan connection and then it takes very long to
load the next site. Ping times up to 80 seconds. Packet losses up to
40%. So I assume all users have gone away from this module as it is not
comfortable.

Do you think this helps you?

I do have two vt6656 hardware as well. Are you interested in tests?
I can do a patch to remove vt6655. Do you think it makes sense?

Thanks for your support.

Bye Philipp


Used AP is Archer C6

Maximum throuput is 3,3 MByte/s

Build Link time in seconds
Channel
1 5, >90, 4, 14, 10, 4
2 12, 2, 7, >90, 60, 60
3 3, 3, 3, 3, 3
4 >90, >90, >90, reboot, 15
5 4, 4, 50, 3, 3, 40,
6 30, 5, 5, 5, 5, 4,
7 5, 10, 50, 40, 40
8 4, 4, 4, 50, 18, 4
9 5, 3, 60, 5, 3
10 untested
11 untested
12 untested
13 untested

Ping statistics:

Channel 2
kernel@matrix-ESPRIMO-P710:~/Documents/git/kernels/staging$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=4328 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=3319 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=2298 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=1280 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=256 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=40441 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=39428 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=64 time=38404 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=64 time=36378 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=64 time=35360 ms
64 bytes from 192.168.0.1: icmp_seq=12 ttl=64 time=534 ms
64 bytes from 192.168.0.1: icmp_seq=14 ttl=64 time=0.840 ms
64 bytes from 192.168.0.1: icmp_seq=15 ttl=64 time=1.03 ms
64 bytes from 192.168.0.1: icmp_seq=16 ttl=64 time=8.89 ms
64 bytes from 192.168.0.1: icmp_seq=17 ttl=64 time=34.7 ms
64 bytes from 192.168.0.1: icmp_seq=18 ttl=64 time=337 ms
64 bytes from 192.168.0.1: icmp_seq=19 ttl=64 time=1150 ms
64 bytes from 192.168.0.1: icmp_seq=20 ttl=64 time=141 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=64 time=1720 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=64 time=705 ms
64 bytes from 192.168.0.1: icmp_seq=23 ttl=64 time=1018 ms
64 bytes from 192.168.0.1: icmp_seq=24 ttl=64 time=1.66 ms
^C
--- 192.168.0.1 ping statistics ---
24 packets transmitted, 22 received, 8.33333% packet loss, time 57075ms
rtt min/avg/max/mdev = 0.840/9415.608/40441.144/15566.854 ms, pipe 7


Channel 3
kernel@matrix-ESPRIMO-P710:~/Documents/git/kernels/staging$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=3053 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=2046 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=1026 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=2.72 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=2467 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=1453 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=429 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=64 time=19522 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=64 time=18498 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=64 time=17482 ms
64 bytes from 192.168.0.1: icmp_seq=12 ttl=64 time=16459 ms
64 bytes from 192.168.0.1: icmp_seq=13 ttl=64 time=15435 ms
64 bytes from 192.168.0.1: icmp_seq=14 ttl=64 time=66.1 ms
64 bytes from 192.168.0.1: icmp_seq=16 ttl=64 time=10886 ms
64 bytes from 192.168.0.1: icmp_seq=17 ttl=64 time=9862 ms
64 bytes from 192.168.0.1: icmp_seq=18 ttl=64 time=8843 ms
64 bytes from 192.168.0.1: icmp_seq=19 ttl=64 time=7821 ms
64 bytes from 192.168.0.1: icmp_seq=20 ttl=64 time=6798 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=64 time=5774 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=64 time=644 ms
64 bytes from 192.168.0.1: icmp_seq=23 ttl=64 time=1.18 ms
64 bytes from 192.168.0.1: icmp_seq=24 ttl=64 time=1.28 ms
64 bytes from 192.168.0.1: icmp_seq=26 ttl=64 time=21370 ms
64 bytes from 192.168.0.1: icmp_seq=27 ttl=64 time=20347 ms
64 bytes from 192.168.0.1: icmp_seq=28 ttl=64 time=19323 ms
64 bytes from 192.168.0.1: icmp_seq=29 ttl=64 time=18302 ms
64 bytes from 192.168.0.1: icmp_seq=30 ttl=64 time=17278 ms
64 bytes from 192.168.0.1: icmp_seq=31 ttl=64 time=16254 ms
64 bytes from 192.168.0.1: icmp_seq=32 ttl=64 time=885 ms
64 bytes from 192.168.0.1: icmp_seq=33 ttl=64 time=1.21 ms
^C
--- 192.168.0.1 ping statistics ---
37 packets transmitted, 30 received, 18.9189% packet loss, time 69423ms
rtt min/avg/max/mdev = 1.184/8744.248/21370.185/7841.585 ms, pipe 7


Channel 4
kernel@matrix-ESPRIMO-P710:~/Documents/git/kernels/staging$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.62 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=6.71 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=1224 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=200 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=1202 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=188 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=605 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=64 time=1120 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=64 time=116 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=64 time=1.42 ms
64 bytes from 192.168.0.1: icmp_seq=16 ttl=64 time=4.88 ms
64 bytes from 192.168.0.1: icmp_seq=17 ttl=64 time=8853 ms
64 bytes from 192.168.0.1: icmp_seq=18 ttl=64 time=7843 ms
64 bytes from 192.168.0.1: icmp_seq=19 ttl=64 time=6820 ms
64 bytes from 192.168.0.1: icmp_seq=20 ttl=64 time=5799 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=64 time=4776 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=64 time=3753 ms
64 bytes from 192.168.0.1: icmp_seq=23 ttl=64 time=671 ms
64 bytes from 192.168.0.1: icmp_seq=30 ttl=64 time=962 ms
64 bytes from 192.168.0.1: icmp_seq=31 ttl=64 time=0.850 ms
64 bytes from 192.168.0.1: icmp_seq=32 ttl=64 time=1757 ms
64 bytes from 192.168.0.1: icmp_seq=33 ttl=64 time=738 ms
64 bytes from 192.168.0.1: icmp_seq=35 ttl=64 time=6150 ms
64 bytes from 192.168.0.1: icmp_seq=36 ttl=64 time=5126 ms
64 bytes from 192.168.0.1: icmp_seq=37 ttl=64 time=4100 ms
64 bytes from 192.168.0.1: icmp_seq=38 ttl=64 time=3080 ms
64 bytes from 192.168.0.1: icmp_seq=41 ttl=64 time=3.84 ms
64 bytes from 192.168.0.1: icmp_seq=44 ttl=64 time=3874 ms
64 bytes from 192.168.0.1: icmp_seq=45 ttl=64 time=2855 ms
64 bytes from 192.168.0.1: icmp_seq=46 ttl=64 time=1837 ms
64 bytes from 192.168.0.1: icmp_seq=47 ttl=64 time=814 ms
64 bytes from 192.168.0.1: icmp_seq=49 ttl=64 time=4101 ms
64 bytes from 192.168.0.1: icmp_seq=50 ttl=64 time=3078 ms
64 bytes from 192.168.0.1: icmp_seq=51 ttl=64 time=2054 ms
64 bytes from 192.168.0.1: icmp_seq=52 ttl=64 time=1032 ms
64 bytes from 192.168.0.1: icmp_seq=53 ttl=64 time=3.99 ms
64 bytes from 192.168.0.1: icmp_seq=58 ttl=64 time=8270 ms
64 bytes from 192.168.0.1: icmp_seq=59 ttl=64 time=7246 ms
64 bytes from 192.168.0.1: icmp_seq=60 ttl=64 time=6222 ms
64 bytes from 192.168.0.1: icmp_seq=61 ttl=64 time=5195 ms
64 bytes from 192.168.0.1: icmp_seq=62 ttl=64 time=4176 ms
64 bytes from 192.168.0.1: icmp_seq=63 ttl=64 time=3155 ms
64 bytes from 192.168.0.1: icmp_seq=64 ttl=64 time=74.5 ms

^C--- 192.168.0.1 ping statistics ---
66 packets transmitted, 43 received, 34.8485% packet loss, time 70196ms
rtt min/avg/max/mdev = 0.850/2769.484/8852.940/2640.961 ms, pipe 7

Channel 5
kernel@matrix-ESPRIMO-P710:~/Documents/git/kernels/staging$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=289 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=2.51 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=2108 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=1103 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=79.5 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=1528 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=64 time=514 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=64 time=2051 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=64 time=1023 ms
64 bytes from 192.168.0.1: icmp_seq=12 ttl=64 time=5.14 ms
64 bytes from 192.168.0.1: icmp_seq=17 ttl=64 time=4098 ms
64 bytes from 192.168.0.1: icmp_seq=18 ttl=64 time=3075 ms
64 bytes from 192.168.0.1: icmp_seq=19 ttl=64 time=2047 ms
64 bytes from 192.168.0.1: icmp_seq=20 ttl=64 time=1028 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=64 time=7.99 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=64 time=6.62 ms
64 bytes from 192.168.0.1: icmp_seq=23 ttl=64 time=0.961 ms
64 bytes from 192.168.0.1: icmp_seq=25 ttl=64 time=993 ms
64 bytes from 192.168.0.1: icmp_seq=26 ttl=64 time=1.64 ms
64 bytes from 192.168.0.1: icmp_seq=29 ttl=64 time=1.07 ms
64 bytes from 192.168.0.1: icmp_seq=31 ttl=64 time=1.67 ms
64 bytes from 192.168.0.1: icmp_seq=32 ttl=64 time=4091 ms
64 bytes from 192.168.0.1: icmp_seq=33 ttl=64 time=3078 ms
64 bytes from 192.168.0.1: icmp_seq=34 ttl=64 time=2054 ms
64 bytes from 192.168.0.1: icmp_seq=35 ttl=64 time=1037 ms
64 bytes from 192.168.0.1: icmp_seq=36 ttl=64 time=9.86 ms
64 bytes from 192.168.0.1: icmp_seq=38 ttl=64 time=3238 ms
64 bytes from 192.168.0.1: icmp_seq=39 ttl=64 time=2214 ms
64 bytes from 192.168.0.1: icmp_seq=40 ttl=64 time=1191 ms
64 bytes from 192.168.0.1: icmp_seq=44 ttl=64 time=1.62 ms
64 bytes from 192.168.0.1: icmp_seq=45 ttl=64 time=2.07 ms
64 bytes from 192.168.0.1: icmp_seq=47 ttl=64 time=9473 ms
64 bytes from 192.168.0.1: icmp_seq=48 ttl=64 time=8450 ms
64 bytes from 192.168.0.1: icmp_seq=49 ttl=64 time=7443 ms
64 bytes from 192.168.0.1: icmp_seq=50 ttl=64 time=6420 ms
64 bytes from 192.168.0.1: icmp_seq=51 ttl=64 time=5396 ms
64 bytes from 192.168.0.1: icmp_seq=52 ttl=64 time=264 ms
64 bytes from 192.168.0.1: icmp_seq=57 ttl=64 time=5447 ms
64 bytes from 192.168.0.1: icmp_seq=58 ttl=64 time=4423 ms
64 bytes from 192.168.0.1: icmp_seq=59 ttl=64 time=3403 ms
64 bytes from 192.168.0.1: icmp_seq=60 ttl=64 time=2379 ms
64 bytes from 192.168.0.1: icmp_seq=61 ttl=64 time=1356 ms
64 bytes from 192.168.0.1: icmp_seq=62 ttl=64 time=333 ms
64 bytes from 192.168.0.1: icmp_seq=64 ttl=64 time=4098 ms
64 bytes from 192.168.0.1: icmp_seq=65 ttl=64 time=3074 ms
64 bytes from 192.168.0.1: icmp_seq=68 ttl=64 time=3.35 ms
^C
--- 192.168.0.1 ping statistics ---
73 packets transmitted, 46 received, 36.9863% packet loss, time 77231ms
rtt min/avg/max/mdev = 0.961/2148.809/9473.428/2393.957 ms, pipe 6


Channel 6
kernel@matrix-ESPRIMO-P710:~/Documents/git/kernels/staging$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=7.30 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=29.6 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=0.779 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=62.7 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=1.02 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=1.23 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=64 time=69.6 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=64 time=5125 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=64 time=4097 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=64 time=3073 ms
64 bytes from 192.168.0.1: icmp_seq=12 ttl=64 time=2050 ms
64 bytes from 192.168.0.1: icmp_seq=13 ttl=64 time=1026 ms
64 bytes from 192.168.0.1: icmp_seq=14 ttl=64 time=2.72 ms
64 bytes from 192.168.0.1: icmp_seq=20 ttl=64 time=1025 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=64 time=1.27 ms
64 bytes from 192.168.0.1: icmp_seq=24 ttl=64 time=1.36 ms
64 bytes from 192.168.0.1: icmp_seq=31 ttl=64 time=3105 ms
64 bytes from 192.168.0.1: icmp_seq=32 ttl=64 time=2081 ms
64 bytes from 192.168.0.1: icmp_seq=33 ttl=64 time=1057 ms
64 bytes from 192.168.0.1: icmp_seq=34 ttl=64 time=33.6 ms
64 bytes from 192.168.0.1: icmp_seq=36 ttl=64 time=9281 ms
64 bytes from 192.168.0.1: icmp_seq=37 ttl=64 time=8257 ms
64 bytes from 192.168.0.1: icmp_seq=38 ttl=64 time=7230 ms
64 bytes from 192.168.0.1: icmp_seq=39 ttl=64 time=6211 ms
64 bytes from 192.168.0.1: icmp_seq=40 ttl=64 time=5187 ms
64 bytes from 192.168.0.1: icmp_seq=41 ttl=64 time=57.5 ms
64 bytes from 192.168.0.1: icmp_seq=43 ttl=64 time=2.21 ms
64 bytes from 192.168.0.1: icmp_seq=46 ttl=64 time=5256 ms
64 bytes from 192.168.0.1: icmp_seq=47 ttl=64 time=4232 ms
64 bytes from 192.168.0.1: icmp_seq=48 ttl=64 time=3208 ms
64 bytes from 192.168.0.1: icmp_seq=49 ttl=64 time=2184 ms
64 bytes from 192.168.0.1: icmp_seq=50 ttl=64 time=1161 ms
64 bytes from 192.168.0.1: icmp_seq=51 ttl=64 time=137 ms
64 bytes from 192.168.0.1: icmp_seq=53 ttl=64 time=2050 ms
64 bytes from 192.168.0.1: icmp_seq=54 ttl=64 time=1026 ms
64 bytes from 192.168.0.1: icmp_seq=55 ttl=64 time=2.56 ms
64 bytes from 192.168.0.1: icmp_seq=67 ttl=64 time=6337 ms
64 bytes from 192.168.0.1: icmp_seq=68 ttl=64 time=5313 ms
64 bytes from 192.168.0.1: icmp_seq=69 ttl=64 time=4290 ms
64 bytes from 192.168.0.1: icmp_seq=70 ttl=64 time=3267 ms
64 bytes from 192.168.0.1: icmp_seq=71 ttl=64 time=2243 ms
64 bytes from 192.168.0.1: icmp_seq=72 ttl=64 time=185 ms
64 bytes from 192.168.0.1: icmp_seq=74 ttl=64 time=10465 ms
64 bytes from 192.168.0.1: icmp_seq=75 ttl=64 time=9441 ms
64 bytes from 192.168.0.1: icmp_seq=76 ttl=64 time=8418 ms
64 bytes from 192.168.0.1: icmp_seq=77 ttl=64 time=7395 ms
64 bytes from 192.168.0.1: icmp_seq=78 ttl=64 time=6371 ms
64 bytes from 192.168.0.1: icmp_seq=79 ttl=64 time=217 ms
^C
--- 192.168.0.1 ping statistics ---
84 packets transmitted, 48 received, 42.8571% packet loss, time 94747ms
rtt min/avg/max/mdev = 0.779/2964.129/10465.412/3091.896 ms, pipe 6

Channel 7
kernel@matrix-ESPRIMO-P710:~/Documents/git/kernels/staging$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.21 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=1438 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=423 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=5164 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=4150 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=64 time=3127 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=64 time=2105 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=64 time=1077 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=64 time=58.2 ms
64 bytes from 192.168.0.1: icmp_seq=12 ttl=64 time=1464 ms
64 bytes from 192.168.0.1: icmp_seq=13 ttl=64 time=450 ms
64 bytes from 192.168.0.1: icmp_seq=15 ttl=64 time=1.23 ms
64 bytes from 192.168.0.1: icmp_seq=20 ttl=64 time=3587 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=64 time=2567 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=64 time=1546 ms
64 bytes from 192.168.0.1: icmp_seq=23 ttl=64 time=522 ms
64 bytes from 192.168.0.1: icmp_seq=24 ttl=64 time=2585 ms
64 bytes from 192.168.0.1: icmp_seq=25 ttl=64 time=1570 ms
64 bytes from 192.168.0.1: icmp_seq=26 ttl=64 time=546 ms
64 bytes from 192.168.0.1: icmp_seq=27 ttl=64 time=2042 ms
64 bytes from 192.168.0.1: icmp_seq=28 ttl=64 time=1026 ms
64 bytes from 192.168.0.1: icmp_seq=29 ttl=64 time=2.58 ms
64 bytes from 192.168.0.1: icmp_seq=34 ttl=64 time=1026 ms
64 bytes from 192.168.0.1: icmp_seq=35 ttl=64 time=2.20 ms
64 bytes from 192.168.0.1: icmp_seq=38 ttl=64 time=1.19 ms
64 bytes from 192.168.0.1: icmp_seq=41 ttl=64 time=4003 ms
64 bytes from 192.168.0.1: icmp_seq=42 ttl=64 time=2979 ms
64 bytes from 192.168.0.1: icmp_seq=43 ttl=64 time=1958 ms
64 bytes from 192.168.0.1: icmp_seq=44 ttl=64 time=934 ms
64 bytes from 192.168.0.1: icmp_seq=45 ttl=64 time=0.908 ms
64 bytes from 192.168.0.1: icmp_seq=48 ttl=64 time=1.65 ms
64 bytes from 192.168.0.1: icmp_seq=51 ttl=64 time=1.16 ms
64 bytes from 192.168.0.1: icmp_seq=52 ttl=64 time=1825 ms
64 bytes from 192.168.0.1: icmp_seq=53 ttl=64 time=811 ms
64 bytes from 192.168.0.1: icmp_seq=54 ttl=64 time=1081 ms
64 bytes from 192.168.0.1: icmp_seq=55 ttl=64 time=66.2 ms
64 bytes from 192.168.0.1: icmp_seq=56 ttl=64 time=2656 ms
64 bytes from 192.168.0.1: icmp_seq=61 ttl=64 time=1.16 ms
64 bytes from 192.168.0.1: icmp_seq=62 ttl=64 time=2.29 ms
64 bytes from 192.168.0.1: icmp_seq=63 ttl=64 time=2035 ms
64 bytes from 192.168.0.1: icmp_seq=64 ttl=64 time=1030 ms
64 bytes from 192.168.0.1: icmp_seq=65 ttl=64 time=3.12 ms
64 bytes from 192.168.0.1: icmp_seq=69 ttl=64 time=3080 ms
64 bytes from 192.168.0.1: icmp_seq=70 ttl=64 time=2057 ms
64 bytes from 192.168.0.1: icmp_seq=71 ttl=64 time=1033 ms
64 bytes from 192.168.0.1: icmp_seq=72 ttl=64 time=10.3 ms
64 bytes from 192.168.0.1: icmp_seq=74 ttl=64 time=1026 ms
64 bytes from 192.168.0.1: icmp_seq=75 ttl=64 time=2.20 ms
64 bytes from 192.168.0.1: icmp_seq=82 ttl=64 time=1.18 ms
64 bytes from 192.168.0.1: icmp_seq=84 ttl=64 time=1.45 ms
64 bytes from 192.168.0.1: icmp_seq=86 ttl=64 time=38.4 ms
64 bytes from 192.168.0.1: icmp_seq=87 ttl=64 time=1398 ms
64 bytes from 192.168.0.1: icmp_seq=88 ttl=64 time=388 ms
64 bytes from 192.168.0.1: icmp_seq=91 ttl=64 time=2.75 ms
64 bytes from 192.168.0.1: icmp_seq=96 ttl=64 time=1.16 ms
From 192.168.0.100 icmp_seq=101 Destination Host Unreachable
From 192.168.0.100 icmp_seq=102 Destination Host Unreachable
From 192.168.0.100 icmp_seq=103 Destination Host Unreachable
^C
--- 192.168.0.1 ping statistics ---
104 packets transmitted, 55 received, +3 errors, 47.1154% packet loss,
time 104564ms
rtt min/avg/max/mdev = 0.908/1180.168/5164.367/1279.558 ms, pipe 6


Channel 8
kernel@matrix-ESPRIMO-P710:~/Documents/git/kernels/staging$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=2.05 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=10622 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=9602 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=8580 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=7553 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=64 time=6533 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=64 time=379 ms
64 bytes from 192.168.0.1: icmp_seq=13 ttl=64 time=12034 ms
64 bytes from 192.168.0.1: icmp_seq=14 ttl=64 time=11010 ms
64 bytes from 192.168.0.1: icmp_seq=15 ttl=64 time=9990 ms
64 bytes from 192.168.0.1: icmp_seq=16 ttl=64 time=8967 ms
64 bytes from 192.168.0.1: icmp_seq=17 ttl=64 time=7944 ms
64 bytes from 192.168.0.1: icmp_seq=18 ttl=64 time=766 ms
64 bytes from 192.168.0.1: icmp_seq=20 ttl=64 time=1.20 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=64 time=28892 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=64 time=27879 ms
64 bytes from 192.168.0.1: icmp_seq=23 ttl=64 time=26859 ms
64 bytes from 192.168.0.1: icmp_seq=24 ttl=64 time=25837 ms
64 bytes from 192.168.0.1: icmp_seq=25 ttl=64 time=24813 ms
64 bytes from 192.168.0.1: icmp_seq=26 ttl=64 time=23790 ms
64 bytes from 192.168.0.1: icmp_seq=27 ttl=64 time=226 ms
64 bytes from 192.168.0.1: icmp_seq=28 ttl=64 time=28.2 ms
64 bytes from 192.168.0.1: icmp_seq=29 ttl=64 time=0.860 ms
64 bytes from 192.168.0.1: icmp_seq=30 ttl=64 time=24568 ms
64 bytes from 192.168.0.1: icmp_seq=31 ttl=64 time=23553 ms
64 bytes from 192.168.0.1: icmp_seq=32 ttl=64 time=22530 ms
64 bytes from 192.168.0.1: icmp_seq=33 ttl=64 time=21507 ms
64 bytes from 192.168.0.1: icmp_seq=34 ttl=64 time=20483 ms
64 bytes from 192.168.0.1: icmp_seq=35 ttl=64 time=19461 ms
64 bytes from 192.168.0.1: icmp_seq=36 ttl=64 time=3.59 ms
64 bytes from 192.168.0.1: icmp_seq=40 ttl=64 time=1262 ms
64 bytes from 192.168.0.1: icmp_seq=41 ttl=64 time=238 ms
64 bytes from 192.168.0.1: icmp_seq=42 ttl=64 time=5464 ms
64 bytes from 192.168.0.1: icmp_seq=43 ttl=64 time=4449 ms
64 bytes from 192.168.0.1: icmp_seq=44 ttl=64 time=3426 ms
64 bytes from 192.168.0.1: icmp_seq=45 ttl=64 time=2404 ms
64 bytes from 192.168.0.1: icmp_seq=46 ttl=64 time=1380 ms
64 bytes from 192.168.0.1: icmp_seq=47 ttl=64 time=357 ms
64 bytes from 192.168.0.1: icmp_seq=49 ttl=64 time=1026 ms
64 bytes from 192.168.0.1: icmp_seq=50 ttl=64 time=1.87 ms
64 bytes from 192.168.0.1: icmp_seq=55 ttl=64 time=9121 ms
64 bytes from 192.168.0.1: icmp_seq=56 ttl=64 time=8097 ms
64 bytes from 192.168.0.1: icmp_seq=57 ttl=64 time=7081 ms
64 bytes from 192.168.0.1: icmp_seq=58 ttl=64 time=6053 ms
64 bytes from 192.168.0.1: icmp_seq=59 ttl=64 time=5033 ms
64 bytes from 192.168.0.1: icmp_seq=60 ttl=64 time=928 ms
64 bytes from 192.168.0.1: icmp_seq=61 ttl=64 time=1.57 ms
^C
--- 192.168.0.1 ping statistics ---
62 packets transmitted, 47 received, 24.1935% packet loss, time 117405ms
rtt min/avg/max/mdev = 0.860/9377.356/28891.850/9451.513 ms, pipe 7

Channel 9
kernel@matrix-ESPRIMO-P710:~/Documents/git/kernels/staging$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=530 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=5415 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=4389 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=3367 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=2342 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=1322 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=298 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=64 time=6751 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=64 time=5737 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=64 time=4713 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=64 time=3686 ms
64 bytes from 192.168.0.1: icmp_seq=12 ttl=64 time=2666 ms
64 bytes from 192.168.0.1: icmp_seq=13 ttl=64 time=1642 ms
64 bytes from 192.168.0.1: icmp_seq=14 ttl=64 time=618 ms
64 bytes from 192.168.0.1: icmp_seq=15 ttl=64 time=1.98 ms
64 bytes from 192.168.0.1: icmp_seq=19 ttl=64 time=10797 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=64 time=7726 ms
64 bytes from 192.168.0.1: icmp_seq=23 ttl=64 time=6707 ms
64 bytes from 192.168.0.1: icmp_seq=24 ttl=64 time=5683 ms
64 bytes from 192.168.0.1: icmp_seq=25 ttl=64 time=555 ms
64 bytes from 192.168.0.1: icmp_seq=31 ttl=64 time=24573 ms
64 bytes from 192.168.0.1: icmp_seq=32 ttl=64 time=23554 ms
64 bytes from 192.168.0.1: icmp_seq=33 ttl=64 time=22539 ms
64 bytes from 192.168.0.1: icmp_seq=34 ttl=64 time=21515 ms
64 bytes from 192.168.0.1: icmp_seq=35 ttl=64 time=20492 ms
64 bytes from 192.168.0.1: icmp_seq=36 ttl=64 time=1042 ms
64 bytes from 192.168.0.1: icmp_seq=37 ttl=64 time=26.6 ms
64 bytes from 192.168.0.1: icmp_seq=43 ttl=64 time=1.39 ms
64 bytes from 192.168.0.1: icmp_seq=46 ttl=64 time=1.83 ms
64 bytes from 192.168.0.1: icmp_seq=47 ttl=64 time=4576 ms
64 bytes from 192.168.0.1: icmp_seq=48 ttl=64 time=3562 ms
64 bytes from 192.168.0.1: icmp_seq=49 ttl=64 time=2538 ms
64 bytes from 192.168.0.1: icmp_seq=50 ttl=64 time=1514 ms
64 bytes from 192.168.0.1: icmp_seq=51 ttl=64 time=486 ms
64 bytes from 192.168.0.1: icmp_seq=53 ttl=64 time=56133 ms
64 bytes from 192.168.0.1: icmp_seq=54 ttl=64 time=55109 ms
64 bytes from 192.168.0.1: icmp_seq=55 ttl=64 time=54086 ms
64 bytes from 192.168.0.1: icmp_seq=56 ttl=64 time=53058 ms
64 bytes from 192.168.0.1: icmp_seq=57 ttl=64 time=52034 ms
64 bytes from 192.168.0.1: icmp_seq=58 ttl=64 time=829 ms
64 bytes from 192.168.0.1: icmp_seq=60 ttl=64 time=1021 ms
64 bytes from 192.168.0.1: icmp_seq=61 ttl=64 time=1.21 ms
^C
--- 192.168.0.1 ping statistics ---
61 packets transmitted, 42 received, 31.1475% packet loss, time 133834ms
rtt min/avg/max/mdev = 1.210/11277.187/56132.925/17137.608 ms, pipe 7

Channel 10 - 13 untested

2023-10-13 15:37:17

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On Fri, Oct 13, 2023, at 08:42, Philipp Hortmann wrote:
> On 10/10/23 17:27, Arnd Bergmann wrote:
>> From: Arnd Bergmann <[email protected]> While looking at the old drivers
>> using the obsolete .ndo_do_ioctl() callback, I found a number of network
>> drivers that are especially obsolete, in particular for 802.11b
>> (11Mbit/s) or even older wireless networks, using non-busmaster
>> ISA/PCMCIA style bus interfaces, and using the legacy wireless extension
>> ioctls rather than the netlink interfaces that were meant to replace
>> them in 2007. All of these drivers are obsolete or orphaned.
>
> we should take into account how good the wlan connection is.
> This of course leads to tests on real hardware. I do have a vt6655.
> Please have a look at the test results below. In a nutshell it is a very
> bumpy connection you get with vt6655. You can have issues to connect on
> every channel and data is coming in waves. So sometimes you will almost
> not notice you have a wlan connection and then it takes very long to
> load the next site. Ping times up to 80 seconds. Packet losses up to
> 40%. So I assume all users have gone away from this module as it is not
> comfortable.
>
> Do you think this helps you?
>
> I do have two vt6656 hardware as well. Are you interested in tests?
> I can do a patch to remove vt6655. Do you think it makes sense?
>
> Thanks for your support.

Hi Philipp,

My vague feeling is that bad performance on its own is not
enough justification to remove the driver without some other
reason. From what I can tell in the logs, Malcolm Priestley
made good progress on cleaning up theses driver, converting it
to mac80211 and sending improvements until 2020.

At the moment, I'd suggest focusing on the drivers that
still use wext (git grep -w iw_handler_def drivers), if we
can show that rtl8192e, rtl8712 or ks7010 have been broken
for a while, removing those would help with removing wext
altogether.

Arnd

2023-10-13 15:45:20

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On Thu, Oct 12, 2023, at 18:36, Geoff Levand wrote:
> On 10/12/23 17:41, Johannes Berg wrote:
>> But seriously - is it worth to try to keep a wireless driver for it if
>> we don't even know anyone using a PS3 at all?
>
> There is still a considerable user base for the PS3, so we
> must keep the ps3-gelic-wireless driver.

Do you know if anyone has tried changing this driver over to the
cfg80211 interface from the wireless extensions? With the
series I have prepared now, it is the only driver outside of
drivers/staging that still uses wext and stops us from removing
that altogether.

[side note: it appears that the PS3 I have is the only model
without wireless networking, as I bought cheapest Asian 20GB version
back in early 2007. It still has the original firmware on it
and should run Linux, but I haven't tried it since at least
2009].

Arnd

2023-10-18 20:39:02

by Jeff Johnson

[permalink] [raw]
Subject: Re: [PATCH] [RFC] wireless: move obsolete drivers to staging

On 10/13/2023 11:02 AM, Johannes Berg wrote:
> On Fri, 2023-10-13 at 17:44 +0200, Arnd Bergmann wrote:
>> On Thu, Oct 12, 2023, at 18:36, Geoff Levand wrote:
>>> On 10/12/23 17:41, Johannes Berg wrote:
>>>> But seriously - is it worth to try to keep a wireless driver for it if
>>>> we don't even know anyone using a PS3 at all?
>>>
>>> There is still a considerable user base for the PS3, so we
>>> must keep the ps3-gelic-wireless driver.
>>
>> Do you know if anyone has tried changing this driver over to the
>> cfg80211 interface from the wireless extensions?
>
> I looked at that yesterday, and sadly I _think_ it's not even possible,
> there are some corner cases in it like "no WPA2" that don't seem to be
> fully covered in cfg80211/nl80211, at least not with the APIs today and
> with current versions of wpa_supplicant.
>
> It might still be doable because things like
> WPA_DRIVER_CAPA_KEY_MGMT_WPA2_PSK don't really seem to be used much in
> wpa_supplicant, but we'd have to carefully test that I guess.
>
> Also, it depends on the PS3 firmware version whether or not that's
> supported.
>
> Then again, arguably wifi without WPA2 is pretty much useless these
> days?

This is a good point. It doesn't matter if the clients work if there are
no Access Points to connect to. And if you do have an old one you can
connect to, it will be an insecure connection. Wardriving, anyone?

/jeff