2021-04-25 11:02:43

by Shawn Guo

[permalink] [raw]
Subject: [PATCH] brcmfmac: use ISO3166 country code and 0 rev as fallback

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.

Signed-off-by: Shawn Guo <[email protected]>
---
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index f4405d7861b6..6cb09c7c37b6 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -7442,18 +7442,23 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2],
s32 found_index;
int i;

- country_codes = drvr->settings->country_codes;
- if (!country_codes) {
- brcmf_dbg(TRACE, "No country codes configured for device\n");
- return -EINVAL;
- }
-
if ((alpha2[0] == ccreq->country_abbrev[0]) &&
(alpha2[1] == ccreq->country_abbrev[1])) {
brcmf_dbg(TRACE, "Country code already set\n");
return -EAGAIN;
}

+ country_codes = drvr->settings->country_codes;
+ if (!country_codes) {
+ brcmf_dbg(TRACE, "No country codes configured for device, using ISO3166 code and 0 rev\n");
+ memset(ccreq, 0, sizeof(*ccreq));
+ ccreq->country_abbrev[0] = alpha2[0];
+ ccreq->country_abbrev[1] = alpha2[1];
+ ccreq->ccode[0] = alpha2[0];
+ ccreq->ccode[1] = alpha2[1];
+ return 0;
+ }
+
found_index = -1;
for (i = 0; i < country_codes->table_size; i++) {
cc = &country_codes->table[i];
--
2.17.1


2021-04-28 12:04:49

by Arend van Spriel

[permalink] [raw]
Subject: Re: [PATCH] brcmfmac: use ISO3166 country code and 0 rev as fallback

On 4/25/2021 1:02 PM, Shawn Guo wrote:
> 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.

I am somewhat surprised, but with the brcm-spinoffs (cypress/infineon
and synaptics) my understanding may have been surpassed by reality.
Would you happen to know which chipsets/firmwares require only ISO3166
code and no rev?

Regards,
Arend
> Signed-off-by: Shawn Guo <[email protected]>
> ---
> .../broadcom/brcm80211/brcmfmac/cfg80211.c | 17 +++++++++++------
> 1 file changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> index f4405d7861b6..6cb09c7c37b6 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> @@ -7442,18 +7442,23 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2],
> s32 found_index;
> int i;
>
> - country_codes = drvr->settings->country_codes;
> - if (!country_codes) {
> - brcmf_dbg(TRACE, "No country codes configured for device\n");
> - return -EINVAL;
> - }
> -
> if ((alpha2[0] == ccreq->country_abbrev[0]) &&
> (alpha2[1] == ccreq->country_abbrev[1])) {
> brcmf_dbg(TRACE, "Country code already set\n");
> return -EAGAIN;
> }
>
> + country_codes = drvr->settings->country_codes;
> + if (!country_codes) {
> + brcmf_dbg(TRACE, "No country codes configured for device, using ISO3166 code and 0 rev\n");
> + memset(ccreq, 0, sizeof(*ccreq));
> + ccreq->country_abbrev[0] = alpha2[0];
> + ccreq->country_abbrev[1] = alpha2[1];
> + ccreq->ccode[0] = alpha2[0];
> + ccreq->ccode[1] = alpha2[1];
> + return 0;
> + }
> +
> found_index = -1;
> for (i = 0; i < country_codes->table_size; i++) {
> cc = &country_codes->table[i];
>

2021-04-28 12:43:47

by Shawn Guo

[permalink] [raw]
Subject: Re: [PATCH] brcmfmac: use ISO3166 country code and 0 rev as fallback

On Wed, Apr 28, 2021 at 02:03:07PM +0200, Arend van Spriel wrote:
> On 4/25/2021 1:02 PM, Shawn Guo wrote:
> > 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.
>
> I am somewhat surprised, but with the brcm-spinoffs (cypress/infineon and
> synaptics) my understanding may have been surpassed by reality. Would you
> happen to know which chipsets/firmwares require only ISO3166 code and no
> rev?

The "no rev" here actually means 'rev' field being zero. The chipset
I'm running is a BCM43012 from Synaptics, I think.

Firmware: BCM43012/2 wl0: Apr 16 2021 15:25:36 version 18.35.389.63.t2 (wlan=r836194) FWID 01-a8c7bac

Shawn

2021-05-23 06:13:55

by Shawn Guo

[permalink] [raw]
Subject: Re: [PATCH] brcmfmac: use ISO3166 country code and 0 rev as fallback

On Wed, Apr 28, 2021 at 08:42:29PM +0800, Shawn Guo wrote:
> On Wed, Apr 28, 2021 at 02:03:07PM +0200, Arend van Spriel wrote:
> > On 4/25/2021 1:02 PM, Shawn Guo wrote:
> > > 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.
> >
> > I am somewhat surprised, but with the brcm-spinoffs (cypress/infineon and
> > synaptics) my understanding may have been surpassed by reality. Would you
> > happen to know which chipsets/firmwares require only ISO3166 code and no
> > rev?
>
> The "no rev" here actually means 'rev' field being zero. The chipset
> I'm running is a BCM43012 from Synaptics, I think.
>
> Firmware: BCM43012/2 wl0: Apr 16 2021 15:25:36 version 18.35.389.63.t2 (wlan=r836194) FWID 01-a8c7bac

Arend,

Does it make sense? Or is there actually a country code mapping table
I'm not aware of?

Shawn

2021-05-23 07:04:51

by Arend van Spriel

[permalink] [raw]
Subject: Re: [PATCH] brcmfmac: use ISO3166 country code and 0 rev as fallback

On May 23, 2021 8:12:29 AM Shawn Guo <[email protected]> wrote:

> On Wed, Apr 28, 2021 at 08:42:29PM +0800, Shawn Guo wrote:
>> On Wed, Apr 28, 2021 at 02:03:07PM +0200, Arend van Spriel wrote:
>>> On 4/25/2021 1:02 PM, Shawn Guo wrote:
>>>> 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.
>>>
>>> I am somewhat surprised, but with the brcm-spinoffs (cypress/infineon and
>>> synaptics) my understanding may have been surpassed by reality. Would you
>>> happen to know which chipsets/firmwares require only ISO3166 code and no
>>> rev?
>>
>> The "no rev" here actually means 'rev' field being zero. The chipset
>> I'm running is a BCM43012 from Synaptics, I think.
>>
>> Firmware: BCM43012/2 wl0: Apr 16 2021 15:25:36 version 18.35.389.63.t2
>> (wlan=r836194) FWID 01-a8c7bac
>
> Arend,
>
> Does it make sense? Or is there actually a country code mapping table
> I'm not aware of?

I recall the firmware always include a rev 0 for each country code. I will
have to ask internally whether that may be used for any chipset. If so, it
seems reasonable to use rev 0 as fallback when no mapping table is provided.

Regards,
Arend




--
This electronic communication and the information and any files transmitted
with it, or attached to it, are confidential and are intended solely for
the use of the individual or entity to whom it is addressed and may contain
information that is confidential, legally privileged, protected by privacy
laws, or otherwise restricted from disclosure to anyone else. If you are
not the intended recipient or the person responsible for delivering the
e-mail to the intended recipient, you are hereby notified that any use,
copying, distributing, dissemination, forwarding, printing, or copying of
this e-mail is strictly prohibited. If you received this e-mail in error,
please return the e-mail to the sender, delete it from your computer, and
destroy any printed copy of it.


Attachments:
smime.p7s (4.12 kB)
S/MIME Cryptographic Signature

2021-06-15 10:36:59

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] brcmfmac: use ISO3166 country code and 0 rev as fallback

Shawn Guo <[email protected]> wrote:

> 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.
>
> Signed-off-by: Shawn Guo <[email protected]>

Patch applied to wireless-drivers-next.git, thanks.

b0b524f079a2 brcmfmac: use ISO3166 country code and 0 rev as fallback

--
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches