[PATCH 00/11] SDIO support for ath10k

Alagu Sankar alagusankar at silex-india.com
Thu Oct 5 10:24:26 PDT 2017

Hi Gary,

On 05-10-2017 20:42, Gary Bisson wrote:
> Hi Alagu,
> First of all, thank you for sharing your patches, this will be a very
> nice improvement to have SDIO QCA9377 working with ath10k.
> I've tried your series with Nitrogen7 [1] platform which is supported in
> mainline already. It uses BD-SDMAC [2] which uses the same module as the
> Below are some questions/remarks I have after the testing.
> On Sat, Sep 30, 2017 at 11:07:37PM +0530, silexcommon at gmail.com wrote:
>> From: Alagu Sankar <alagusankar at silex-india.com>
>> This patchset, generated against master-pending branch, enables a fully
>> functional SDIO interface driver for ath10k.  Patches have been verified on
>> QCA9377-3 WB396 and Silex's SX-SDCAC reference cards with Station, Access Point
>> and P2P modes.
>> The driver is verified with the firmware WLAN.TF.1.1.1-00061-QCATFSWPZ-1
> Quick question on the firmware, is it the one from Kalle's repository?[3]
> If so, where does this firmware comes from? Is 00061 the firmware
> version? So far I've only seen up to v0.0.0.60, see qcacld-2.0 output:
> Host SW:, FW:, HW:QCA9377_REV1_1
Yes, it is from 
I have also used custom firmware from QCA/Silex as used in qcacld-2.0 
driver without any issue. You need to use the firmware merger tool from 
https://github.com/erstrom/linux-ath/wiki/Firmware to combine the 
qwlan30.bin and otp30.bin to generate the firmware-sdio.bin.
>> with the board data from respective SDIO card vendors.
> About the board-sdio.bin, is it just a copy of your bdwlan30.bin?
Yes board-sdio.bin is a copy of bdwlan30.bin
>> Receive performance
>> matches the QCA reference driver when used with SDIO3.0 enabled platforms.
>> iperf tests indicate a downlink UDP of 275Mbit/s and TCP of 150Mbit/s
> Nice performances. Unfortunately I don't get better than 30Mbits/s in TX
> and 50Mbits/s in RX:
> # iperf -c
> ------------------------------------------------------------
> Client connecting to, TCP port 5001
> TCP window size: 43.8 KByte (default)
> ------------------------------------------------------------
> [  3] local port 41354 connected with port
> 5001
> [ ID] Interval       Transfer     Bandwidth
> [  3]  0.0-10.0 sec  34.9 MBytes  29.2 Mbits/sec
> # iperf -s
> ------------------------------------------------------------
> Server listening on TCP port 5001
> TCP window size: 85.3 KByte (default)
> ------------------------------------------------------------
> [  4] local port 5001 connected with port
> 50646
> [ ID] Interval       Transfer     Bandwidth
> [  4]  0.0-10.0 sec  63.1 MBytes  52.7 Mbits/sec
> Do you have any idea why? Note that qcacld-2.0 driver on that same
> platform (same OS) gives the performances you advertize (150Mbits/s).
For some reason, if I use the imx_v6_v7_defconfig as is, performance is 
very poor. In fact, the firmware download itself will take about 6 
seconds. This can also be seen when you up/down the wlan0 interface. For 
the i.MX6 SoloX board, I used the configuration of 4.1.15 as provided by 
the BSP from NXP/Freescale.  This improved the performance quite a bit. 
I haven't had a chance to spend time on this to figure out the 
difference and reason. Another difference is that the default device 
tree for SoloX did not have the correct settings to support SDIO3.x.  
Had to modify them, but did not include the device tree patches here as 
it is not meant for this group.
>> This patchset differs from the previous high latency patches, specific to SDIO.
>> HI_ACS_FLAGS_SDIO_REDUCE_TX_COMPL_SET is enabled for HI_ACS. This instructs the
>> firmware to use HTT_T2H_MSG_TYPE_TX_COMPL_IND for outgoing packets. Without
>> this flag, the management frames are not sent out by the firmware. Possibility
>> of management frames being sent via WMI and data frames through the reduced Tx
>> completion needs to be probed further.
>> Further improvements can be done on the transmit path by implementing packet
>> bundle. Scatter Gather is another area of improvement for both Transmit and
>> Receive, but may not work on all platforms
>> Known issues: Surprise removal of the card, when the device is in connected
>> state, delays sdio function remove due to delayed WMI command failures.
>> Existing ath10k framework can not differentiate between a kernel module
>> removae and the surprise removal of teh card.
> Here are some questions:
> - Is it normal to see a warning about board-2.bin, shouldn't it look for
>    board-sdio.bin only?
> [   14.696704] ath10k_sdio mmc1:0001:1: Direct firmware load for
> ath10k/QCA9377/hw1.0/board-2.bin failed with error -2
This was only noticed in the latest update. Like the different firmware 
versions, the driver also looks for the board-2.bin now. I have only 
tested with the board-sdio.bin
> - Did you have pre-cal and/or cal binaries for your testing?
> [   14.067159] ath10k_sdio mmc1:0001:1: Direct firmware load for
> ath10k/pre-cal-sdio-mmc1:0001:1.bin failed with error -2
> [   14.149257] ath10k_sdio mmc1:0001:1: Direct firmware load for
> ath10k/cal-sdio-mmc1:0001:1.bin failed with error -2
No. I did not use the pre-cal and cal binaries.
> Also noticed that the "tx bitrate" output of 'iw link' is wrong in my
> case:
> # iw wlan0 link
> Connected to 00:00:00:00:00:b0 (on wlan0)
> 	freq: 5180
> 	RX: 72072365 bytes (67934 packets)
> 	TX: 79084128 bytes (73649 packets)
> 	signal: -35 dBm
> 	tx bitrate: 6.0 MBit/s
> 	bss flags:	short-slot-time
> 	dtim period:	2
> 	beacon int:	100
> When connecting using qcacld driver it shows 433MBit/s as expected. Is
> it working properly in your case?
Tx rate is not updated properly.  I will include it in the list of known 
> As a FYI, I've built Erik's tree[4] for this testing, should I use
> another tree instead?
I use the Kalle's ath10k tree, but when I last looked, they were pretty 
much the same, so it should not be a problem.
> Let me know your thoughts.
> Regards,
> Gary
> [1] https://boundarydevices.com/product/nitrogen7/
> [2] https://boundarydevices.com/product/bd_sdmac_wifi/
> [3] https://github.com/kvalo/ath10k-firmware/tree/master/QCA9377/hw1.0/untested
> [4] https://github.com/erstrom/linux-ath

More information about the ath10k mailing list