diff mbox series

[RFC] wireless: move obsolete drivers to staging

Message ID 20231010155444.858483-1-arnd@kernel.org (mailing list archive)
State RFC
Delegated to: Kalle Valo
Headers show
Series [RFC] wireless: move obsolete drivers to staging | expand

Commit Message

Arnd Bergmann Oct. 10, 2023, 3:27 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

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/87imaeg4ar.fsf@codeaurora.org/
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
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%)

Comments

Greg KH Oct. 10, 2023, 4:08 p.m. UTC | #1
On Tue, Oct 10, 2023 at 05:27:29PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> 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/87imaeg4ar.fsf@codeaurora.org/
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

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?

thanks,

greg k-h
Kalle Valo Oct. 11, 2023, 5:40 a.m. UTC | #2
Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes:

> On Tue, Oct 10, 2023 at 05:27:29PM +0200, Arnd Bergmann wrote:
>
>> From: Arnd Bergmann <arnd@arndb.de>
>> 
>> 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/87imaeg4ar.fsf@codeaurora.org/
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
> 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
linux-wireless@vger.kernel.org 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.
Greg KH Oct. 11, 2023, 6:16 a.m. UTC | #3
On Wed, Oct 11, 2023 at 08:40:00AM +0300, Kalle Valo wrote:
> Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes:
> 
> > On Tue, Oct 10, 2023 at 05:27:29PM +0200, Arnd Bergmann wrote:
> >
> >> From: Arnd Bergmann <arnd@arndb.de>
> >> 
> >> 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/87imaeg4ar.fsf@codeaurora.org/
> >> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> >
> > 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
> linux-wireless@vger.kernel.org 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
Arnd Bergmann Oct. 11, 2023, 7:24 a.m. UTC | #4
On Wed, Oct 11, 2023, at 07:40, Kalle Valo wrote:
> Greg Kroah-Hartman <gregkh@linuxfoundation.org> 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
Kalle Valo Oct. 11, 2023, 7:29 a.m. UTC | #5
Greg Kroah-Hartman <gregkh@linuxfoundation.org> 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
>> linux-wireless@vger.kernel.org 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?
Greg KH Oct. 11, 2023, 7:41 a.m. UTC | #6
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
Kalle Valo Oct. 11, 2023, 8:44 a.m. UTC | #7
"Arnd Bergmann" <arnd@arndb.de> writes:

> On Wed, Oct 11, 2023, at 07:40, Kalle Valo wrote:
>> Greg Kroah-Hartman <gregkh@linuxfoundation.org> 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.
Arnd Bergmann Oct. 11, 2023, 9:01 a.m. UTC | #8
On Wed, Oct 11, 2023, at 10:44, Kalle Valo wrote:
> "Arnd Bergmann" <arnd@arndb.de> writes:
>> On Wed, Oct 11, 2023, at 07:40, Kalle Valo wrote:
>>> Greg Kroah-Hartman <gregkh@linuxfoundation.org> 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.

OpenWRT is clearly not a good metric for laptops, but it's a good
indicator for embedded systems, in particular those with wireless
access points, and it does enable a lot of them
(atheros, broadcom, intel, marvell, ralink, realtek, mt76, wlcore,
rsi ...) depending on the platform.

I can also see that it used to enable airo, p54, hermes, adm8211,
zd1211, ipw2x00 and libertas but stopped this a year ago, see
https://github.com/openwrt/openwrt/commit/a06e023b4e12

     Arnd
Jakub Kicinski Oct. 11, 2023, 3:09 p.m. UTC | #9
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).
Philipp Hortmann Oct. 11, 2023, 6:13 p.m. UTC | #10
On 10/10/23 17:27, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de> 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?

Bye Philipp
Arnd Bergmann Oct. 11, 2023, 8:22 p.m. UTC | #11
On Wed, Oct 11, 2023, at 20:13, Philipp Hortmann wrote:
> On 10/10/23 17:27, Arnd Bergmann wrote:
>> From: Arnd Bergmann <arnd@arndb.de> 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
Dan Carpenter Oct. 12, 2023, 6:23 a.m. UTC | #12
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 <arnd@arndb.de> 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
Kalle Valo Oct. 12, 2023, 11:47 a.m. UTC | #13
Jakub Kicinski <kuba@kernel.org> 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).
Arnd Bergmann Oct. 12, 2023, 2:36 p.m. UTC | #14
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 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
Kalle Valo Oct. 12, 2023, 2:48 p.m. UTC | #15
"Arnd Bergmann" <arnd@arndb.de> 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.
Geert Uytterhoeven Oct. 12, 2023, 3:11 p.m. UTC | #16
CC geoff, ppc

