All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jay Foster <jayf0ster@roadrunner.com>
To: Kalle Valo <kvalo@codeaurora.org>
Cc: jayfoster@ieee.org, ath10k@lists.infradead.org
Subject: Re: Support for QCA9377
Date: Wed, 16 May 2018 13:00:47 -0700	[thread overview]
Message-ID: <cf92e6b8-56db-8d62-55cc-cc0ab8d91e64@roadrunner.com> (raw)
In-Reply-To: <87po1vjw0y.fsf@kamboji.qca.qualcomm.com>

On 5/16/2018 11:27 AM, Kalle Valo wrote:
> + linux-wireless
>
> Jay Foster <jayf0ster@roadrunner.com> writes:
>
>> On 5/15/2018 9:56 PM, Kalle Valo wrote:
>>> Jay Foster <jayf0ster@roadrunner.com> writes:
>>>
>>>> I too have been, off and on, looking for an ath10k driver solution for
>>>> a SparkLAN WUBQ-159ACN USB Wi-Fi adapter, so I have been keeping an
>>>> eye on this mailing list.  I just tried the latest
>>>> ath10k-pending-sdio-usb branch (ath10k-pending-sdio-usb-201804210910
>>>> tag), since I could see that support for the SparkLAN USB 0CF3:9378
>>>> device was just added.  The driver refers to this as the SparkLAN
>>>> WPEQ-160ACN device, but it has the same USB vendor/product ID as my
>>>> WUBQ-159ACN.  They both use the QCA9377 chip.
>>>>
>>>> I got a driver to build with the 4.9 kernel and when it boots, it
>>>> recognizes my Wi-Fi adapter.  Now, I am trying to sort out what to do
>>>> about firmware.  I downloaded the board-2.bin, board.bin,
>>>> firmware-5.bin files from
>>>> https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/ath10k/QCA9377/hw1.0.
>>>> I used the ath10k-fwencoder application from the qca-swiss-army-knife
>>>> tools to also build a firmware file, but I am not clear on what files
>>>> I should be using.  SparkLAN provided, with the qcacld-2.0 wlan
>>>> driver, the following files:
>>>> athsetup.bin, athwlan.bin, cfg.dat, fakeboar.bin, otp.bin, and
>>>> qcom_cfg.ini.  I used the command:
>>>>
>>>> qca-swiss-army-knife/tools/scripts/ath10k/ath10k-fwencoder --create
>>>> --otp ../../../otp.bin --firmware ../../../athwlan.bin
>>>> --set-wmi-op-version=tlv --set-htt-op-version=tlv --set-fw-api=6
>>>> --features=ignore-otp-result
>>>>
>>>> to create my firmware-usb-6.bin and used the fakeboar.bin for my
>>>> board-usb.bin files.  However, when the driver loads, it is looking
>>>> for a file called ath10k/cal-usb-1-1.2.bin.  Where do I get that
>>>> file?
>>> You can ignore that warning. cal-*.bin are optional files containing the
>>> calibration data, in case you don't have the calibration data in OTP.
>>> But my guess is that in your device you have the calibration data in OTP
>>> so you don't need cal-*.bin.
>>>
>>> Hopefully in 4.18 that warning will be away and users won't get confused anymore.
>>>
>>>>     I tried using the athsetup.bin file for this, but I do not
>>>> think that works.  The driver reports:
>>>>
>>>> /lib/firmware/ath10k/QCA9377/hw1.0# usb 1-1.2: qca9377 hw1.1 SparkLAN
>>>> WPEQ-160ACN target 0x05020001 chip_id 0x00000000 sub 0000:0000
>>>> usb 1-1.2: kconfig debug 1 debugfs 0 tracing 0 dfs 0 testmode 1
>>>> usb 1-1.2: firmware ver  api 6 features ignore-otp crc32 e8985f67
>>>> usb 1-1.2: found invalid board magic
>>>> usb 1-1.2: board_file api 1 bmi_id N/A crc32 58a139e9
>>>> usb 1-1.2: invalid hw_params.n_cipher_suites 0
>>>>
>>>> What does invalid board magic mean?
>>> This log means that ath10k first tried to load board-2.bin but it was
>>> corrupted for some reason. Then it found and used board.bin instead.
>> It seems odd that the board-2.bin file I downloaded from
>> https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/ath10k/QCA9377/hw1.0
>> is somehow corrupted.  Does the message mean that the board-2.bin file
>> itself is bad or that it is not appropriate/useful for my particular
>> Wi-Fi device?
> I meant that the file itself is bad, but of course there could be a bug
> lurking somewhere as well. The md5sum should be:
>
> 0234621d41643e46243438b1661c2407  ath10k/QCA9377/hw1.0/board-2.bin
>
> But this does not make any difference for you as the board-2.bin file
> does not have any board files for usb devices yet.
This was my bad.  My file was corrupted.  I fixed it (matches the md5sum 
above), but as you noted, it is of no help for USB devices.

usb 1-1.2: failed to fetch board data for 
bus=usb,vendor=0cf3,device=9378,subsystem-vendor=0000,subsystem-device=0000 
from ath10k/QCA9377/hw1.0/board-2.bin

The driver then goes on and reads from board-usb.bin:
usb 1-1.2: board_file api 1 bmi_id N/A crc32 58a139e9
usb 1-1.2: invalid hw_params.n_cipher_suites 0

>
>> When you say that the driver then used board.bin instead, I think in
>> my case this is board-usb.bin (the same as my fakeboar.bin file from
>> SparkLAN), since my device is a USB device.  I am just trying to be
>> clear on my understanding.
> A good point and you are correct. I forgot that Erik's patches are still
> using that special board-usb.bin. That should be removed before the
> patches get applied upstream as we should get all the board files to
> board-2.bin anyway. (board.bin is just for testing purposes)
>
>>>> The Wi-Fi USB adapter may be installed in any number of different USB
>>>> locations, so why is the USB location (1-1.2) part of one of the
>>>> filenames?
>>> Because there needs to be some way to identify multiple devices on the
>>> same host. But cal-*.bin is mainly meant for AP devices where the
>>> devices have a fixed slot in the PCI bus and the calibration data is
>>> stored in host's filesystem (check openwrt to see how it's used).
>>>
>> I did manage to get a successful Wi-Fi STA mode connection with this
>> driver.  One issue that I don't understand is when the driver attempts
>> to load a FW file that is not present, it fails with error -2 and then
>> reports, "Falling back to user helper".  However, this 'user helper'
>> does not exist/work either, but the driver waits quite a while waiting
>> for it (about half a minute or so).  This causes a delay loading the
>> driver (about half a minute for each missing file).  So, even though
>> the cal files are optional, if they are not there, it significantly
>> delays loading of the driver.  I need to eliminate this delay.  For
>> now, I patched the driver to not attempt to load the
>> pre-cal-usb-<bus>.bin or the cal-usb-<bus>.bin files (that do not
>> exist for my adapter), but there must be a better way to avoid this
>> delay.
> Yeah, that delay is a common problem and not ath10k related. IIRC
> there's a Kconfig option which you can disable to avoid the delay, maybe
> it was CONFIG_FW_LOADER_USER_HELPER_FALLBACK? Not sure though, Google
> should be able to help with that.
>
Thanks.  Selecting CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n did the trick.

Other issues that I have observed (probably FW related):
1) In STA mode, I observe several messages from the driver "received tx 
completion for invalid msdu_id: 0".  A Google search led me to 
https://github.com/erstrom/linux-ath/issues/1, but I did not find a 
resolution.

2) If I reboot, it appears that the USB Wi-Fi adapter is left in a 
broken state, so the device fails to enumerate and the driver won't 
load.  A power cycle is required.

3) AP mode does not work.  The driver reports:
usb 1-1.2: Failed to submit usb control message: -110
usb 1-1.2: unable to send the bmi data to the device: -110
usb 1-1.2: unable to write to the device (-110)
usb 1-1.2: settings HTC version failed
usb 1-1.2: Could not init core: -22
At this point, the device is stuffed again, and requires a power cycle.

Jay



_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

  reply	other threads:[~2018-05-16 20:06 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-14 18:09 Support for QCA9377 Patrick Doyle
2018-05-14 19:28 ` Gangadharan Vemula
2018-05-14 19:50   ` Patrick Doyle
2018-05-14 20:09     ` Gangadharan Vemula
2018-05-15 22:17       ` Jay Foster
2018-05-16  4:56         ` Kalle Valo
2018-05-16 15:27           ` Jay Foster
2018-05-16 18:27             ` Kalle Valo
2018-05-16 20:00               ` Jay Foster [this message]
2018-05-17 19:25                 ` Erik Stromdahl
2018-05-18  9:18                 ` Kalle Valo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cf92e6b8-56db-8d62-55cc-cc0ab8d91e64@roadrunner.com \
    --to=jayf0ster@roadrunner.com \
    --cc=ath10k@lists.infradead.org \
    --cc=jayfoster@ieee.org \
    --cc=kvalo@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.