mbox series

[RFC,v2,00/96] wireless: cl8k driver for Celeno IEEE 802.11ax devices

Message ID 20220524113502.1094459-1-viktor.barna@celeno.com (mailing list archive)
Headers show
Series wireless: cl8k driver for Celeno IEEE 802.11ax devices | expand

Message

Viktor Barna May 24, 2022, 11:33 a.m. UTC
From: Viktor Barna <viktor.barna@celeno.com>

Celeno Communications publishes to the opensource new wireless driver
for an own 802.11 chipset family - 80xx. The main chip supports multiple
simultaneous bands functioning (2.4G/5.2G or 5.2G/6G) over PCIe 3.0
dual-lane interface. Basically, the chip is dual-band concurrent up to
8x8 in total, and up to 6x6 per band, including 802.11ax 160MHz support
and functioning of AP/STA/MESH modes. The driver architecture is strong
SoftMAC.

The current patchset is the second one and is considered to be published 
in form of RFC (Request for Comments, version 2). If there are any
suggestions/propositions - we will be glad to fix them and
eventually share the driver with the community in form of an official patch
(including the firmware binaries).

The RFC is divided into separate patches on a per-file basis to simplify
the review process.

Known issues:
- driver may be configured via config files, that is discouraged by
  upstream and may be changed in the future.

Signed-off-by: Aviad Brikman <aviad.brikman@celeno.com>
Signed-off-by: Eliav Farber <eliav.farber@gmail.com>
Signed-off-by: Maksym Kokhan <maksym.kokhan@celeno.com>
Signed-off-by: Oleksandr Savchenko <oleksandr.savchenko@celeno.com>
Signed-off-by: Shay Bar <shay.bar@celeno.com>
Signed-off-by: Viktor Barna <viktor.barna@celeno.com>
---
v2: 
- Reduce files amount from 256 to 98 (including 43 source files).
- Fix Kconfig vs code inconsistencies.
- Remove Celeno-specific wrappers like cl_snprintf, cl_timer, string
  processors.
- Namespace more functions (with cl_<something>).
- Remove DEV_COREDUMP support (temporary. to minimize size of the RFC).
- Remove CLI handling in the driver (forever, reimplement some of the features
  in the debugfs). 
- Remove netlink vendor-specific commands.
- Remove debugfs code.
- Fix sparse warnings.
- Fix more checkpatch errors/warnings/checks.
- Update codebase to the most recent internal codebase (as of 20.05.22).
- Adjust patch to support Kernel 5.18-rc7.
 
v1: 
- https://lore.kernel.org/linux-wireless/20210617160223.160998-1-viktor.barna@celeno.com/

