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 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
This patch intents to add new driver nxpwifi for NXP IW61x and future new
chips/features support.
[1] We had considered adding IW61x to mwifiex, however due to FW
architecture, host command interface and supported features are
significantly different, doing this on mwifiex will carry a lot of
burdens. The effort of making sure no regression is also a huge effort.
We must create a new driver nxpwifi. Subsequent NXP chipsets will be
added and sustained on nxpwifi only.
[2] Some features, as of now, WPA2/WPA3 personal/enterprise are offloaded
to host wpa_supplicant/hostapd.
v3:
- Enable 802.11ax (Wi-Fi 6) for both AP and STA mode.
- Extend driver verion string with hotfix number.
- Remove Rx mlme work.
- Remove all useless check of netif_carrier_ok().
- Merge decl.h to cfg.h.
- Remove unnecessary check for wiphy parameters setting.
- Synchronize following commits from Mwifiex:
wifi: mwifiex: replace open-coded module_sdio_driver()
wifi: mwifiex: Fix interface type change
wifi: mwifiex: Do not return unused priv in mwifiex_get_priv_by_id()
wifi: mwifiex: increase max_num_akm_suites
wifi: mwifiex: duplicate static structs used in driver instances
wifi: mwifiex: keep mwifiex_cfg80211_ops constant
wifi: mwifiex: Fix uninitialized variable in
mwifiex_cfg80211_authenticate()
wifi: mwifiex: remove unnecessary checks for valid priv
wifi: mwifiex: Fix memcpy() field-spanning write warning in
mwifiex_cmd_802_11_scan_ext()
wifi: mwifiex: Use IRQF_NO_AUTOEN flag in request_irq()
v2:
- Rename ioctl.h and sta_ioctl.c to cfg.h and sta_cfg.c.
- Remove useless header file semaphore.h.
- Use static variable for cookie.
- Modify nxpwifi_register to use ERR_PTR, IS_ERR and PTR_ERR.
- Use error number for error code.
- Remove unnecessary private ie definitions.
- Remove mutex async_mutex and related code.
- Remove unnecessary work queue.
- Add the support for PSK SHA256.
- Use tasklet for Rx.
- Remove unused functions.
- Remove compile warning.
David Lin (22):
wifi: nxpwifi: add 802.11n files
wifi: nxpwifi: add 802.11ac files
wifi: nxpwifi: add 802.11ax files
wifi: nxpwifi: add 802.11h file
wifi: nxpwifi: add WMM files
wifi: nxpwifi: add scan.c
wifi: nxpwifi: add join.c
wifi: nxpwifi: add cfp.c
wifi: nxpwifi: add configuration files
wifi: nxpwifi: implement cfg80211 ops
wifi: nxpwifi: add host command file
wifi: nxpwifi: add command and event files
wifi: nxpwifi: add data path files
wifi: nxpwifi: add debugfs file
wifi: nxpwifi: add ethtool.c
wifi: nxpwifi: add utility files
wifi: nxpwifi: add initialization file
wifi: nxpwifi: add core files
wifi: nxpwifi: add sdio bus driver files
wifi: nxpwifi: modify sdio_ids.h
wifi: nxpwifi: add makefile and kconfig files
wifi: nxpwifi: modify MAINTAINERS file
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 | 288 ++
drivers/net/wireless/nxp/nxpwifi/11ac.h | 32 +
drivers/net/wireless/nxp/nxpwifi/11ax.c | 388 ++
drivers/net/wireless/nxp/nxpwifi/11ax.h | 61 +
drivers/net/wireless/nxp/nxpwifi/11h.c | 432 ++
drivers/net/wireless/nxp/nxpwifi/11n.c | 848 ++++
drivers/net/wireless/nxp/nxpwifi/11n.h | 161 +
drivers/net/wireless/nxp/nxpwifi/11n_aggr.c | 275 ++
drivers/net/wireless/nxp/nxpwifi/11n_aggr.h | 21 +
.../net/wireless/nxp/nxpwifi/11n_rxreorder.c | 910 ++++
.../net/wireless/nxp/nxpwifi/11n_rxreorder.h | 72 +
drivers/net/wireless/nxp/nxpwifi/Kconfig | 22 +
drivers/net/wireless/nxp/nxpwifi/Makefile | 39 +
drivers/net/wireless/nxp/nxpwifi/cfg.h | 874 ++++
drivers/net/wireless/nxp/nxpwifi/cfg80211.c | 4003 +++++++++++++++++
drivers/net/wireless/nxp/nxpwifi/cfg80211.h | 19 +
drivers/net/wireless/nxp/nxpwifi/cfp.c | 475 ++
drivers/net/wireless/nxp/nxpwifi/cmdevt.c | 1286 ++++++
drivers/net/wireless/nxp/nxpwifi/cmdevt.h | 98 +
drivers/net/wireless/nxp/nxpwifi/debugfs.c | 1041 +++++
drivers/net/wireless/nxp/nxpwifi/ethtool.c | 58 +
drivers/net/wireless/nxp/nxpwifi/fw.h | 2322 ++++++++++
drivers/net/wireless/nxp/nxpwifi/ie.c | 501 +++
drivers/net/wireless/nxp/nxpwifi/init.c | 680 +++
drivers/net/wireless/nxp/nxpwifi/join.c | 910 ++++
drivers/net/wireless/nxp/nxpwifi/main.c | 1649 +++++++
drivers/net/wireless/nxp/nxpwifi/main.h | 1477 ++++++
drivers/net/wireless/nxp/nxpwifi/scan.c | 2831 ++++++++++++
drivers/net/wireless/nxp/nxpwifi/sdio.c | 2646 +++++++++++
drivers/net/wireless/nxp/nxpwifi/sdio.h | 340 ++
drivers/net/wireless/nxp/nxpwifi/sta_cfg.c | 1311 ++++++
drivers/net/wireless/nxp/nxpwifi/sta_cmd.c | 3309 ++++++++++++++
drivers/net/wireless/nxp/nxpwifi/sta_event.c | 861 ++++
drivers/net/wireless/nxp/nxpwifi/sta_rx.c | 243 +
drivers/net/wireless/nxp/nxpwifi/sta_tx.c | 208 +
drivers/net/wireless/nxp/nxpwifi/txrx.c | 357 ++
drivers/net/wireless/nxp/nxpwifi/uap_cmd.c | 1254 ++++++
drivers/net/wireless/nxp/nxpwifi/uap_event.c | 491 ++
drivers/net/wireless/nxp/nxpwifi/uap_txrx.c | 498 ++
drivers/net/wireless/nxp/nxpwifi/util.c | 999 ++++
drivers/net/wireless/nxp/nxpwifi/util.h | 121 +
drivers/net/wireless/nxp/nxpwifi/wmm.c | 1369 ++++++
drivers/net/wireless/nxp/nxpwifi/wmm.h | 78 +
include/linux/mmc/sdio_ids.h | 3 +
49 files changed, 35890 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/11ax.c
create mode 100644 drivers/net/wireless/nxp/nxpwifi/11ax.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/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: 5a4d42c1688c88f3be6aef46b0ea6c32694cd2b8
--
2.34.1