On Thu, Oct 12, 2023 at 4:46 PM Kalle Valo <kvalo@kernel.org> wrote:
> "Arnd Bergmann" <arnd@arndb.de> 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
Johannes Berg Oct. 12, 2023, 3:28 p.m. UTC | #17
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.

johannes
Geert Uytterhoeven Oct. 12, 2023, 3:39 p.m. UTC | #18
Hi Johannes,

On Thu, Oct 12, 2023 at 5:28 PM Johannes Berg <johannes@sipsolutions.net> 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
Johannes Berg Oct. 12, 2023, 3:41 p.m. UTC | #19
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 <johannes@sipsolutions.net> 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
Philipp Hortmann Oct. 12, 2023, 4:16 p.m. UTC | #20
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
Dan Williams Oct. 12, 2023, 4:18 p.m. UTC | #21
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
>
Geoff Levand Oct. 12, 2023, 4:36 p.m. UTC | #22
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
Philipp Hortmann Oct. 13, 2023, 6:42 a.m. UTC | #23
On 10/10/23 17:27, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de> 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
Arnd Bergmann Oct. 13, 2023, 3:36 p.m. UTC | #24
On Fri, Oct 13, 2023, at 08:42, Philipp Hortmann wrote:
> On 10/10/23 17:27, Arnd Bergmann wrote:
>> From: Arnd Bergmann <arnd@arndb.de> 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
Arnd Bergmann Oct. 13, 2023, 3:44 p.m. UTC | #25
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
Larry Finger Oct. 13, 2023, 4:24 p.m. UTC | #26
On 10/13/23 10:36, Arnd Bergmann wrote:
> 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.

I do not know about the the others, but rtl8712 is still in use according to the 
flow of questions I see on a GitHub repo that I maintain.

There has been some recent effort to convert rtl8192e to use cfg/nl/mac80211. 
That one is problematic as it has the same PCI_ID as RTL8192SE, but the drivers 
differ. Note the special code in the probe routine of 
drivers/net/wireless/realtek/rtlwifi/rtl8192se to detect if the wrong one has 
triggered the routine. That code should also be in the probe routine for 
RTL8192E with the test negated. I have both devices, but it has been a long time 
since I actually used either of them. I also have an rtl8712 device, thus I 
should be available for testing.

Larry
Johannes Berg Oct. 13, 2023, 6:02 p.m. UTC | #27
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?

johannes
Philipp Hortmann Oct. 15, 2023, 6:42 p.m. UTC | #28
On 10/13/23 17:36, Arnd Bergmann wrote:
> 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.


Hi,

__rtl8192e__
this hardware is available on ebay 13 times.
ping statistics:
1191 packets transmitted, 1191 received, 0% packet loss, time 1192169ms
rtt min/avg/max/mdev = 0.633/2.184/74.792/3.157 ms
maximum download 12,5 MByte/s

__rtl8712__
stick packard bell AW-NU120
ping statistics:
678 packets transmitted, 652 received, 3.83481% packet loss, time 678287ms
rtt min/avg/max/mdev = 0.943/4.835/231.435/17.900 ms
maximum download 12,5 MByte/s

I would like to remove the private functions as the "wireless tools" 
package is deprecated. The following functions are available:
kernel@matrix-ESPRIMO-P710:~/Documents/git/kernels/staging$ iwpriv wlan0
wlan0     Available private ioctls :
           read32           (8BE0) : set   1 int   & get   0
           write32          (8BE1) : set   1 int   & get   0
           driver_ext       (8BE2) : set   0       & get   0
           mp_ioctl         (8BE3) : set   0       & get   0
           apinfo           (8BE4) : set   1 int   & get   0
           setpid           (8BE5) : set   1 int   & get   0
           wps_start        (8BE6) : set   1 int   & get   0
           chplan           (8BE7) : set   1 int   & get   0

What do you think about this?

Thanks

