mbox series

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

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

Message

Ping-Ke Shih June 23, 2022, 3:46 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.

We add a module parameter rtw89_use_chanctx to enable channel context,
but by default set rtw89_use_chanctx=0 to pevent to break users' setup.
When users want channel context to support concurrency, set module
parameter rtw89_use_chanctx=1. If a chip declare it can support channel
context and proper firmware with hardware scan is adopted, it can run with
channel context. Otherwise, it could be failed to probe, users should
set rtw89_use_chanctx=0 or upgrade firmware.

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.

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):
  rtw89: rewrite decision on channel by entity state
  rtw89: introduce rtw89_chan for channel stuffs
  rtw89: re-arrange channel related stuffs under HAL
  rtw89: create rtw89_chan centrally to avoid breakage
  rtw89: txpwr: concentrate channel related control to top
  rtw89: rfk: concentrate parameter control while set_channel()
  rtw89: concentrate parameter control for setting channel callback
  rtw89: concentrate chandef setting to stack callback
  rtw89: initialize entity and configure default chandef
  rtw89: introduce entity mode and its recalculated prototype
  rtw89: add skeleton of mac80211 chanctx ops support
  rtw89: support mac80211 chanctx ops by chip
  rtw89: ensure chanctx ops are used with HW scan

 drivers/net/wireless/realtek/rtw89/Makefile   |   1 +
 drivers/net/wireless/realtek/rtw89/chan.c     | 237 ++++++++++++++++
 drivers/net/wireless/realtek/rtw89/chan.h     |  66 +++++
 drivers/net/wireless/realtek/rtw89/coex.c     |  11 +-
 drivers/net/wireless/realtek/rtw89/coex.h     |   4 +-
 drivers/net/wireless/realtek/rtw89/core.c     | 260 +++++++++--------
 drivers/net/wireless/realtek/rtw89/core.h     | 149 +++++++---
 drivers/net/wireless/realtek/rtw89/debug.c    |   3 +-
 drivers/net/wireless/realtek/rtw89/fw.c       |  84 ++++--
 drivers/net/wireless/realtek/rtw89/mac.c      |  14 +-
 drivers/net/wireless/realtek/rtw89/mac80211.c |  77 ++++-
 drivers/net/wireless/realtek/rtw89/pci.c      |  11 +-
 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 +
 22 files changed, 1171 insertions(+), 526 deletions(-)
 create mode 100644 drivers/net/wireless/realtek/rtw89/chan.c
 create mode 100644 drivers/net/wireless/realtek/rtw89/chan.h