[PATCH v2 00/43] wifi: nxpwifi: create nxpwifi to support iw61x

David Lin posted 43 patches 1 year, 6 months ago
There is a newer version of this series
MAINTAINERS                                   |    7 +
drivers/net/wireless/Kconfig                  |    1 +
drivers/net/wireless/Makefile                 |    1 +
drivers/net/wireless/nxp/Kconfig              |   17 +
drivers/net/wireless/nxp/Makefile             |    3 +
drivers/net/wireless/nxp/nxpwifi/11ac.c       |  366 ++
drivers/net/wireless/nxp/nxpwifi/11ac.h       |   33 +
drivers/net/wireless/nxp/nxpwifi/11h.c        |  433 ++
drivers/net/wireless/nxp/nxpwifi/11n.c        |  851 ++++
drivers/net/wireless/nxp/nxpwifi/11n.h        |  163 +
drivers/net/wireless/nxp/nxpwifi/11n_aggr.c   |  276 ++
drivers/net/wireless/nxp/nxpwifi/11n_aggr.h   |   21 +
.../net/wireless/nxp/nxpwifi/11n_rxreorder.c  |  917 ++++
.../net/wireless/nxp/nxpwifi/11n_rxreorder.h  |   72 +
drivers/net/wireless/nxp/nxpwifi/Kconfig      |   22 +
drivers/net/wireless/nxp/nxpwifi/Makefile     |   38 +
drivers/net/wireless/nxp/nxpwifi/cfg.h        |  445 ++
drivers/net/wireless/nxp/nxpwifi/cfg80211.c   | 3773 +++++++++++++++++
drivers/net/wireless/nxp/nxpwifi/cfg80211.h   |   19 +
drivers/net/wireless/nxp/nxpwifi/cfp.c        |  484 +++
drivers/net/wireless/nxp/nxpwifi/cmdevt.c     | 1285 ++++++
drivers/net/wireless/nxp/nxpwifi/cmdevt.h     |   92 +
drivers/net/wireless/nxp/nxpwifi/debugfs.c    | 1041 +++++
drivers/net/wireless/nxp/nxpwifi/decl.h       |  294 ++
drivers/net/wireless/nxp/nxpwifi/ethtool.c    |   58 +
drivers/net/wireless/nxp/nxpwifi/fw.h         | 2249 ++++++++++
drivers/net/wireless/nxp/nxpwifi/ie.c         |  501 +++
drivers/net/wireless/nxp/nxpwifi/init.c       |  694 +++
drivers/net/wireless/nxp/nxpwifi/join.c       |  915 ++++
drivers/net/wireless/nxp/nxpwifi/main.c       | 1666 ++++++++
drivers/net/wireless/nxp/nxpwifi/main.h       | 1478 +++++++
drivers/net/wireless/nxp/nxpwifi/scan.c       | 2806 ++++++++++++
drivers/net/wireless/nxp/nxpwifi/sdio.c       | 2648 ++++++++++++
drivers/net/wireless/nxp/nxpwifi/sdio.h       |  340 ++
drivers/net/wireless/nxp/nxpwifi/sta_cfg.c    | 1307 ++++++
drivers/net/wireless/nxp/nxpwifi/sta_cmd.c    | 3233 ++++++++++++++
drivers/net/wireless/nxp/nxpwifi/sta_event.c  |  864 ++++
drivers/net/wireless/nxp/nxpwifi/sta_rx.c     |  244 ++
drivers/net/wireless/nxp/nxpwifi/sta_tx.c     |  209 +
drivers/net/wireless/nxp/nxpwifi/txrx.c       |  358 ++
drivers/net/wireless/nxp/nxpwifi/uap_cmd.c    | 1169 +++++
drivers/net/wireless/nxp/nxpwifi/uap_event.c  |  491 +++
drivers/net/wireless/nxp/nxpwifi/uap_txrx.c   |  499 +++
drivers/net/wireless/nxp/nxpwifi/util.c       |  946 +++++
drivers/net/wireless/nxp/nxpwifi/util.h       |  108 +
drivers/net/wireless/nxp/nxpwifi/wmm.c        | 1379 ++++++
drivers/net/wireless/nxp/nxpwifi/wmm.h        |   78 +
include/linux/mmc/sdio_ids.h                  |    3 +
48 files changed, 34897 insertions(+)
create mode 100644 drivers/net/wireless/nxp/Kconfig
create mode 100644 drivers/net/wireless/nxp/Makefile
create mode 100644 drivers/net/wireless/nxp/nxpwifi/11ac.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/11ac.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/11h.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n_aggr.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n_aggr.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n_rxreorder.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n_rxreorder.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/Kconfig
create mode 100644 drivers/net/wireless/nxp/nxpwifi/Makefile
create mode 100644 drivers/net/wireless/nxp/nxpwifi/cfg.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/cfg80211.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/cfg80211.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/cfp.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/cmdevt.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/cmdevt.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/debugfs.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/decl.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/ethtool.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/fw.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/ie.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/init.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/join.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/main.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/main.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/scan.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/sdio.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/sdio.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/sta_cfg.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/sta_cmd.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/sta_event.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/sta_rx.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/sta_tx.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/txrx.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/uap_cmd.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/uap_event.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/uap_txrx.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/util.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/util.h
create mode 100644 drivers/net/wireless/nxp/nxpwifi/wmm.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/wmm.h
[PATCH v2 00/43] wifi: nxpwifi: create nxpwifi to support iw61x
Posted by David Lin 1 year, 6 months ago
This series adds support for IW61x which is a new family of 2.4/5 GHz
dual-band 1x1 Wi-Fi 6, Bluetooth/Bluetooth Low Energy 5.2 and 15.4
tri-radio single chip by NXP. These devices support 20/40/80MHz
single spatial stream in both STA and AP mode. Communication to the
IW61x is done via SDIO interface

This driver is a derivative of existing Mwifiex [1] and based on similar
full-MAC architecture [2]. It has been tested with i.MX8M Mini evaluation
kits in both AP and STA mode.

All code passes sparse and checkpatch

Data sheet (require registration):
https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-
plus-802-15-4/2-4-5-ghz-dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-
4-plus-802-15-4-tri-radio-solution:IW612

Known gaps to be addressed in the following patches,
  - Enable 11ax capabilities. This initial patch support up to 11ac.
  - Support DFS channel. This initial patch doesn't support DFS channel in
    both AP/STA mode.

This patch is presented as a request for comment with the intention of being
made into a patch after initial feedbacks are addressed

[1] We had considered adding IW61x to mwifiex driver, however due to
    FW architecture, host command interface and supported features are
    significantly different, we have to create the new nxpwifi driver.
    Subsequent NXP chipsets will be added and sustained in this new driver.

[2] Some features, as of now, WPA2/WPA3 personal/enterprise are offloaded
    to host wpa_supplicant/hostapd.

v2:
  - Rename ioctl.h and sta_ioctl.c to cfg.h and sta_cfg.c.
  - Remove header file semaphore.h.
  - Use static value for cookie instead of run time random number.
  - Use ERR_PTR(), IS_ERR() and PTR_ERR().
  - Use Kernel defined return error code.
  - Remove unnecessary private ie definitions.
  - Remove mutex async_mutex and related code.
  - Consolidate multiple workqueue into one.
  - Add the support for PSK SHA256.
  - Use tasklet for Rx handler.
  - Remove unused functions.
  - Remove compile warning.

David Lin (43):
  wifi: nxpwifi: add 11ac.c
  wifi: nxpwifi: add 11ac.h
  wifi: nxpwifi: add 11h.c
  wifi: nxpwifi: add 11n_aggr.c
  wifi: nxpwifi: add 11n_aggr.h
  wifi: nxpwifi: add 11n.c
  wifi: nxpwifi: add 11n.h
  wifi: nxpwifi: add 11n_rxreorder.c
  wifi: nxpwifi: add 11n_rxreorder.h
  wifi: nxpwifi: add cfg80211.c
  wifi: nxpwifi: add cfg80211.h
  wifi: nxpwifi: add cfg.h
  wifi: nxpwifi: add cfp.c
  wifi: nxpwifi: add cmdevt.c
  wifi: nxpwifi: add cmdevt.h
  wifi: nxpwifi: add debugfs.c
  wifi: nxpwifi: add decl.h
  wifi: nxpwifi: add ethtool.c
  wifi: nxpwifi: add fw.h
  wifi: nxpwifi: add ie.c
  wifi: nxpwifi: add init.c
  wifi: nxpwifi: add join.c
  wifi: nxpwifi: add main.c
  wifi: nxpwifi: add main.h
  wifi: nxpwifi: add scan.c
  wifi: nxpwifi: add sdio.c
  wifi: nxpwifi: add sdio.h
  wifi: nxpwifi: add sta_cfg.c
  wifi: nxpwifi: add sta_cmd.c
  wifi: nxpwifi: add sta_event.c
  wifi: nxpwifi: add sta_rx.c
  wifi: nxpwifi: add sta_tx.c
  wifi: nxpwifi: add txrx.c
  wifi: nxpwifi: add uap_cmd.c
  wifi: nxpwifi: add uap_event.c
  wifi: nxpwifi: add uap_txrx.c
  wifi: nxpwifi: add util.c
  wifi: nxpwifi: add util.h
  wifi: nxpwifi: add wmm.c
  wifi: nxpwifi: add wmm.h
  wifi: nxpwifi: add nxp sdio vendor id and iw61x device id
  wifi: nxpwifi: add Makefile and Kconfig files for nxpwifi compilation
  wifi: nxpwifi: add nxpwifi related information to MAINTAINERS

 MAINTAINERS                                   |    7 +
 drivers/net/wireless/Kconfig                  |    1 +
 drivers/net/wireless/Makefile                 |    1 +
 drivers/net/wireless/nxp/Kconfig              |   17 +
 drivers/net/wireless/nxp/Makefile             |    3 +
 drivers/net/wireless/nxp/nxpwifi/11ac.c       |  366 ++
 drivers/net/wireless/nxp/nxpwifi/11ac.h       |   33 +
 drivers/net/wireless/nxp/nxpwifi/11h.c        |  433 ++
 drivers/net/wireless/nxp/nxpwifi/11n.c        |  851 ++++
 drivers/net/wireless/nxp/nxpwifi/11n.h        |  163 +
 drivers/net/wireless/nxp/nxpwifi/11n_aggr.c   |  276 ++
 drivers/net/wireless/nxp/nxpwifi/11n_aggr.h   |   21 +
 .../net/wireless/nxp/nxpwifi/11n_rxreorder.c  |  917 ++++
 .../net/wireless/nxp/nxpwifi/11n_rxreorder.h  |   72 +
 drivers/net/wireless/nxp/nxpwifi/Kconfig      |   22 +
 drivers/net/wireless/nxp/nxpwifi/Makefile     |   38 +
 drivers/net/wireless/nxp/nxpwifi/cfg.h        |  445 ++
 drivers/net/wireless/nxp/nxpwifi/cfg80211.c   | 3773 +++++++++++++++++
 drivers/net/wireless/nxp/nxpwifi/cfg80211.h   |   19 +
 drivers/net/wireless/nxp/nxpwifi/cfp.c        |  484 +++
 drivers/net/wireless/nxp/nxpwifi/cmdevt.c     | 1285 ++++++
 drivers/net/wireless/nxp/nxpwifi/cmdevt.h     |   92 +
 drivers/net/wireless/nxp/nxpwifi/debugfs.c    | 1041 +++++
 drivers/net/wireless/nxp/nxpwifi/decl.h       |  294 ++
 drivers/net/wireless/nxp/nxpwifi/ethtool.c    |   58 +
 drivers/net/wireless/nxp/nxpwifi/fw.h         | 2249 ++++++++++
 drivers/net/wireless/nxp/nxpwifi/ie.c         |  501 +++
 drivers/net/wireless/nxp/nxpwifi/init.c       |  694 +++
 drivers/net/wireless/nxp/nxpwifi/join.c       |  915 ++++
 drivers/net/wireless/nxp/nxpwifi/main.c       | 1666 ++++++++
 drivers/net/wireless/nxp/nxpwifi/main.h       | 1478 +++++++
 drivers/net/wireless/nxp/nxpwifi/scan.c       | 2806 ++++++++++++
 drivers/net/wireless/nxp/nxpwifi/sdio.c       | 2648 ++++++++++++
 drivers/net/wireless/nxp/nxpwifi/sdio.h       |  340 ++
 drivers/net/wireless/nxp/nxpwifi/sta_cfg.c    | 1307 ++++++
 drivers/net/wireless/nxp/nxpwifi/sta_cmd.c    | 3233 ++++++++++++++
 drivers/net/wireless/nxp/nxpwifi/sta_event.c  |  864 ++++
 drivers/net/wireless/nxp/nxpwifi/sta_rx.c     |  244 ++
 drivers/net/wireless/nxp/nxpwifi/sta_tx.c     |  209 +
 drivers/net/wireless/nxp/nxpwifi/txrx.c       |  358 ++
 drivers/net/wireless/nxp/nxpwifi/uap_cmd.c    | 1169 +++++
 drivers/net/wireless/nxp/nxpwifi/uap_event.c  |  491 +++
 drivers/net/wireless/nxp/nxpwifi/uap_txrx.c   |  499 +++
 drivers/net/wireless/nxp/nxpwifi/util.c       |  946 +++++
 drivers/net/wireless/nxp/nxpwifi/util.h       |  108 +
 drivers/net/wireless/nxp/nxpwifi/wmm.c        | 1379 ++++++
 drivers/net/wireless/nxp/nxpwifi/wmm.h        |   78 +
 include/linux/mmc/sdio_ids.h                  |    3 +
 48 files changed, 34897 insertions(+)
 create mode 100644 drivers/net/wireless/nxp/Kconfig
 create mode 100644 drivers/net/wireless/nxp/Makefile
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/11ac.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/11ac.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/11h.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n_aggr.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n_aggr.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n_rxreorder.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/11n_rxreorder.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/Kconfig
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/Makefile
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/cfg.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/cfg80211.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/cfg80211.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/cfp.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/cmdevt.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/cmdevt.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/debugfs.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/decl.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/ethtool.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/fw.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/ie.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/init.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/join.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/main.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/main.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/scan.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/sdio.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/sdio.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/sta_cfg.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/sta_cmd.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/sta_event.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/sta_rx.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/sta_tx.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/txrx.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/uap_cmd.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/uap_event.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/uap_txrx.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/util.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/util.h
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/wmm.c
 create mode 100644 drivers/net/wireless/nxp/nxpwifi/wmm.h


base-commit: 555ba98448f8916bff87067853a7e931949e6b57
-- 
2.34.1
Re: [PATCH v2 00/43] wifi: nxpwifi: create nxpwifi to support iw61x
Posted by Sascha Hauer 1 year, 5 months ago
On Fri, Aug 09, 2024 at 05:44:50PM +0800, David Lin wrote:
> This series adds support for IW61x which is a new family of 2.4/5 GHz
> dual-band 1x1 Wi-Fi 6, Bluetooth/Bluetooth Low Energy 5.2 and 15.4
> tri-radio single chip by NXP. These devices support 20/40/80MHz
> single spatial stream in both STA and AP mode. Communication to the
> IW61x is done via SDIO interface
> 
> This driver is a derivative of existing Mwifiex [1] and based on similar
> full-MAC architecture [2]. It has been tested with i.MX8M Mini evaluation
> kits in both AP and STA mode.
> 
> All code passes sparse and checkpatch
> 
> Data sheet (require registration):
> https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-
> plus-802-15-4/2-4-5-ghz-dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-
> 4-plus-802-15-4-tri-radio-solution:IW612
> 
> Known gaps to be addressed in the following patches,
>   - Enable 11ax capabilities. This initial patch support up to 11ac.
>   - Support DFS channel. This initial patch doesn't support DFS channel in
>     both AP/STA mode.
> 
> This patch is presented as a request for comment with the intention of being
> made into a patch after initial feedbacks are addressed
> 
> [1] We had considered adding IW61x to mwifiex driver, however due to
>     FW architecture, host command interface and supported features are
>     significantly different, we have to create the new nxpwifi driver.
>     Subsequent NXP chipsets will be added and sustained in this new driver.

I added IW61x support to the mwifiex driver and besides the VDLL
handling which must be added I didn't notice any differences. There
might be other differences, but I doubt that these can't be integrated
into the mwifiex driver.

Honestly I don't think adding a new driver is a good ideai, given how big
wifi drivers are and how limited the review bandwidth is.

What we'll end up with is that we'll receive the same patches for both
drivers, or worse, only for one driver while the other stays unpatched.

I even found some of the bugs and deficiencies I am just fixing for the
mwifiex driver in the nxpwifi driver as well. So please direct your
effort to improving the existing driver rather than putting more burden
to the maintainers by adding a new driver. I am sure this is the faster
path to get the necessary changes upstream, plus users of the mwifiex
driver will profit from these changes as well.

Of course I don't have to decide this. The wifi maintainer(s) will have
the final word, but these are my 2 cents on this topic.

Sascha


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
Re: [PATCH v2 00/43] wifi: nxpwifi: create nxpwifi to support iw61x
Posted by Kalle Valo 1 year, 3 months ago
Sascha Hauer <s.hauer@pengutronix.de> writes:

> On Fri, Aug 09, 2024 at 05:44:50PM +0800, David Lin wrote:
>
>> This series adds support for IW61x which is a new family of 2.4/5 GHz
>> dual-band 1x1 Wi-Fi 6, Bluetooth/Bluetooth Low Energy 5.2 and 15.4
>> tri-radio single chip by NXP. These devices support 20/40/80MHz
>> single spatial stream in both STA and AP mode. Communication to the
>> IW61x is done via SDIO interface
>> 
>> This driver is a derivative of existing Mwifiex [1] and based on similar
>> full-MAC architecture [2]. It has been tested with i.MX8M Mini evaluation
>> kits in both AP and STA mode.
>> 
>> All code passes sparse and checkpatch
>> 
>> Data sheet (require registration):
>> https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-
>> plus-802-15-4/2-4-5-ghz-dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-
>> 4-plus-802-15-4-tri-radio-solution:IW612
>> 
>> Known gaps to be addressed in the following patches,
>>   - Enable 11ax capabilities. This initial patch support up to 11ac.
>>   - Support DFS channel. This initial patch doesn't support DFS channel in
>>     both AP/STA mode.
>> 
>> This patch is presented as a request for comment with the intention of being
>> made into a patch after initial feedbacks are addressed
>> 
>> [1] We had considered adding IW61x to mwifiex driver, however due to
>>     FW architecture, host command interface and supported features are
>>     significantly different, we have to create the new nxpwifi driver.
>>     Subsequent NXP chipsets will be added and sustained in this new driver.
>
> I added IW61x support to the mwifiex driver and besides the VDLL
> handling which must be added I didn't notice any differences. There
> might be other differences, but I doubt that these can't be integrated
> into the mwifiex driver.
>
> Honestly I don't think adding a new driver is a good ideai, given how big
> wifi drivers are and how limited the review bandwidth is.
>
> What we'll end up with is that we'll receive the same patches for both
> drivers, or worse, only for one driver while the other stays unpatched.
>
> I even found some of the bugs and deficiencies I am just fixing for the
> mwifiex driver in the nxpwifi driver as well. So please direct your
> effort to improving the existing driver rather than putting more burden
> to the maintainers by adding a new driver. I am sure this is the faster
> path to get the necessary changes upstream, plus users of the mwifiex
> driver will profit from these changes as well.
>
> Of course I don't have to decide this. The wifi maintainer(s) will have
> the final word, but these are my 2 cents on this topic.

Replying to an old mail but I'm with Sascha here and I'm also skeptic
about adding a new driver. Especially my worry is that after the driver
is accepted we will not hear from NXP anymore and the community has two
almost identical drivers to maintain. There have been cases that after
taking the driver the company disappears and we (the community) are left
maintaining the abandoned driver.

