Hello, I purchased a SparkLan WPEQ-261ACN (+ BT) half mini-PCIe wireless module, which is based on QCA6174A-5, and a preliminary test with iperf in UDP mode shows that a lot of packets are lost.
Linux kernel version is v4.9 (even if I will not be able to upgrade it in the short term, any information about missing features/known issues with “older” kernel version like the one I used will be much appreciated ^_^). Firstly, before investigating this packet loss, I would like to check that I’m using the right firmware files. Based on kernel traces displayed by ath10k driver: ath10k_pci 0000:01:00.0: enabling device (0000 -> 0002) ath10k_pci 0000:01:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0 ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/pre-cal-pci-0000:01:00.0.bin failed with error -2 ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/cal-pci-0000:01:00.0.bin failed with error -2 ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA6174/hw3.0/firmware-5.bin failed with error -2 ath10k_pci 0000:01:00.0: could not fetch firmware file 'ath10k/QCA6174/hw3.0/firmware-5.bin': -2 ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA6174/hw3.0/firmware-4.bin failed with error -2 ath10k_pci 0000:01:00.0: could not fetch firmware file 'ath10k/QCA6174/hw3.0/firmware-4.bin': -2 ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA6174/hw3.0/firmware-3.bin failed with error -2 ath10k_pci 0000:01:00.0: could not fetch firmware file 'ath10k/QCA6174/hw3.0/firmware-3.bin': -2 ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA6174/hw3.0/firmware-2.bin failed with error -2 ath10k_pci 0000:01:00.0: could not fetch firmware file 'ath10k/QCA6174/hw3.0/firmware-2.bin': -2 ath10k_pci 0000:01:00.0: could not fetch firmware files (-2) ath10k_pci 0000:01:00.0: could not probe fw (-2) We can notice that driver is looking for a firmware file with API5. Unfortunately, at this time, API5 firmware is not available anymore in: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/log/ath10k/QCA6174/hw3.0 but there is API6 instead. I also looked at kvalo github and noticed in log message that firmware-5.bin was renamed into firmware-6.bin: QCA6174 hw3.0: change 4.4 branch to use FW API 6 https://github.com/kvalo/ath10k-firmware/commit/da1564dafe1c8175faf694482d1649f56229ae96 So I downloaded the latest binaries available, which are: https://raw.githubusercontent.com/kvalo/ath10k-firmware/35d8642f452827b955470de4ac997ffe906a6f17/QCA6174/hw3.0/4.4.1/firmware-6.bin_WLAN.RM.4.4.1-00079-QCARMSWPZ-1 https://raw.githubusercontent.com/kvalo/ath10k-firmware/35d8642f452827b955470de4ac997ffe906a6f17/QCA6174/hw3.0/board-2.bin https://raw.githubusercontent.com/kvalo/ath10k-firmware/35d8642f452827b955470de4ac997ffe906a6f17/QCA6174/hw3.0/board.bin and installed them into expected folder in /lib/firmware *AND* created a symbolic link (/!\ downgrading firmware API): firmware-5.bin pointing to firmware-6.bin_WLAN.RM.4.4.1-00079-QCARMSWPZ-1 Moreover, as described in previous commit "da1564dafe1", I recompiled my driver with this patch: ath10k: ignore configuring the incorrect board_id https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d2e202c06ca42d353d95df12437740921a6d05b5 And at this point, I was able to use my device: mobdprobe ath10k_pci ath10k_pci 0000:01:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0 ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/pre-cal-pci-0000:01:00.0.bin failed with error -2 ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/cal-pci-0000:01:00.0.bin failed with error -2 ath10k_pci 0000:01:00.0: qca6174 hw3.2 target 0x05030000 chip_id 0x00340aff sub 1dac:0261 ath10k_pci 0000:01:00.0: kconfig debug 1 debugfs 1 tracing 0 dfs 1 testmode 1 ath10k_pci 0000:01:00.0: firmware ver WLAN.RM.4.4.1-00079-QCARMSWPZ-1 api 5 features wowlan,ignore-otp crc32 fd869beb ath10k_pci 0000:01:00.0: board id is not exist in otp, ignore it ath10k_pci 0000:01:00.0: board_file api 2 bmi_id N/A crc32 20d869c3 ath10k_pci 0000:01:00.0: Unknown eventid: 118809 ath10k_pci 0000:01:00.0: Unknown eventid: 90118 ath10k_pci 0000:01:00.0: htt-ver 3.47 wmi-op 4 htt-op 3 cal otp max-sta 32 raw 0 hwcrypto 1 Now I'm able to scan SSID, associate to my AP, ping, use iperf, etc. But iperf shows that a majority of packets are lost. :( So my questions are : Q1) is it correct to "downgrade" firmware API in this case (symbolic link firmware-5.bin) ? I also tried to use firmware-5.bin before its renaming into API6, with board files available at that time, (and still with patch "d2e202c06ca" included), but it seems that firmware was not able to boot: ath10k_pci 0000:01:00.0: failed to ping firmware: -110 ath10k_pci 0000:01:00.0: failed to reset rx filter: -110 ath10k_pci 0000:01:00.0: could not init core (-110) ath10k_pci 0000:01:00.0: could not probe fw (-110) Q2) is it possible to use recent board files with an "older" firmware file ? Q3) how to know which firmware files to use for my specific device ? After searching in this mailing list and googling about QCA6174, and as far as I understand (which may be limited in this matter !): *) firmware file is supplied by Qualcomm Atheros, and does not depend on module manufacturer *) board files are not generic and depend on module manufacturer (so not Qualcomm) *) board-2.bin file contains data for multiple wifi modules *) board.bin file contains data for a single wifi module (and probably not the one I use) *) calibration files are optional but mandatory for good performance/throughput Board files are extracted from EEPROM data files, that can be found in Windows driver for example. Q4) do I have to extract EEPROM from Windows driver or current board-2.bin is already compatible ? Q5) how to get calibration files from Windows driver ? Thanks for your help, Contrib _______________________________________________ ath10k mailing list [email protected] http://lists.infradead.org/mailman/listinfo/ath10k
