[RFC PATCH v1 00/19] rtw88: Add SDIO support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Recently the rtw88 driver has gained locking support for the "slow" bus
types (USB, SDIO) as part of USB support. Thanks to everyone who helped
make this happen!

Based on the USB work (especially the locking part and various
bugfixes) this series adds support for SDIO based cards. It's the
result of a collaboration between Jernej and myself. Neither of us has
access to the rtw88 datasheets. All of our work is based on studying
the RTL8822BS and RTL8822CS vendor drivers and trial and error.

Jernej and myself have tested this with RTL8822BS and RTL8822CS cards.
Other users have confirmed that RTL8821CS support is working as well.
RTL8723DS may also work (we tried our best to handle rtw_chip_wcpu_11n
where needed) but has not been tested at this point.

Jernej's results with a RTL8822BS:
- Main functionality works
- Had a case where no traffic got across the link until he issued a
  scan

My results with a RTL8822CS:
- 2.4GHz and 5GHz bands are both working
- TX throughput on a 5GHz network is between 50 Mbit/s and 90 Mbit/s
- RX throughput on a 5GHz network is at 19 Mbit/s
- Sometimes there are frequent reconnects (once every 1-5 minutes)
  after the link has been up for a long time (multiple hours). Today
  I was unable to reproduce this though (I only had reconnect in 8
  hours).

Why is this an RFC?
- It needs a through review especially by the rtw88 maintainers
- It's not clear to me how the "mmc: sdio" patch will be merged (will
  Ulf take this or can we merge it thorugh the rtw88/linux wireless
  driver tree?)
- Any comments / debugging hints on the reconnect / no traffic issues
  (see above) are welcome
- My understanding is that there's a discussion about the rtw88 Kconfig
  symbols. We're adding four new ones within this series. It's not
  clear to me what the conclusion is on this topic though.
- As with most patches: testing is very welcome. If things are working
  fine then a Tested-by is appreciated (with some details about the
  card, throughput, ...). If something doesn't work for you: please
  still report back so we can investigate that problem!



Jernej Skrabec (2):
  rtw88: ps: Increase LEAVE_LPS_TRY_CNT for SDIO based chipsets
  rtw88: Add support for the SDIO based RTL8822BS chipset

Martin Blumenstingl (17):
  rtw88: mac: Use existing interface mask macros in rtw_pwr_seq_parser()
  rtw88: pci: Change type of rtw_hw_queue_mapping() and ac_to_hwq to
    enum
  rtw88: pci: Change queue datatype from u8 to enum rtw_tx_queue_type
  rtw88: Move enum rtw_tx_queue_type mapping code to tx.{c,h}
  mmc: sdio: add Realtek SDIO vendor ID and various wifi device IDs
  rtw88: rtw8821c: Add support for parsing the RTL8821CS (SDIO) efuse
  rtw88: rtw8822b: Add support for parsing the RTL8822BS (SDIO) efuse
  rtw88: rtw8822c: Add support for parsing the RTL8822CS (SDIO) efuse
  rtw88: hci: Add an optional power_switch() callback to rtw_hci_ops
  rtw88: mac: Add support for the SDIO HCI in rtw_pwr_seq_parser()
  rtw88: mac: Add support for the SDIO HCI in the TX/page table setup
  rtw88: sdio: Add HCI implementation for SDIO based chipsets
  rtw88: mac: Add support for SDIO specifics in the power on sequence
  rtw88: main: Add the rpwm_addr and cpwm_addr for SDIO based chipsets
  rtw88: main: Reserve 8 bytes of extra TX headroom for SDIO based cards
  rtw88: Add support for the SDIO based RTL8822CS chipset
  rtw88: Add support for the SDIO based RTL8821CS chipset

 drivers/net/wireless/realtek/rtw88/Kconfig    |   36 +
 drivers/net/wireless/realtek/rtw88/Makefile   |   12 +
 drivers/net/wireless/realtek/rtw88/debug.h    |    1 +
 drivers/net/wireless/realtek/rtw88/hci.h      |    8 +
 drivers/net/wireless/realtek/rtw88/mac.c      |   62 +-
 drivers/net/wireless/realtek/rtw88/mac.h      |    1 -
 drivers/net/wireless/realtek/rtw88/main.c     |    9 +-
 drivers/net/wireless/realtek/rtw88/pci.c      |   50 +-
 drivers/net/wireless/realtek/rtw88/ps.h       |    2 +-
 drivers/net/wireless/realtek/rtw88/reg.h      |   10 +
 drivers/net/wireless/realtek/rtw88/rtw8821c.c |    9 +
 drivers/net/wireless/realtek/rtw88/rtw8821c.h |    6 +
 .../net/wireless/realtek/rtw88/rtw8821cs.c    |   34 +
 drivers/net/wireless/realtek/rtw88/rtw8822b.c |   10 +
 drivers/net/wireless/realtek/rtw88/rtw8822b.h |    6 +
 .../net/wireless/realtek/rtw88/rtw8822bs.c    |   34 +
 drivers/net/wireless/realtek/rtw88/rtw8822c.c |    9 +
 drivers/net/wireless/realtek/rtw88/rtw8822c.h |    6 +
 .../net/wireless/realtek/rtw88/rtw8822cs.c    |   34 +
 drivers/net/wireless/realtek/rtw88/sdio.c     | 1242 +++++++++++++++++
 drivers/net/wireless/realtek/rtw88/sdio.h     |  175 +++
 drivers/net/wireless/realtek/rtw88/tx.c       |   41 +
 drivers/net/wireless/realtek/rtw88/tx.h       |    3 +
 include/linux/mmc/sdio_ids.h                  |    9 +
 24 files changed, 1763 insertions(+), 46 deletions(-)
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8821cs.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822bs.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/rtw8822cs.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/sdio.c
 create mode 100644 drivers/net/wireless/realtek/rtw88/sdio.h

-- 
2.39.0




[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux