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