Re: ath10k / WCN3990: firmware-5.bin and wlanmdsp.mbn being out of sync

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

 



On Tue, 5 Dec 2023 at 14:37, Kalle Valo <kvalo@xxxxxxxxxx> wrote:
>
> Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> writes:
>
> > On Mon, 4 Dec 2023 at 18:14, Kalle Valo <kvalo@xxxxxxxxxx> wrote:
> >
> >>
> >> Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> writes:
> >>
> >> > On Mon, 4 Dec 2023 at 14:56, Kalle Valo <kvalo@xxxxxxxxxx> wrote:
> >> >
> >> >>
> >> >> Hi Dmitry,
> >> >>
> >> >> Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> writes:
> >> >>
> >> >> > I wanted to ask your opinion regarding one of the issues we stumbled
> >> >> > upon on the Qualcomm RB1 and RB2 platforms. These platforms use ath10k
> >> >> > snoc (WCN3990) WiFi "card". We noticed the following messages being
> >> >> > spawned on the console, which I traced it to the
> >> >> > ATH10K_FW_FEATURE_SINGLE_CHAN_INFO_PER_CHANNEL feature:
> >> >> >
> >> >> > ath10k_snoc c800000.wifi: chan info: invalid frequency 0 (idx 41 out of bounds)
> >> >> >
> >> >> > As a reminder, on this platform the wlan firmware and firmware-N.bin
> >> >> > files come separately.
> >> >> > The wlanmdsp.mbn is downloaded by the onboard modem DSP via the
> >> >> > tqftpserv request (which is served from the board-specific folder
> >> >> > qcom/qcm2210). The firmware-N.bin file is loaded by the WiFi driver
> >> >> > itself from the generic folder, ath10k/WCN3990/hw1.0. Current
> >> >> > firmware-5.bin file was provided with the sdm845's wlanmdsp.mbn, which
> >> >> > is older than qcm2210/qrb4210's wlanmdsp.mbn.
> >> >> >
> >> >> > I'm looking for suggestions on how to make ath10k driver load
> >> >> > firmware-N.bin file which corresponds to the board-specific
> >> >> > wlanmdsp.mbn.
> >> >>
> >> >> We have had similar discussions in the past but it didn't go very far.
> >> >> It would be so nice if you could finally fix this :) At one point we
> >> >> even had a discussion that we might need something similar for ath11k
> >> >> but it didn't go anywhere.
> >> >>
> >> >> > In particular I'd like to hear your opinion on the following proposal:
> >> >> >
> >> >> > Add the  optional property to the board DT, that specifies:
> >> >> > firmware-name = "path/to/wlanmdsp.mbn".  The property, if present,
> >> >> > will be used as an override for the firmware directory. So, while the
> >> >> > ath10k driver will not load wlanmdsp.mbn on its own, it will still
> >> >> > look for the firmware-N files in the specified directory.
> >> >>
> >> >> Back in the day I was thinking something like below, please let me know
> >> >> what you think.
> >> >>
> >> >> So the normal firmware path for WCN3990 is:
> >> >>
> >> >> ath10k/WCN3990/hw1.0/
> >> >>
> >> >> My idea was that if we could extend it for different "platforms" (not
> >> >> sure what's the proper term for this) by having platform specific
> >> >> directories:
> >> >>
> >> >> ath10k/WCN3990/hw1.0-platform/
> >> >>
> >> >> (Replace "platform" with a unique name for the platform, for example
> >> >> "acme-kv7" for a product from Acme with model name kv7.)
> >> >>
> >> >> Then DT could inform ath10k about this "platform" string and ath10k
> >> >> would then download boath firmware-N.bin and board-2.bin from the
> >> >> platform specific directory.
> >> >>
> >> >> And even cleaner if we could have the *.mbn firmware files in the same
> >> >> directory, even if ath10k doesn't access them directly.
> >> >
> >> > We can, and a symlink from qcom/SoC/.../dir to that subdir.
> >> >
> >> > So, for example, for Pixel-3, using your schema we will have:
> >> >
> >> > ath10k/WCN3990/hw1.0-blueline/wlanmdsp.mbn
> >> > ath10k/WCN3990/hw1.0-blueline/firmware-5.bin
> >> > ath10k/WCN3990/hw1.0-blueline/board-2.bin
> >> >
> >> > qcom/sdm845/Google/blueline/wlanmdsp.mbn ->
> >> > ../../../../ath10k/WCN3990/hw1.0-blueline/wlanmdsp.mbn
> >> >
> >> > This sounds mostly fine to me. My only suggestions is to change it as following:
> >> >
> >> > ath10k/WCN3990/hw1.0/board-2.bin
> >> >
> >> > ath10k/WCN3990/hw1.0/blueline/wlanmdsp.mbn
> >> > ath10k/WCN3990/hw1.0/blueline/firmware-5.bin
> >> > ath10k/WCN3990/hw1.0/blueline/board-2.bin
> >> >
> >> > qcom/sdm845/Google/blueline/wlanmdsp.mbn ->
> >> > ../../../../ath10k/WCN3990/hw1.0/blueline/wlanmdsp.mbn
> >>
> >> Is there a specific reason why you propose adding a new subdirectory?
> >> Personally I find it confusing that hw1.0 directory contains the
> >> firmware files and then there's a subdirectory which also contains
> >> similar firmware files.
> >
> > My main idea was to allow fallback at least for board-2.bin. I don't
> > think we should have 10 instances of the file (or load it from the
> > platform-specific location).
>
> A very good point, I didn't think of board files. I agree, we should
> avoid having several board-2.bin files. But I don't see how a
> subdirectory would solve that? What if we have symlinks for board-2.bin
> file:
>
> ath10k/WCN3990/hw1.0-blueline/board-2.bin -> ath10k/WCN3990/hw1.0/board-2.bin
>
> That way we can have just one board-2.bin file to maintain. And I
> suspect this would be easier to implement in ath10k driver.

I think it's the same amount of effort. Let me take a look at implementing it.

>
> In my previous mail I forgot to mention about backwards compatibility
> which is important. So we need to be careful that older kernels continue
> to work.

Yes, I had that in mind too.

For the current kernels to work, we need following three files:

ath10k/WCN3990/hw1.0/firmware-5.bin
ath10k/WCN3990/hw1.0/board-2.bin
qcom/sdm845/wlanmdsp.mbn

-- 
With best wishes
Dmitry




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux