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