mbox series

[v2,0/7] wifi: rtw89: support WoWLAN

Message ID 20221027052707.14605-1-pkshih@realtek.com
Headers show
Series wifi: rtw89: support WoWLAN | expand

Message

Ping-Ke Shih Oct. 27, 2022, 5:27 a.m. UTC
WoWLAN (Wake on WLAN) is a feature which allows devices to be woken up from
suspend state by WLAN events. When specific events are received, WiFi chip
raises a physical pin or sends an in-band message to wake up system. For a
PCIE WiFi device, it sends a PCIE PME event to host.

Before entering suspend, driver needs to stop TX/RX DMA, swap to WoWLAN
firmware due to firmware size is limited, and then restart HCI properly for
WoWLAN mode. To avoid track work to ask entering LPS while process of
going to suspend, we forbid the work during suspend/resume period.

In additional to main flow mentioned above, patch 1/7 is to prepare RF
parameters to help WoWLAN firmware configure RF. Patch 2/7 is to refine
download_firmware(), because swapping WoWLAN firmware can reuse the flow.
Patch 4/7 is to drop TX packets to ensure TX queue empty before entering
suspend.

The main patch is 6/7, it adds main flow of WoWLAN, and the last patch is
to add WoWLAN pattern match. Since WoWLAN of 8852B is still under
development, we don't enable it at this patchset, and will support it soon.

v2:
  - patch "wifi: rtw89: add drop tx packet function"
    add RTW89_PKT_DROP_SEL_BAND_ONCE case to avoid unhandled message.
  - patch "wifi: rtw89: add WoWLAN function support"
    use int instead of u8 as type of 'ret' for read_poll_timeout_atomic()
    in rtw89_wow_check_fw_status().

Chih-Kang Chang (4):
  wifi: rtw89: collect and send RF parameters to firmware for WoWLAN
  wifi: rtw89: move enable_cpu/disable_cpu into fw_download
  wifi: rtw89: add function to adjust and restore PLE quota
  wifi: rtw89: add drop tx packet function

Chin-Yen Lee (3):
  wifi: rtw89: add related H2C for WoWLAN mode
  wifi: rtw89: add WoWLAN function support
  wifi: rtw89: add WoWLAN pattern match support

 drivers/net/wireless/realtek/rtw89/Makefile   |   2 +
 drivers/net/wireless/realtek/rtw89/core.c     |  10 +-
 drivers/net/wireless/realtek/rtw89/core.h     | 129 ++-
 drivers/net/wireless/realtek/rtw89/debug.h    |   1 +
 drivers/net/wireless/realtek/rtw89/fw.c       | 295 ++++++
 drivers/net/wireless/realtek/rtw89/fw.h       | 249 ++++-
 drivers/net/wireless/realtek/rtw89/mac.c      | 135 ++-
 drivers/net/wireless/realtek/rtw89/mac.h      |  31 +
 drivers/net/wireless/realtek/rtw89/mac80211.c |  55 ++
 drivers/net/wireless/realtek/rtw89/pci.c      |  23 +-
 drivers/net/wireless/realtek/rtw89/phy.c      |  31 +-
 drivers/net/wireless/realtek/rtw89/phy.h      |   2 +-
 drivers/net/wireless/realtek/rtw89/ps.c       |   2 +-
 drivers/net/wireless/realtek/rtw89/ps.h       |   1 +
 drivers/net/wireless/realtek/rtw89/reg.h      |  21 +
 drivers/net/wireless/realtek/rtw89/rtw8852a.c |  18 +
 drivers/net/wireless/realtek/rtw89/rtw8852c.c |  14 +
 drivers/net/wireless/realtek/rtw89/util.h     |  11 +
 drivers/net/wireless/realtek/rtw89/wow.c      | 859 ++++++++++++++++++
 drivers/net/wireless/realtek/rtw89/wow.h      |  21 +
 20 files changed, 1890 insertions(+), 20 deletions(-)
 create mode 100644 drivers/net/wireless/realtek/rtw89/wow.c
 create mode 100644 drivers/net/wireless/realtek/rtw89/wow.h