Bye Philipp
Arnd Bergmann Oct. 18, 2023, 4:05 p.m. UTC | #29
On Sun, Oct 15, 2023, at 20:42, Philipp Hortmann wrote:
> On 10/13/23 17:36, Arnd Bergmann wrote:
>> 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.
>
>
> Hi,
>
> __rtl8192e__
> this hardware is available on ebay 13 times.
> ping statistics:
> 1191 packets transmitted, 1191 received, 0% packet loss, time 1192169ms
> rtt min/avg/max/mdev = 0.633/2.184/74.792/3.157 ms
> maximum download 12,5 MByte/s
>
> __rtl8712__
> stick packard bell AW-NU120
> ping statistics:
> 678 packets transmitted, 652 received, 3.83481% packet loss, time 678287ms
> rtt min/avg/max/mdev = 0.943/4.835/231.435/17.900 ms
> maximum download 12,5 MByte/s
>
> I would like to remove the private functions as the "wireless tools" 
> package is deprecated. The following functions are available:
> kernel@matrix-ESPRIMO-P710:~/Documents/git/kernels/staging$ iwpriv wlan0
> wlan0     Available private ioctls :
>            read32           (8BE0) : set   1 int   & get   0
>            write32          (8BE1) : set   1 int   & get   0
>            driver_ext       (8BE2) : set   0       & get   0
>            mp_ioctl         (8BE3) : set   0       & get   0
>            apinfo           (8BE4) : set   1 int   & get   0
>            setpid           (8BE5) : set   1 int   & get   0
>            wps_start        (8BE6) : set   1 int   & get   0
>            chplan           (8BE7) : set   1 int   & get   0
>
> What do you think about this?

Larry is the maintainer for rtl8712, so he'd be the one to answer
this. Out of the four drivers that are left using wext after
my current draft removal series, only ks7010 and rtl8712
use the private handlers, so in theory we could remove
the CONFIG_WEXT_PRIV first, but I'm not sure that makes
any difference if the plan is to convert all wext drivers
to cfg80211 anyway.

     Arnd
Jeff Johnson Oct. 18, 2023, 8:37 p.m. UTC | #30
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
diff mbox series

Patch

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:	linux-wireless@vger.kernel.org
 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 <will@kernel.org>
@@ -9630,7 +9630,7 @@  F:	drivers/iio/pressure/mprls0025pa.c
 HOST AP DRIVER
 L:	linux-wireless@vger.kernel.org
 S:	Obsolete
-F:	drivers/net/wireless/intersil/hostap/
+F:	drivers/staging/wireless/hostap/
 
 HP BIOSCFG DRIVER
 M:	Jorge Lopez <jorge.lopez2@hp.com>
@@ -16208,7 +16208,7 @@  L:	linux-wireless@vger.kernel.org
 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" <prabhakar.csengg@gmail.com>
@@ -18120,7 +18120,7 @@  F:	include/ras/ras_event.h
 RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER
 L:	linux-wireless@vger.kernel.org
 S:	Orphan
-F:	drivers/net/wireless/legacy/ray*
+F:	drivers/staging/wireless/legacy/ray*
 
 RC-CORE / LIRC FRAMEWORK
 M:	Sean Young <sean@mess.org>
@@ -22594,7 +22594,7 @@  F:	include/uapi/linux/usb/g_uvc.h
 USB WIRELESS RNDIS DRIVER (rndis_wlan)
 L:	linux-wireless@vger.kernel.org
 S:	Orphan
-F:	drivers/net/wireless/legacy/rndis_wlan.c
+F:	drivers/staging/wireless/legacy/rndis_wlan.c
 
 USB XHCI DRIVER
 M:	Mathias Nyman <mathias.nyman@intel.com>
@@ -22607,7 +22607,7 @@  USB ZD1201 DRIVER
 L:	linux-wireless@vger.kernel.org
 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 <willemdebruijn.kernel@gmail.com>
@@ -23419,7 +23419,7 @@  F:	drivers/input/misc/wistron_btns.c
 WL3501 WIRELESS PCMCIA CARD DRIVER
 L:	linux-wireless@vger.kernel.org
 S:	Orphan
-F:	drivers/net/wireless/legacy/wl3501*
+F:	drivers/staging/wireless/legacy/wl3501*
 
 WMI BINARY MOF DRIVER
 M:	Armin Wolf <W_Armin@gmx.de>
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