Thread (12 messages) flat view 12 messages, 4 authors, 2021-09-12

Re: [BUG] Re: [PATCH] brcmfmac: use ISO3166 country code and 0 rev as fallback

From: Shawn Guo <hidden>
Date: 2021-09-09 02:20:51
Also in: linux-arm-kernel, linux-rockchip, lkml, netdev

On Wed, Sep 08, 2021 at 07:08:06AM +0200, Soeren Moch wrote:
Hi Shawn,

On 08.09.21 03:00, Shawn Guo wrote:
quoted
Hi Soeren,

On Tue, Sep 07, 2021 at 09:22:52PM +0200, Soeren Moch wrote:
quoted
On 25.04.21 13:02, Shawn Guo wrote:
quoted
Instead of aborting country code setup in firmware, use ISO3166 country
code and 0 rev as fallback, when country_codes mapping table is not
configured.  This fallback saves the country_codes table setup for recent
brcmfmac chipsets/firmwares, which just use ISO3166 code and require no
revision number.
This patch breaks wireless support on RockPro64. At least the access
point is not usable, station mode not tested.

brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4359/9 wl0: Mar  6 2017
10:16:06 version 9.87.51.7 (r686312) FWID 01-4dcc75d9

Reverting this patch makes the access point show up again with linux-5.14 .
Sorry for breaking your device!

So it sounds like you do not have country_codes configured for your
BCM4359/9 device, while it needs particular `rev` setup for the ccode
you are testing with.  It was "working" likely because you have a static
`ccode` and `regrev` setting in nvram file.
It always has been a mystery to me how country codes are configured for
this device. Before I read your patch I did not even know that a
translation table is required. Is there some documentation how this is
supposed to work? Not sure if this makes a difference, BCM4359/9 is a
Cypress device I think, I added mainline support for it some time ago.
One way to add the translation table is using DT.  You can find more
info and example in following commits:

b41936227078 ("dt-bindings: bcm4329-fmac: add optional brcm,ccode-map")
1a3ac5c651a0 ("brcmfmac: support parse country code map from DT")
I have installed different firmware files, brcmfmac4359-sdio.clm_blob,
brcmfmac4359-sdio.bin, brcmfmac4359-sdio.txt, the latter also linked as
brcmfmac4359-sdio.pine64,rockpro64-2.1.txt. This probably is the nvram
file. ccode and regrev are set to zero, which probably means
'international save settings".
I'm not sure how this 'international save settings' works for brcmfmac
devices.  Do you have more info or any pointers?
quoted
But roaming to a different
region will mostly get you a broken WiFi support.  Is it possible to set
up the country_codes for your device to get it work properly?
In linux-5.13 it worked, probably with save settings (not all channels
selectable, limited tx power), with linux-5.14 it stopped working, so it
is a regression.
I personally would like to learn how all this is configured properly.
For general use I think save settings are better than no wifi at all
with this patch. This fallback to ISO CC seams to work with newer
(Synaptics?) devices only.
I do not mind you send a reverting if you have problem to add a proper
translation table for your device.  But that would mean I have to add
a pretty "meaningless" translation table for my devices :(

Shawn
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help