Viktor Barna (96):
  celeno: add Kconfig
  celeno: add Makefile
  cl8k: add Kconfig
  cl8k: add Makefile
  cl8k: add ampdu.c
  cl8k: add ampdu.h
  cl8k: add bf.c
  cl8k: add bf.h
  cl8k: add calib.c
  cl8k: add calib.h
  cl8k: add channel.c
  cl8k: add channel.h
  cl8k: add chip.c
  cl8k: add chip.h
  cl8k: add config.c
  cl8k: add config.h
  cl8k: add debug.c
  cl8k: add debug.h
  cl8k: add def.h
  cl8k: add dfs.c
  cl8k: add dfs.h
  cl8k: add dsp.c
  cl8k: add dsp.h
  cl8k: add e2p.c
  cl8k: add e2p.h
  cl8k: add eeprom.h
  cl8k: add ela.c
  cl8k: add ela.h
  cl8k: add enhanced_tim.c
  cl8k: add enhanced_tim.h
  cl8k: add fw.c
  cl8k: add fw.h
  cl8k: add hw.c
  cl8k: add hw.h
  cl8k: add ipc_shared.h
  cl8k: add key.c
  cl8k: add key.h
  cl8k: add mac80211.c
  cl8k: add mac80211.h
  cl8k: add mac_addr.c
  cl8k: add mac_addr.h
  cl8k: add main.c
  cl8k: add main.h
  cl8k: add maintenance.c
  cl8k: add maintenance.h
  cl8k: add motion_sense.c
  cl8k: add motion_sense.h
  cl8k: add pci.c
  cl8k: add pci.h
  cl8k: add phy.c
  cl8k: add phy.h
  cl8k: add platform.c
  cl8k: add platform.h
  cl8k: add power.c
  cl8k: add power.h
  cl8k: add radio.c
  cl8k: add radio.h
  cl8k: add rates.c
  cl8k: add rates.h
  cl8k: add recovery.c
  cl8k: add recovery.h
  cl8k: add regdom.c
  cl8k: add regdom.h
  cl8k: add reg/reg_access.h
  cl8k: add reg/reg_defs.h
  cl8k: add rfic.c
  cl8k: add rfic.h
  cl8k: add rx.c
  cl8k: add rx.h
  cl8k: add scan.c
  cl8k: add scan.h
  cl8k: add sounding.c
  cl8k: add sounding.h
  cl8k: add sta.c
  cl8k: add sta.h
  cl8k: add stats.c
  cl8k: add stats.h
  cl8k: add tcv.c
  cl8k: add tcv.h
  cl8k: add temperature.c
  cl8k: add temperature.h
  cl8k: add traffic.c
  cl8k: add traffic.h
  cl8k: add tx.c
  cl8k: add tx.h
  cl8k: add utils.c
  cl8k: add utils.h
  cl8k: add version.c
  cl8k: add version.h
  cl8k: add vif.c
  cl8k: add vif.h
  cl8k: add vns.c
  cl8k: add vns.h
  cl8k: add wrs.c
  cl8k: add wrs.h
  wireless: add Celeno vendor

 drivers/net/wireless/Kconfig                  |    1 +
 drivers/net/wireless/Makefile                 |    1 +
 drivers/net/wireless/celeno/Kconfig           |   17 +
 drivers/net/wireless/celeno/Makefile          |    2 +
 drivers/net/wireless/celeno/cl8k/Kconfig      |   41 +
 drivers/net/wireless/celeno/cl8k/Makefile     |   66 +
 drivers/net/wireless/celeno/cl8k/ampdu.c      |  331 +
 drivers/net/wireless/celeno/cl8k/ampdu.h      |   39 +
 drivers/net/wireless/celeno/cl8k/bf.c         |  346 +
 drivers/net/wireless/celeno/cl8k/bf.h         |   52 +
 drivers/net/wireless/celeno/cl8k/calib.c      | 2266 ++++
 drivers/net/wireless/celeno/cl8k/calib.h      |  390 +
 drivers/net/wireless/celeno/cl8k/channel.c    | 1656 +++
 drivers/net/wireless/celeno/cl8k/channel.h    |  401 +
 drivers/net/wireless/celeno/cl8k/chip.c       |  580 +
 drivers/net/wireless/celeno/cl8k/chip.h       |  182 +
 drivers/net/wireless/celeno/cl8k/config.c     |   46 +
 drivers/net/wireless/celeno/cl8k/config.h     |  405 +
 drivers/net/wireless/celeno/cl8k/debug.c      |  442 +
 drivers/net/wireless/celeno/cl8k/debug.h      |  160 +
 drivers/net/wireless/celeno/cl8k/def.h        |  235 +
 drivers/net/wireless/celeno/cl8k/dfs.c        |  768 ++
 drivers/net/wireless/celeno/cl8k/dfs.h        |  146 +
 drivers/net/wireless/celeno/cl8k/dsp.c        |  627 ++
 drivers/net/wireless/celeno/cl8k/dsp.h        |   27 +
 drivers/net/wireless/celeno/cl8k/e2p.c        |  771 ++
 drivers/net/wireless/celeno/cl8k/e2p.h        |   25 +
 drivers/net/wireless/celeno/cl8k/eeprom.h     |  283 +
 drivers/net/wireless/celeno/cl8k/ela.c        |  230 +
 drivers/net/wireless/celeno/cl8k/ela.h        |   48 +
 .../net/wireless/celeno/cl8k/enhanced_tim.c   |  173 +
 .../net/wireless/celeno/cl8k/enhanced_tim.h   |   19 +
 drivers/net/wireless/celeno/cl8k/fw.c         | 3167 ++++++
 drivers/net/wireless/celeno/cl8k/fw.h         | 1462 +++
 drivers/net/wireless/celeno/cl8k/hw.c         |  432 +
 drivers/net/wireless/celeno/cl8k/hw.h         |  280 +
 drivers/net/wireless/celeno/cl8k/ipc_shared.h | 1386 +++
 drivers/net/wireless/celeno/cl8k/key.c        |  382 +
 drivers/net/wireless/celeno/cl8k/key.h        |   37 +
 drivers/net/wireless/celeno/cl8k/mac80211.c   | 2392 ++++
 drivers/net/wireless/celeno/cl8k/mac80211.h   |  197 +
 drivers/net/wireless/celeno/cl8k/mac_addr.c   |  418 +
 drivers/net/wireless/celeno/cl8k/mac_addr.h   |   61 +
 drivers/net/wireless/celeno/cl8k/main.c       |  603 ++
 drivers/net/wireless/celeno/cl8k/main.h       |   16 +
 .../net/wireless/celeno/cl8k/maintenance.c    |   81 +
 .../net/wireless/celeno/cl8k/maintenance.h    |   17 +
 .../net/wireless/celeno/cl8k/motion_sense.c   |  244 +
 .../net/wireless/celeno/cl8k/motion_sense.h   |   46 +
 drivers/net/wireless/celeno/cl8k/pci.c        | 2468 +++++
 drivers/net/wireless/celeno/cl8k/pci.h        |  194 +
 drivers/net/wireless/celeno/cl8k/phy.c        | 9648 +++++++++++++++++
 drivers/net/wireless/celeno/cl8k/phy.h        | 3680 +++++++
 drivers/net/wireless/celeno/cl8k/platform.c   |  392 +
 drivers/net/wireless/celeno/cl8k/platform.h   |  196 +
 drivers/net/wireless/celeno/cl8k/power.c      | 1123 ++
 drivers/net/wireless/celeno/cl8k/power.h      |   90 +
 drivers/net/wireless/celeno/cl8k/radio.c      | 1113 ++
 drivers/net/wireless/celeno/cl8k/radio.h      |  130 +
 drivers/net/wireless/celeno/cl8k/rates.c      | 1570 +++
 drivers/net/wireless/celeno/cl8k/rates.h      |  154 +
 drivers/net/wireless/celeno/cl8k/recovery.c   |  280 +
 drivers/net/wireless/celeno/cl8k/recovery.h   |   39 +
 .../net/wireless/celeno/cl8k/reg/reg_access.h |  199 +
 .../net/wireless/celeno/cl8k/reg/reg_defs.h   | 5494 ++++++++++
 drivers/net/wireless/celeno/cl8k/regdom.c     |  301 +
 drivers/net/wireless/celeno/cl8k/regdom.h     |   11 +
 drivers/net/wireless/celeno/cl8k/rfic.c       |  232 +
 drivers/net/wireless/celeno/cl8k/rfic.h       |   29 +
 drivers/net/wireless/celeno/cl8k/rx.c         | 1845 ++++
 drivers/net/wireless/celeno/cl8k/rx.h         |  505 +
 drivers/net/wireless/celeno/cl8k/scan.c       |  392 +
 drivers/net/wireless/celeno/cl8k/scan.h       |   53 +
 drivers/net/wireless/celeno/cl8k/sounding.c   | 1121 ++
 drivers/net/wireless/celeno/cl8k/sounding.h   |  151 +
 drivers/net/wireless/celeno/cl8k/sta.c        |  507 +
 drivers/net/wireless/celeno/cl8k/sta.h        |   99 +
 drivers/net/wireless/celeno/cl8k/stats.c      |  438 +
 drivers/net/wireless/celeno/cl8k/stats.h      |  108 +
 drivers/net/wireless/celeno/cl8k/tcv.c        | 1259 +++
 drivers/net/wireless/celeno/cl8k/tcv.h        |  283 +
 .../net/wireless/celeno/cl8k/temperature.c    |  634 ++
 .../net/wireless/celeno/cl8k/temperature.h    |   71 +
 drivers/net/wireless/celeno/cl8k/traffic.c    |  254 +
 drivers/net/wireless/celeno/cl8k/traffic.h    |   77 +
 drivers/net/wireless/celeno/cl8k/tx.c         | 3397 ++++++
 drivers/net/wireless/celeno/cl8k/tx.h         |  467 +
 drivers/net/wireless/celeno/cl8k/utils.c      |  642 ++
 drivers/net/wireless/celeno/cl8k/utils.h      |  185 +
 drivers/net/wireless/celeno/cl8k/version.c    |  147 +
 drivers/net/wireless/celeno/cl8k/version.h    |   23 +
 drivers/net/wireless/celeno/cl8k/vif.c        |  162 +
 drivers/net/wireless/celeno/cl8k/vif.h        |   81 +
 drivers/net/wireless/celeno/cl8k/vns.c        |  354 +
 drivers/net/wireless/celeno/cl8k/vns.h        |   65 +
 drivers/net/wireless/celeno/cl8k/wrs.c        | 3323 ++++++
 drivers/net/wireless/celeno/cl8k/wrs.h        |  565 +
 97 files changed, 66548 insertions(+)
 create mode 100755 drivers/net/wireless/celeno/Kconfig
 create mode 100755 drivers/net/wireless/celeno/Makefile
 create mode 100644 drivers/net/wireless/celeno/cl8k/Kconfig
 create mode 100644 drivers/net/wireless/celeno/cl8k/Makefile
 create mode 100644 drivers/net/wireless/celeno/cl8k/ampdu.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/ampdu.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/bf.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/bf.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/calib.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/calib.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/channel.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/channel.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/chip.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/chip.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/config.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/config.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/debug.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/debug.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/def.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/dfs.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/dfs.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/dsp.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/dsp.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/e2p.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/e2p.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/eeprom.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/ela.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/ela.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/enhanced_tim.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/enhanced_tim.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/fw.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/fw.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/hw.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/hw.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/ipc_shared.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/key.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/key.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/mac80211.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/mac80211.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/mac_addr.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/mac_addr.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/main.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/main.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/maintenance.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/maintenance.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/motion_sense.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/motion_sense.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/pci.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/pci.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/phy.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/phy.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/platform.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/platform.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/power.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/power.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/radio.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/radio.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/rates.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/rates.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/recovery.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/recovery.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/reg/reg_access.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/reg/reg_defs.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/regdom.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/regdom.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/rfic.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/rfic.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/rx.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/rx.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/scan.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/scan.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/sounding.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/sounding.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/sta.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/sta.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/stats.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/stats.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/tcv.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/tcv.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/temperature.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/temperature.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/traffic.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/traffic.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/tx.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/tx.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/utils.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/utils.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/version.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/version.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/vif.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/vif.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/vns.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/vns.h
 create mode 100644 drivers/net/wireless/celeno/cl8k/wrs.c
 create mode 100644 drivers/net/wireless/celeno/cl8k/wrs.h