mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
ed2015c386
The following patches: * 972-ath10k_fix-crash-due-to-wrong-handling-of-peer_bw_rxnss_override-parameter.patch * 973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch are replaced by this commit in the upstream kernel: * 3db24065c2c8 ("ath10k: enable VHT160 and VHT80+80 modes") The following patches were applied upstream: * 001-rt2800-enable-MFP-support-unconditionally.patch * 090-wireless-Use-linux-stddef.h-instead-of-stddef.h.patch The rtw88 driver is now split into multiple kernel modules, just put it all into one OpenWrt kernel package. rtl8812au-ct was patched to compile against the mac80211 from kernel 5.8, but not runtime tested. Add a patch which fixes ath10k on IPQ40XX, this patch was send upstream and fixes a crash when loading ath10k on this SoC. Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> [ipq40xx/ map-ac2200] Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
50 lines
1.8 KiB
Diff
50 lines
1.8 KiB
Diff
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
|
|
Date: Thu, 9 Jul 2015 00:07:59 +0200
|
|
Subject: [PATCH] brcmfmac: workaround bug with some inconsistent BSSes state
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|
---
|
|
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
|
@@ -712,8 +712,36 @@ static struct wireless_dev *brcmf_cfg802
|
|
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
|
struct brcmf_pub *drvr = cfg->pub;
|
|
struct wireless_dev *wdev;
|
|
+ struct net_device *dev;
|
|
int err;
|
|
|
|
+ /*
|
|
+ * There is a bug with in-firmware BSS management. When adding virtual
|
|
+ * interface brcmfmac first tells firmware to create new BSS and then
|
|
+ * it creates new struct net_device.
|
|
+ *
|
|
+ * If creating/registering netdev(ice) fails, BSS remains in some bugged
|
|
+ * state. It conflicts with existing BSSes by overtaking their auth
|
|
+ * requests.
|
|
+ *
|
|
+ * It results in one BSS (addresss X) sending beacons and another BSS
|
|
+ * (address Y) replying to authentication requests. This makes interface
|
|
+ * unusable as AP.
|
|
+ *
|
|
+ * To workaround this bug we may try to guess if register_netdev(ice)
|
|
+ * will fail. The most obvious case is using interface name that already
|
|
+ * exists. This is actually quite likely with brcmfmac & some user space
|
|
+ * scripts as brcmfmac doesn't allow deleting virtual interfaces.
|
|
+ * So this bug can be triggered even by something trivial like:
|
|
+ * iw dev wlan0 delete
|
|
+ * iw phy phy0 interface add wlan0 type __ap
|
|
+ */
|
|
+ dev = dev_get_by_name(&init_net, name);
|
|
+ if (dev) {
|
|
+ dev_put(dev);
|
|
+ return ERR_PTR(-ENFILE);
|
|
+ }
|
|
+
|
|
brcmf_dbg(TRACE, "enter: %s type %d\n", name, type);
|
|
err = brcmf_vif_add_validate(wiphy_to_cfg(wiphy), type);
|
|
if (err) {
|