mbox series

[v3,00/13] rtw89: support channel context

Message ID 20220809104952.61355-1-pkshih@realtek.com
Headers show
Series rtw89: support channel context | expand

Message

Ping-Ke Shih Aug. 9, 2022, 10:49 a.m. UTC
In order to support multiple channels, we prepare this patchset to have
initial skeleton of channel context, and only SCC (single channel
concurrence) is supported for now.

The channel context needs some features, like hardware scan, but not all
chips can support these features, so this implement can still support
chips without channel context. The chip_info defines a support_chanctx_num
field to discriminate a chip can support channel context or not, and we
use this as clue to hook channel context ops of mac80211.

To determine if it can use channel context, load firmware header and parse
firmware when probing before ieee80211_register_hw(). If chip defines it
support channel context but firmware doesn't support hw_scan, it falls
back to not use channel context. That means end users don't need
additional update to use this driver after this patchset.

When we concentrate stuffs of channel, some patches with a lot of changes
are used to adjust code for new struct. But, not really change logic.

v3:
 - to have good user experience after applying this patchset. Load firmware
   header and parse firmware features to determine if we can use channel
   context. If old firmware is adopted, it still can run well as original.

v2:
 - patch 11/13: add link_id argument because ieee80211 ops prototype are
   changed.
 - patch 13/13: change to use module parameter rtw89_use_chanctx to prevent
   breaking users' setup by default, and users can try to use channel
   context after they upgrade firmware.

Zong-Zhe Yang (13):
  wifi: rtw89: rewrite decision on channel by entity state
  wifi: rtw89: introduce rtw89_chan for channel stuffs
  wifi: rtw89: re-arrange channel related stuffs under HAL
  wifi: rtw89: create rtw89_chan centrally to avoid breakage
  wifi: rtw89: txpwr: concentrate channel related control to top
  wifi: rtw89: rfk: concentrate parameter control while set_channel()
  wifi: rtw89: concentrate parameter control for setting channel
    callback
  wifi: rtw89: concentrate chandef setting to stack callback
  wifi: rtw89: initialize entity and configure default chandef
  wifi: rtw89: introduce entity mode and its recalculated prototype
  wifi: rtw89: add skeleton of mac80211 chanctx ops support
  wifi: rtw89: declare support for mac80211 chanctx ops by chip
  wifi: rtw89: early recognize FW feature to decide if chanctx

 drivers/net/wireless/realtek/rtw89/Makefile   |   1 +
 drivers/net/wireless/realtek/rtw89/chan.c     | 235 ++++++++++++++++
 drivers/net/wireless/realtek/rtw89/chan.h     |  64 +++++
 drivers/net/wireless/realtek/rtw89/coex.c     |  11 +-
 drivers/net/wireless/realtek/rtw89/coex.h     |   4 +-
 drivers/net/wireless/realtek/rtw89/core.c     | 263 +++++++++--------
 drivers/net/wireless/realtek/rtw89/core.h     | 157 ++++++++---
 drivers/net/wireless/realtek/rtw89/debug.c    |   3 +-
 drivers/net/wireless/realtek/rtw89/fw.c       |  72 ++++-
 drivers/net/wireless/realtek/rtw89/fw.h       |  12 +-
 drivers/net/wireless/realtek/rtw89/mac.c      |  14 +-
 drivers/net/wireless/realtek/rtw89/mac80211.c |  77 ++++-
 drivers/net/wireless/realtek/rtw89/pci.c      |  20 +-
 drivers/net/wireless/realtek/rtw89/phy.c      | 266 +++++++++++-------
 drivers/net/wireless/realtek/rtw89/phy.h      |   8 +-
 drivers/net/wireless/realtek/rtw89/regd.c     |   2 +-
 drivers/net/wireless/realtek/rtw89/rtw8852a.c | 111 +++++---
 .../net/wireless/realtek/rtw89/rtw8852a_rfk.c |  77 +++--
 drivers/net/wireless/realtek/rtw89/rtw8852c.c | 231 ++++++++-------
 .../net/wireless/realtek/rtw89/rtw8852c_rfk.c |  73 +++--
 .../net/wireless/realtek/rtw89/rtw8852c_rfk.h |   2 +-
 drivers/net/wireless/realtek/rtw89/sar.c      |   8 +-
 drivers/net/wireless/realtek/rtw89/ser.c      |   2 +
 23 files changed, 1185 insertions(+), 528 deletions(-)
 create mode 100644 drivers/net/wireless/realtek/rtw89/chan.c
 create mode 100644 drivers/net/wireless/realtek/rtw89/chan.h