[RFC PATCH 0/1] Adding support for QCA9379 hw1.0 SDIO
Felix Kaechele
felix at kaechele.ca
Wed Feb 28 19:26:59 PST 2024
I'm looking to add support for the QCA9379 chipset to ath10k, specifically for
the SDIO bus version.
The vendor driver treats QCA9379 chips the same as QCA9377 chips:
https://git.codelinaro.org/clo/external-wlan/qcacld-2.0/-/commit/6258d7865b4d336daca097f42ca6f963e96e6f34
Device used for testing: Lenovo ThinkSmart View (CD-18781Y) containing a
LITE-ON WCBN3510A (QCA9379-3) SDIO 3.0 module.
The firmware and boardfile used for testing was pulled from the Android build
running on the device I am using.
The version string is taken from the board's /modem/verinfo/ver_info.txt and
should correspond to the BSP the vendor originally used. I cannot fully verify
if the firmware binaries do in fact match files of that version string from the
BSP though.
Maybe someone from QCA can provide the latest version of a WLAN.NPL firmware to
ath10k-firmware, as my understanding is that firmwares from unofficial sources
are not accepted into ath10k-firmware. If that's a possibility, official
Bluetooth firmware binaries would also be appreciated.
Probing the card is not entirely error free, but it does work relatively
reliably nonetheless.
This could have to do with the MSM8953/APQ8053 SoC possibly still having
a few bugs in the mainline kernel and/or my device tree for the device
not being entirely correct or complete yet.
[ 0.488529] mmc1: SDHCI controller on 7864900.mmc [7864900.mmc] using ADMA 64-bit
[ 0.539510] mmc1: queuing unknown CIS tuple 0x01 [d9 01 ff] (3 bytes)
[ 0.550181] mmc1: queuing unknown CIS tuple 0x1a [01 01 00 02 07] (5 bytes)
[ 0.554923] mmc1: queuing unknown CIS tuple 0x1b [c1 41 30 30 ff ff 32 00] (8 bytes)
[ 0.555726] mmc1: queuing unknown CIS tuple 0x14 [] (0 bytes)
...
[ 0.578882] mmc1: new ultra high speed SDR104 SDIO card at address 0001
...
[ 12.054476] ath10k_sdio mmc1:0001:1: qca9379 hw1.0 sdio target 0x05040000 chip_id 0x00000000 sub 0000:0000
[ 12.054491] ath10k_sdio mmc1:0001:1: kconfig debug 0 debugfs 1 tracing 0 dfs 0 testmode 0
[ 12.054714] ath10k_sdio mmc1:0001:1: firmware ver WLAN.NPL.1.6-00163-QCANPLSWPZ-1 api 5 features ignore-otp crc32 bf84ab04
...
[ 12.210930] ath10k_sdio mmc1:0001:1: board_file api 1 bmi_id N/A crc32 05c45515
...
[ 13.928030] ath10k_sdio mmc1:0001:1: failed to read from address 0x874: -110
[ 13.928061] ath10k_sdio mmc1:0001:1: failed to read from mbox window data address: -110
[ 13.928069] ath10k_sdio mmc1:0001:1: failed to read calibration data: -110
[ 13.928387] ath10k_sdio mmc1:0001:1: failed to read from address 0x868: -110
[ 13.928401] ath10k_sdio mmc1:0001:1: failed to read fifo/chip control register: -110
[ 13.928601] ath10k_sdio mmc1:0001:1: failed to write to address 0x1c7ec: -110
[ 13.928613] ath10k_sdio mmc1:0001:1: failed to write skb to 0x1c7ec asynchronously: -110
[ 13.928861] ath10k_sdio mmc1:0001:1: failed to write to address 0x1c7e8: -110
[ 13.928873] ath10k_sdio mmc1:0001:1: failed to write skb to 0x1c7e8 asynchronously: -110
[ 13.929121] ath10k_sdio mmc1:0001:1: failed to read from address 0x868: -110
[ 15.031702] mmc1: queuing unknown CIS tuple 0x01 [d9 01 ff] (3 bytes)
[ 15.040231] mmc1: queuing unknown CIS tuple 0x1a [01 01 00 02 07] (5 bytes)
[ 15.043409] mmc1: queuing unknown CIS tuple 0x1b [c1 41 30 30 ff ff 32 00] (8 bytes)
[ 15.044337] mmc1: queuing unknown CIS tuple 0x14 [] (0 bytes)
[ 15.053241] ath: EEPROM regdomain: 0x0
[ 15.053265] ath: EEPROM indicates default country code should be used
[ 15.053268] ath: doing EEPROM country->regdmn map search
[ 15.053272] ath: country maps to regdmn code: 0x3a
[ 15.053275] ath: Country alpha2 being used: US
[ 15.053278] ath: Regpair used: 0x3a
[ 16.463580] zram: Added device: zram0
[ 18.013824] mmc1: queuing unknown CIS tuple 0x01 [d9 01 ff] (3 bytes)
[ 18.024488] mmc1: queuing unknown CIS tuple 0x1a [01 01 00 02 07] (5 bytes)
[ 18.029188] mmc1: queuing unknown CIS tuple 0x1b [c1 41 30 30 ff ff 32 00] (8 bytes)
[ 18.029983] mmc1: queuing unknown CIS tuple 0x14 [] (0 bytes)
iperf performance is looking decent:
TX speeds:
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 206 MBytes 173 Mbits/sec 0 sender
[ 5] 0.00-10.02 sec 204 MBytes 171 Mbits/sec receiver
RX speeds:
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 227 MBytes 190 Mbits/sec 190 sender
[ 5] 0.00-10.00 sec 224 MBytes 188 Mbits/sec receiver
However, the card does not roam cleanly:
[ 815.580791] ath10k_warn: 36 callbacks suppressed
[ 815.580819] ath10k_sdio mmc1:0001:1: failed to install key for vdev 0 peer 76:ac:b9:xx:xx:xx: -110
[ 815.580852] wlan0: failed to set key (1, ff:ff:ff:ff:ff:ff) to hardware (-110)
[ 815.582408] wlan0: deauthenticating from 76:ac:b9:xx:xx:xx by local choice (Reason: 1=UNSPECIFIED)
[ 815.666295] ath10k_sdio mmc1:0001:1: Got RX ind from invalid peer: 50
[ 815.666333] ath10k_sdio mmc1:0001:1: Got RX ind from invalid peer: 50
Possibly a firmware issue. I don't know.
I'd be grateful for any comments regarding this patch.
Regards,
Felix
Felix Kaechele (1):
wifi: ath10k: add support for QCA9379 hw1.0 SDIO
drivers/net/wireless/ath/ath10k/core.c | 35 +++++++++++++++++++++
drivers/net/wireless/ath/ath10k/hw.h | 11 +++++++
drivers/net/wireless/ath/ath10k/pci.c | 2 ++
drivers/net/wireless/ath/ath10k/sdio.c | 5 ++-
drivers/net/wireless/ath/ath10k/targaddrs.h | 3 ++
include/linux/mmc/sdio_ids.h | 1 +
6 files changed, 56 insertions(+), 1 deletion(-)
--
2.44.0
More information about the ath10k
mailing list