Also I have not seen any convincing reasons why a new driver is needed.
For me much better approach would be to extend mwifiex like Sascha
recommends.

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

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Re: [PATCH v2 00/43] wifi: nxpwifi: create nxpwifi to support iw61x
Posted by Calvin Owens 1 year, 5 months ago
On Thursday 08/22 at 14:56 +0200, Sascha Hauer wrote:
> On Fri, Aug 09, 2024 at 05:44:50PM +0800, David Lin wrote:
> > This series adds support for IW61x which is a new family of 2.4/5 GHz
> > dual-band 1x1 Wi-Fi 6, Bluetooth/Bluetooth Low Energy 5.2 and 15.4
> > tri-radio single chip by NXP. These devices support 20/40/80MHz
> > single spatial stream in both STA and AP mode. Communication to the
> > IW61x is done via SDIO interface
> > 
> > This driver is a derivative of existing Mwifiex [1] and based on similar
> > full-MAC architecture [2]. It has been tested with i.MX8M Mini evaluation
> > kits in both AP and STA mode.
> > 
> > All code passes sparse and checkpatch
> > 
> > Data sheet (require registration):
> > https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-
> > plus-802-15-4/2-4-5-ghz-dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-
> > 4-plus-802-15-4-tri-radio-solution:IW612
> > 
> > Known gaps to be addressed in the following patches,
> >   - Enable 11ax capabilities. This initial patch support up to 11ac.
> >   - Support DFS channel. This initial patch doesn't support DFS channel in
> >     both AP/STA mode.
> > 
> > This patch is presented as a request for comment with the intention of being
> > made into a patch after initial feedbacks are addressed
> > 
> > [1] We had considered adding IW61x to mwifiex driver, however due to
> >     FW architecture, host command interface and supported features are
> >     significantly different, we have to create the new nxpwifi driver.
> >     Subsequent NXP chipsets will be added and sustained in this new driver.
> 
> I added IW61x support to the mwifiex driver and besides the VDLL
> handling which must be added I didn't notice any differences. There
> might be other differences, but I doubt that these can't be integrated
> into the mwifiex driver.

Hi Sascha,

I'd also love to see this patchset, if you're able to share it. I can
test on an IW612 if that's helpful at all.

> Honestly I don't think adding a new driver is a good ideai, given how big
> wifi drivers are and how limited the review bandwidth is.
> 
> What we'll end up with is that we'll receive the same patches for both
> drivers, or worse, only for one driver while the other stays unpatched.

I have some concrete experience with "in-tree driver forks" like this:
a pair of SCSI drivers named mpt2sas and mpt3sas.

The latter was created as a near copy of the former:

    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f92363d12359

The result was *exactly* what you forsee happening here: both drivers
were constantly missing fixes from the other, and they were just subtly
different enough that it wasn't simple to "port" patches from one to the
other. It was a frustrating experience for everybody involved. I think
their git histories prove your point, I'd encourage everyone with a
horse in this race to take a look at them.

It took three years to finally unify them:

    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c84b06a48c4d

I doubt anyone would disagree that wifi drivers are much more complex
than SCSI drivers. It would be strictly *worse* here, and the path to
unifying them strictly longer.

Thanks,
Calvin

> I even found some of the bugs and deficiencies I am just fixing for the
> mwifiex driver in the nxpwifi driver as well. So please direct your
> effort to improving the existing driver rather than putting more burden
> to the maintainers by adding a new driver. I am sure this is the faster
> path to get the necessary changes upstream, plus users of the mwifiex
> driver will profit from these changes as well.
> 
> Of course I don't have to decide this. The wifi maintainer(s) will have
> the final word, but these are my 2 cents on this topic.
> 
> Sascha
> 
> 
> -- 
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
Re: [PATCH v2 00/43] wifi: nxpwifi: create nxpwifi to support iw61x
Posted by Francesco Dolcini 1 year, 5 months ago
On Thu, Aug 22, 2024 at 02:56:25PM +0200, Sascha Hauer wrote:
> On Fri, Aug 09, 2024 at 05:44:50PM +0800, David Lin wrote:
> > This series adds support for IW61x which is a new family of 2.4/5 GHz
> > dual-band 1x1 Wi-Fi 6, Bluetooth/Bluetooth Low Energy 5.2 and 15.4
> > tri-radio single chip by NXP. These devices support 20/40/80MHz
> > single spatial stream in both STA and AP mode. Communication to the
> > IW61x is done via SDIO interface
> > 
> > This driver is a derivative of existing Mwifiex [1] and based on similar
> > full-MAC architecture [2]. It has been tested with i.MX8M Mini evaluation
> > kits in both AP and STA mode.
> > 
> > All code passes sparse and checkpatch
> > 
> > Data sheet (require registration):
> > https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-
> > plus-802-15-4/2-4-5-ghz-dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-
> > 4-plus-802-15-4-tri-radio-solution:IW612
> > 
> > Known gaps to be addressed in the following patches,
> >   - Enable 11ax capabilities. This initial patch support up to 11ac.
> >   - Support DFS channel. This initial patch doesn't support DFS channel in
> >     both AP/STA mode.
> > 
> > This patch is presented as a request for comment with the intention of being
> > made into a patch after initial feedbacks are addressed
> > 
> > [1] We had considered adding IW61x to mwifiex driver, however due to
> >     FW architecture, host command interface and supported features are
> >     significantly different, we have to create the new nxpwifi driver.
> >     Subsequent NXP chipsets will be added and sustained in this new driver.
> 
> I added IW61x support to the mwifiex driver and besides the VDLL
> handling which must be added I didn't notice any differences. There
> might be other differences, but I doubt that these can't be integrated
> into the mwifiex driver.

Maybe you can share an RFC patch with what you currently have available
to support IW61x within the current mwifiex driver?

Given what David @NXP wrote here

> > [1] We had considered adding IW61x to mwifiex driver, however due to
> >     FW architecture, host command interface and supported features are
> >     significantly different, we have to create the new nxpwifi driver.

David, given the code, he should be able to highlight the limitation of
such approach and hopefully we can find a good path forward?

One of the challenges with the current mwifiex driver is that it
supports quite a few wireless devices, and any new addition must be done
in such a way to not break the old stuff. Not to mention the "Odd Fixes"
maintenance status of the driver, quoting Brian: "My only interest in
mwifiex is in making sure existing hardware (especially those used on
Chromebooks) doesn't get significantly worse.".

Francesco
Re: [PATCH v2 00/43] wifi: nxpwifi: create nxpwifi to support iw61x
Posted by Sascha Hauer 1 year, 5 months ago
On Sat, Aug 24, 2024 at 03:48:39PM +0200, Francesco Dolcini wrote:
> On Thu, Aug 22, 2024 at 02:56:25PM +0200, Sascha Hauer wrote:
> > On Fri, Aug 09, 2024 at 05:44:50PM +0800, David Lin wrote:
> > > This series adds support for IW61x which is a new family of 2.4/5 GHz
> > > dual-band 1x1 Wi-Fi 6, Bluetooth/Bluetooth Low Energy 5.2 and 15.4
> > > tri-radio single chip by NXP. These devices support 20/40/80MHz
> > > single spatial stream in both STA and AP mode. Communication to the
> > > IW61x is done via SDIO interface
> > > 
> > > This driver is a derivative of existing Mwifiex [1] and based on similar
> > > full-MAC architecture [2]. It has been tested with i.MX8M Mini evaluation
> > > kits in both AP and STA mode.
> > > 
> > > All code passes sparse and checkpatch
> > > 
> > > Data sheet (require registration):
> > > https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-
> > > plus-802-15-4/2-4-5-ghz-dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-
> > > 4-plus-802-15-4-tri-radio-solution:IW612
> > > 
> > > Known gaps to be addressed in the following patches,
> > >   - Enable 11ax capabilities. This initial patch support up to 11ac.
> > >   - Support DFS channel. This initial patch doesn't support DFS channel in
> > >     both AP/STA mode.
> > > 
> > > This patch is presented as a request for comment with the intention of being
> > > made into a patch after initial feedbacks are addressed
> > > 
> > > [1] We had considered adding IW61x to mwifiex driver, however due to
> > >     FW architecture, host command interface and supported features are
> > >     significantly different, we have to create the new nxpwifi driver.
> > >     Subsequent NXP chipsets will be added and sustained in this new driver.
> > 
> > I added IW61x support to the mwifiex driver and besides the VDLL
> > handling which must be added I didn't notice any differences. There
> > might be other differences, but I doubt that these can't be integrated
> > into the mwifiex driver.
> 
> Maybe you can share an RFC patch with what you currently have available
> to support IW61x within the current mwifiex driver?

I just did, see:

https://lore.kernel.org/linux-wireless/20240826072648.167004-1-s.hauer@pengutronix.de/

Sascha

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |