linux_dsm_epyc7002/drivers/net/wireless
Hans de Goede 29ec3394f0 brcmfmac: Fix ccode from EFI nvram when necessary
In some cases the EFI-var stored nvram contains "ccode=ALL" or "ccode=XV"
to specify "worldwide" compatible settings, but these 2 ccode-s do not work
properly.

I've tested the different known "worldwide" ccode-s used in various nvram
sources with the latest firmwares from linux-firmware for various brcmfmac
models, here is a simplified (*) table with what each setting results in:

ALL: 12-14 disab, U-NII-1, U-NII-2 no-IR/radar, U-NII-3
XV:  12-14 no-IR, disables all 5G channels
XY:  12-13 enab, 14 disab, U-NII-1 enab, U-NII-2 no-IR/radar, U-NII-3 disab
X2:  12-13 no-IR, 14 dis, U-NII-1 no-IR, U-NII-2 no-IR/radar, U-NII-3 no-IR

Where 12,13,14 are 2.4G channels 12-14 and U-NII-1/2/3 are the 3 different
5G channel groups. no-IR is no-Initiate-Radiation, we will never send on
these channels without first having received valid wifi traffic there.

This immediately shows that both ALL and XV are not as worldwide as we want
them to be. ALL causes channels 12 and 13 to not be available and XV causes
all 5GHz channels to not be available. Also ALL unconditionally enables the
U-NII-1 and U-NII-3 5G groups, while we really should be using no-IR for
these.

This commit replace XV and ALL with X2, which allows usage of chan 12-13
and 5G channels, but only after receiving valid wifi traffic there first.

Note that this configure the firmware's channel limits, the kernels own
regulatory restrictions based on e.g. regulatory info received from the
access-point, will be applied on top of this.

This fixes channels 12+13 not working on the Asus T200TA and the Lenovo
Mixx 2 8 and 5G channels not working on the Asus T100HA.

This has been tested on the following models: Acer Iconia Tab8 w1-810,
Acer One 10, Asus T100CHI, Asus T100HA, Asus T100TA, Asus T200TA and a
Lenovo Mixx 2 8.

*) There are some exceptions to this table:
1) On really old firmware e.g. linux-firmware's 2011 brcmfmac4330-sdio.bin
   ALL really means all, unconditionally enabling everything
2) The exact meaning might be influenced by setting the regrev nvram var.
   Specifically using ccode=XV + regrev=1 on brcmfmac43241b4 leads to:
   12-14 no-ir, U-NII-1 no-ir, U-NII-2 no-ir/radar, U-NII-3 no-ir
   But only on the brcmfmac43241b4 and not on e.g. the brcmfmac43340

Tested-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
2018-11-06 18:51:41 +02:00
..
admtek
ath ath10k: add QMI message handshake for wcn3990 client 2018-10-13 20:31:56 +03:00
atmel atmel: Replace mdelay() with msleep() in probe_atmel_card() 2018-07-31 10:25:33 +03:00
broadcom brcmfmac: Fix ccode from EFI nvram when necessary 2018-11-06 18:51:41 +02:00
cisco airo: remove unused variables len and dev and clean up formatting 2018-07-31 10:17:19 +03:00
intel iwlegacy: Add a lock assertion in il4965_send_rxon_assoc() 2018-10-13 20:02:29 +03:00
intersil wireless-drivers-next patches for 4.20 2018-10-02 11:46:29 -07:00
marvell libertas: return errno from lbs_add_card() 2018-10-13 20:03:53 +03:00
mediatek mt76x0: phy: do not run calibration during channel switch 2018-10-13 17:39:53 +02:00
quantenna qtnfmac_pcie: cleanup Pearl platform headers 2018-10-13 20:04:48 +03:00
ralink rt2800: flush and txstatus rework for rt2800mmio 2018-10-01 18:37:35 +03:00
realtek rtl8xxxu: Remove set but not used variables 'usedesc40' and 'seq_number' 2018-10-13 20:05:26 +03:00
rsi rsi: Remove unnecessary boolean condition 2018-10-01 18:31:10 +03:00
st cw1200: Remove extra parentheses 2018-08-31 18:42:25 +03:00
ti wlcore: Add support for optional wakeirq 2018-10-05 11:33:31 +03:00
zydas zd1211rw: Replace spin_is_locked() with lockdep 2018-10-05 11:35:05 +03:00
Kconfig
mac80211_hwsim.c mac80211_hwsim: drop now unused work-queue from hwsim 2018-10-08 09:49:06 +02:00
mac80211_hwsim.h
Makefile
ray_cs.c ray_cs: remove redundant pointer 'p' 2018-07-31 10:19:50 +03:00
ray_cs.h
rayctl.h
rndis_wlan.c wireless-drivers: use BIT_ULL for NL80211_STA_INFO_ attribute types 2018-06-27 19:07:39 +03:00
wl3501_cs.c
wl3501.h