aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211')
-rw-r--r--package/kernel/mac80211/Makefile6
-rw-r--r--package/kernel/mac80211/patches/ath/080-ath10k_thermal_config.patch4
-rw-r--r--package/kernel/mac80211/patches/ath/402-ath_regd_optional.patch2
-rw-r--r--package/kernel/mac80211/patches/ath/404-regd_no_assoc_hints.patch4
-rw-r--r--package/kernel/mac80211/patches/ath/501-ath9k_ahb_init.patch2
-rw-r--r--package/kernel/mac80211/patches/ath/530-ath9k_extra_leds.patch2
-rw-r--r--package/kernel/mac80211/patches/ath/542-ath9k_debugfs_diag.patch6
-rw-r--r--package/kernel/mac80211/patches/ath/543-ath9k_entropy_from_adc.patch10
-rw-r--r--package/kernel/mac80211/patches/ath/910-ath10k-Fix-NULL-pointer-dereference-in-AHB-device-pr.patch262
-rw-r--r--package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch2
-rw-r--r--package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch2
-rw-r--r--package/kernel/mac80211/patches/ath/930-ath10k_add_tpt_led_trigger.patch4
-rw-r--r--package/kernel/mac80211/patches/ath/972-ath10k_fix-crash-due-to-wrong-handling-of-peer_bw_rxnss_override-parameter.patch144
-rw-r--r--package/kernel/mac80211/patches/ath/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch53
-rw-r--r--package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch36
-rw-r--r--package/kernel/mac80211/patches/ath/975-ath10k-use-tpt-trigger-by-default.patch6
-rw-r--r--package/kernel/mac80211/patches/ath/980-ath10k-fix-max-antenna-gain-unit.patch2
-rw-r--r--package/kernel/mac80211/patches/ath/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch2
-rw-r--r--package/kernel/mac80211/patches/brcm/860-brcmfmac-register-wiphy-s-during-module_init.patch2
-rw-r--r--package/kernel/mac80211/patches/brcm/861-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch2
-rw-r--r--package/kernel/mac80211/patches/brcm/862-brcmfmac-Disable-power-management.patch2
-rw-r--r--package/kernel/mac80211/patches/brcm/998-survey.patch12
-rw-r--r--package/kernel/mac80211/patches/build/015-ipw200-mtu.patch4
-rw-r--r--package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch8
-rw-r--r--package/kernel/mac80211/patches/rt2x00/001-rt2800-enable-MFP-support-unconditionally.patch44
-rw-r--r--package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch4
-rw-r--r--package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch2
-rw-r--r--package/kernel/mac80211/patches/subsys/090-wireless-Use-linux-stddef.h-instead-of-stddef.h.patch31
-rw-r--r--package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch2
-rw-r--r--package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch4
-rw-r--r--package/kernel/mac80211/patches/subsys/130-disable-fils.patch2
-rw-r--r--package/kernel/mac80211/patches/subsys/132-mac80211-remove-cmac-dependency.patch2
-rw-r--r--package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch2
-rw-r--r--package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch10
-rw-r--r--package/kernel/mac80211/patches/subsys/210-ap_scan.patch2
-rw-r--r--package/kernel/mac80211/patches/subsys/300-mac80211-optimize-skb-resizing.patch12
-rw-r--r--package/kernel/mac80211/patches/subsys/400-allow-ibss-mixed.patch2
-rw-r--r--package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch42
-rw-r--r--package/kernel/mac80211/realtek.mk17
39 files changed, 377 insertions, 380 deletions
diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
index cc17031a87..75d9cd9e6f 100644
--- a/package/kernel/mac80211/Makefile
+++ b/package/kernel/mac80211/Makefile
@@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mac80211
-PKG_VERSION:=5.7.5-1
+PKG_VERSION:=5.8-rc2-1
PKG_RELEASE:=1
-PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.7.5/
-PKG_HASH:=200312d46eb6a94676f611af6baebbffc5cbf3b7dd75e72a69c767704c37b571
+PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.8-rc2/
+PKG_HASH:=363a648a6bded577044b505289dd711b160b8334cd73cbc6301e341e6b4c78fc
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
diff --git a/package/kernel/mac80211/patches/ath/080-ath10k_thermal_config.patch b/package/kernel/mac80211/patches/ath/080-ath10k_thermal_config.patch
index 3bb046e843..de6f9d9bb0 100644
--- a/package/kernel/mac80211/patches/ath/080-ath10k_thermal_config.patch
+++ b/package/kernel/mac80211/patches/ath/080-ath10k_thermal_config.patch
@@ -1,7 +1,7 @@
--- a/drivers/net/wireless/ath/ath10k/Kconfig
+++ b/drivers/net/wireless/ath/ath10k/Kconfig
-@@ -87,6 +87,12 @@ config ATH10K_TRACING
- ---help---
+@@ -86,6 +86,12 @@ config ATH10K_TRACING
+ help
Select this to ath10k use tracing infrastructure.
+config ATH10K_THERMAL
diff --git a/package/kernel/mac80211/patches/ath/402-ath_regd_optional.patch b/package/kernel/mac80211/patches/ath/402-ath_regd_optional.patch
index 7824eab6cb..bf87d3551a 100644
--- a/package/kernel/mac80211/patches/ath/402-ath_regd_optional.patch
+++ b/package/kernel/mac80211/patches/ath/402-ath_regd_optional.patch
@@ -79,7 +79,7 @@
+
config ATH_DEBUG
bool "Atheros wireless debugging"
- ---help---
+ help
--- a/local-symbols
+++ b/local-symbols
@@ -85,6 +85,7 @@ ADM8211=
diff --git a/package/kernel/mac80211/patches/ath/404-regd_no_assoc_hints.patch b/package/kernel/mac80211/patches/ath/404-regd_no_assoc_hints.patch
index b186e8fa47..89e26af763 100644
--- a/package/kernel/mac80211/patches/ath/404-regd_no_assoc_hints.patch
+++ b/package/kernel/mac80211/patches/ath/404-regd_no_assoc_hints.patch
@@ -1,6 +1,6 @@
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
-@@ -3041,6 +3041,8 @@ void regulatory_hint_country_ie(struct w
+@@ -3042,6 +3042,8 @@ void regulatory_hint_country_ie(struct w
enum environment_cap env = ENVIRON_ANY;
struct regulatory_request *request = NULL, *lr;
@@ -9,7 +9,7 @@
/* IE len must be evenly divisible by 2 */
if (country_ie_len & 0x01)
return;
-@@ -3292,6 +3294,7 @@ static bool is_wiphy_all_set_reg_flag(en
+@@ -3293,6 +3295,7 @@ static bool is_wiphy_all_set_reg_flag(en
void regulatory_hint_disconnect(void)
{
diff --git a/package/kernel/mac80211/patches/ath/501-ath9k_ahb_init.patch b/package/kernel/mac80211/patches/ath/501-ath9k_ahb_init.patch
index e958769fe7..b9c784eb25 100644
--- a/package/kernel/mac80211/patches/ath/501-ath9k_ahb_init.patch
+++ b/package/kernel/mac80211/patches/ath/501-ath9k_ahb_init.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -1141,25 +1141,25 @@ static int __init ath9k_init(void)
+@@ -1143,25 +1143,25 @@ static int __init ath9k_init(void)
{
int error;
diff --git a/package/kernel/mac80211/patches/ath/530-ath9k_extra_leds.patch b/package/kernel/mac80211/patches/ath/530-ath9k_extra_leds.patch
index b3dfa105ca..1f19483064 100644
--- a/package/kernel/mac80211/patches/ath/530-ath9k_extra_leds.patch
+++ b/package/kernel/mac80211/patches/ath/530-ath9k_extra_leds.patch
@@ -181,7 +181,7 @@
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -1053,7 +1053,7 @@ int ath9k_init_device(u16 devid, struct
+@@ -1055,7 +1055,7 @@ int ath9k_init_device(u16 devid, struct
#ifdef CPTCFG_MAC80211_LEDS
/* must be initialized before ieee80211_register_hw */
diff --git a/package/kernel/mac80211/patches/ath/542-ath9k_debugfs_diag.patch b/package/kernel/mac80211/patches/ath/542-ath9k_debugfs_diag.patch
index 7c60191d48..5220157de6 100644
--- a/package/kernel/mac80211/patches/ath/542-ath9k_debugfs_diag.patch
+++ b/package/kernel/mac80211/patches/ath/542-ath9k_debugfs_diag.patch
@@ -62,7 +62,7 @@
debugfs_create_devm_seqfile(sc->dev, "interrupt", sc->debug.debugfs_phy,
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -521,6 +521,12 @@ enum {
+@@ -522,6 +522,12 @@ enum {
ATH9K_RESET_COLD,
};
@@ -75,7 +75,7 @@
struct ath9k_hw_version {
u32 magic;
u16 devid;
-@@ -809,6 +815,8 @@ struct ath_hw {
+@@ -810,6 +816,8 @@ struct ath_hw {
u32 ah_flags;
s16 nf_override;
@@ -84,7 +84,7 @@
bool reset_power_on;
bool htc_reset_init;
-@@ -1074,6 +1082,7 @@ void ath9k_hw_check_nav(struct ath_hw *a
+@@ -1076,6 +1084,7 @@ void ath9k_hw_check_nav(struct ath_hw *a
bool ath9k_hw_check_alive(struct ath_hw *ah);
bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode);
diff --git a/package/kernel/mac80211/patches/ath/543-ath9k_entropy_from_adc.patch b/package/kernel/mac80211/patches/ath/543-ath9k_entropy_from_adc.patch
index 087b0664e7..f59654e414 100644
--- a/package/kernel/mac80211/patches/ath/543-ath9k_entropy_from_adc.patch
+++ b/package/kernel/mac80211/patches/ath/543-ath9k_entropy_from_adc.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -722,6 +722,7 @@ struct ath_spec_scan {
+@@ -723,6 +723,7 @@ struct ath_spec_scan {
* @config_pci_powersave:
* @calibrate: periodic calibration for NF, ANI, IQ, ADC gain, ADC-DC
*
@@ -8,7 +8,7 @@
* @spectral_scan_config: set parameters for spectral scan and enable/disable it
* @spectral_scan_trigger: trigger a spectral scan run
* @spectral_scan_wait: wait for a spectral scan run to finish
-@@ -744,6 +745,7 @@ struct ath_hw_ops {
+@@ -745,6 +746,7 @@ struct ath_hw_ops {
struct ath_hw_antcomb_conf *antconf);
void (*antdiv_comb_conf_set)(struct ath_hw *ah,
struct ath_hw_antcomb_conf *antconf);
@@ -65,8 +65,8 @@
}
static const struct ieee80211_iface_limit if_limits[] = {
-@@ -1013,6 +1014,18 @@ static void ath9k_set_hw_capab(struct at
- wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_AIRTIME_FAIRNESS);
+@@ -1015,6 +1016,18 @@ static void ath9k_set_hw_capab(struct at
+ NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS);
}
+static void ath_get_initial_entropy(struct ath_softc *sc)
@@ -84,7 +84,7 @@
int ath9k_init_device(u16 devid, struct ath_softc *sc,
const struct ath_bus_ops *bus_ops)
{
-@@ -1058,6 +1071,8 @@ int ath9k_init_device(u16 devid, struct
+@@ -1060,6 +1073,8 @@ int ath9k_init_device(u16 devid, struct
ARRAY_SIZE(ath9k_tpt_blink));
#endif
diff --git a/package/kernel/mac80211/patches/ath/910-ath10k-Fix-NULL-pointer-dereference-in-AHB-device-pr.patch b/package/kernel/mac80211/patches/ath/910-ath10k-Fix-NULL-pointer-dereference-in-AHB-device-pr.patch
new file mode 100644
index 0000000000..6886b6c3e9
--- /dev/null
+++ b/package/kernel/mac80211/patches/ath/910-ath10k-Fix-NULL-pointer-dereference-in-AHB-device-pr.patch
@@ -0,0 +1,262 @@
+From 1cfd3426ef989b83fa6176490a38777057e57f6c Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <hauke@hauke-m.de>
+Date: Tue, 14 Jul 2020 22:58:02 +0200
+Subject: [PATCH] ath10k: Fix NULL pointer dereference in AHB device probe
+
+This fixes a NULL pointer dereference in the probe path for AHB devices.
+There attr parameter in the ath10k_ce_alloc_pipe() function is not
+initialized, but accessed. This function is called by
+ath10k_pci_setup_resource() which is called by ath10k_ahb_probe().
+
+The struct ath10k_pci is also used for AHB devices and not only for PCI
+devices.
+
+The initialization of the new members of struct ath10k_pci is moved to
+ath10k_pci_setup_resource() which is used by the PCI and the AHB code.
+
+This also fixes a use after free bug in ath10k_pci_remove() when ar_pci
+is accessed after ath10k_core_destroy() was called, which calls
+ieee80211_free_hw() and frees this memory.
+
+This fixes the following bug seen with backports-5.8-rc2 on OpenWrt on a
+IPQ4019 device:
+
+[ 11.117462] 8<--- cut here ---
+[ 11.117494] Unable to handle kernel NULL pointer dereference at virtual address 00000000
+[ 11.119510] pgd = f377fd58
+[ 11.127657] [00000000] *pgd=8e9a0835, *pte=00000000, *ppte=00000000
+[ 11.130206] Internal error: Oops: 17 [#1] SMP ARM
+[ 11.136339] Modules linked in: ath10k_pci(+) ath10k_core ath xt_state xt_nat xt_conntrack xt_REDIRECT xt_MASQUERADE xt_FLOWOFFLOAD pppox ppp_generic nf_nat nf_flow_table_hw nf_flow_table nf_conntrack_rtcache nf_conntrack mac80211 ipt_REJECT cfg80211 xt_time xt_tcpudp xt_multiport xt_mark xt_mac xt_limit xt_comment xt_TCPMSS xt_LOG slhc nf_reject_ipv4 nf_log_ipv4 nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_filter ip_tables crc_ccitt compat nf_log_ipv6 nf_log_common ip6table_mangle ip6table_filter ip6_tables ip6t_REJECT x_tables nf_reject_ipv6 leds_gpio xhci_plat_hcd xhci_pci xhci_hcd dwc3 dwc3_qcom gpio_button_hotplug
+[ 11.174355] CPU: 2 PID: 257 Comm: kmodloader Not tainted 5.4.51 #0
+[ 11.196585] Hardware name: Generic DT based system
+[ 11.202746] PC is at ath10k_ce_alloc_pipe+0x58/0x180 [ath10k_core]
+[ 11.207459] LR is at ath10k_pci_alloc_pipes+0x94/0xc8 [ath10k_pci]
+[ 11.213600] pc : [<bf2c96cc>] lr : [<bf2fbf98>] psr: 80000013
+[ 11.219760] sp : cea0dc90 ip : cf4001f0 fp : 00000001
+[ 11.225923] r10: 00000000 r9 : 00000018 r8 : ce4963b4
+[ 11.231133] r7 : 00000000 r6 : ce491ea0 r5 : 00000000 r4 : ce4963b4
+[ 11.236342] r3 : 0004a000 r2 : 0004a000 r1 : bf2d0d70 r0 : 00000006
+[ 11.242942] Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
+[ 11.249452] Control: 10c5387d Table: 8e9c006a DAC: 00000051
+[ 11.256656] Process kmodloader (pid: 257, stack limit = 0xaba286ca)
+[ 11.262386] Stack: (0xcea0dc90 to 0xcea0e000)
+[ 11.268462] dc80: 00000000 ce49629c ce491ea0 ce4963bc
+[ 11.272984] dca0: ce495ea0 bf2fbf98 00000002 ce4963a8 ce495ea0 00000000 ce491ea0 cf95d800
+[ 11.281142] dcc0: cf95d810 cf95d810 00000001 bf2fc854 00000000 cf95d800 bf300748 ce495ea0
+[ 11.289304] dce0: ce491ea0 d1300000 cf95d800 bf2fde8c 00000000 00000001 ce49cea0 00000000
+[ 11.297462] dd00: 00000000 00000000 bf3010a0 cf95d810 bf3010a0 c0b61580 00000000 00000000
+[ 11.305624] dd20: bf3010a0 0000000b c0b04e48 c06110c8 c0b61588 cf95d810 c0b61580 c060f740
+[ 11.313781] dd40: cf95d810 00000000 bf3010a0 00000000 00000000 ce49d2a4 bf301100 c060fc90
+[ 11.321943] dd60: 00000000 bf3010a0 cf95d810 c060fcf0 cf95d810 bf3010a0 c060fc98 c060dca4
+[ 11.330101] dd80: cf809d58 cf952cb4 bf3010a0 ce967900 c0b1f2c8 c060ec28 bf3007b8 bf301038
+[ 11.338263] dda0: bf3010a0 bf3010a0 c0b2d4d4 ffffe000 bf304000 c0610278 c0b04e48 c0b2d4d4
+[ 11.346422] ddc0: ffffe000 bf2fe2b4 c0b04e48 bf30403c c0b04e48 c0302764 8040003f 00000001
+[ 11.354582] dde0: 38e38e39 ce513580 c0b2cb50 cf801e00 cffbc6ac ce513600 cf801e00 cffbc6ac
+[ 11.362740] de00: 8040003e ce49d280 00000001 c0428d54 00000001 cf801e00 cffbc6ac ce513580
+[ 11.370900] de20: ce49d280 0e391998 bf301100 ce49d340 d12d2000 ce49d280 00000001 c0398c2c
+[ 11.379061] de40: 00000001 cea0df34 cea0df34 00000001 d12d2000 c039ae48 bf30110c 00007fff
+[ 11.387221] de60: bf301100 c0398044 cf804028 bf301148 c0397674 bf30126c c08ee5c0 c08ee70c
+[ 11.395380] de80: bf30110c c0b04e48 c08ee518 00000000 c08ee570 c0b04e48 ce513600 fffff000
+[ 11.403540] dea0: 00000001 ce513580 0000000d 0000000d 00000000 00000000 00000000 00000000
+[ 11.411698] dec0: 00000000 00000000 6e72656b 00006c65 00000000 00000000 00000000 00000000
+[ 11.419858] dee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
+[ 11.428018] df00: 00000000 0e391998 00000000 0000c610 d12de610 00000000 0062c620 ffffe000
+[ 11.436180] df20: 000129d1 00000051 00000000 c039b228 00000000 d12d7afd d12d8e80 d12d2000
+[ 11.444337] df40: 0000c610 d12de0e8 d12ddfa8 d12dab74 00009000 00009570 00003a2c 00009cae
+[ 11.452498] df60: 00000000 00000000 00000000 00003a1c 0000001e 0000001f 00000018 00000000
+[ 11.460656] df80: 00000010 00000000 00000000 00000000 00000003 00000080 c0301204 cea0c000
+[ 11.468817] dfa0: 00000080 c0301000 00000000 00000000 00620010 0000c610 000129d1 00000014
+[ 11.476975] dfc0: 00000000 00000000 00000003 00000080 0000c610 00000000 b6fc1d20 00000000
+[ 11.485137] dfe0: bef0ad14 bef0acf8 00011e14 b6f74c94 60000010 00620010 00000000 00000000
+[ 11.493390] [<bf2c96cc>] (ath10k_ce_alloc_pipe [ath10k_core]) from [<bf2fbf98>] (ath10k_pci_alloc_pipes+0x94/0xc8 [ath10k_pci])
+[ 11.501498] [<bf2fbf98>] (ath10k_pci_alloc_pipes [ath10k_pci]) from [<bf2fc854>] (ath10k_pci_setup_resource+0xb8/0xf0 [ath10k_pci])
+[ 11.512773] [<bf2fc854>] (ath10k_pci_setup_resource [ath10k_pci]) from [<bf2fde8c>] (ath10k_ahb_probe+0x32c/0x670 [ath10k_pci])
+[ 11.524566] [<bf2fde8c>] (ath10k_ahb_probe [ath10k_pci]) from [<c06110c8>] (platform_drv_probe+0x34/0x70)
+[ 11.536016] [<c06110c8>] (platform_drv_probe) from [<c060f740>] (really_probe+0x1f0/0x358)
+[ 11.545729] [<c060f740>] (really_probe) from [<c060fc90>] (device_driver_attach+0x58/0x60)
+[ 11.553886] [<c060fc90>] (device_driver_attach) from [<c060fcf0>] (__driver_attach+0x58/0xcc)
+[ 11.562134] [<c060fcf0>] (__driver_attach) from [<c060dca4>] (bus_for_each_dev+0x68/0x8c)
+[ 11.570731] [<c060dca4>] (bus_for_each_dev) from [<c060ec28>] (bus_add_driver+0x1c8/0x1d8)
+[ 11.578886] [<c060ec28>] (bus_add_driver) from [<c0610278>] (driver_register+0x74/0x108)
+[ 11.587060] [<c0610278>] (driver_register) from [<bf2fe2b4>] (ath10k_ahb_init+0x18/0x38 [ath10k_pci])
+[ 11.595320] [<bf2fe2b4>] (ath10k_ahb_init [ath10k_pci]) from [<bf30403c>] (init_module+0x3c/0x1000 [ath10k_pci])
+[ 11.604432] [<bf30403c>] (init_module [ath10k_pci]) from [<c0302764>] (do_one_initcall+0x84/0x1d8)
+[ 11.614657] [<c0302764>] (do_one_initcall) from [<c0398c2c>] (do_init_module+0x5c/0x228)
+[ 11.623421] [<c0398c2c>] (do_init_module) from [<c039ae48>] (load_module+0x1fc8/0x224c)
+[ 11.631663] [<c039ae48>] (load_module) from [<c039b228>] (sys_init_module+0x15c/0x17c)
+[ 11.639390] [<c039b228>] (sys_init_module) from [<c0301000>] (ret_fast_syscall+0x0/0x54)
+[ 11.647370] Exception stack(0xcea0dfa8 to 0xcea0dff0)
+[ 11.655615] dfa0: 00000000 00000000 00620010 0000c610 000129d1 00000014
+[ 11.660569] dfc0: 00000000 00000000 00000003 00000080 0000c610 00000000 b6fc1d20 00000000
+[ 11.668725] dfe0: bef0ad14 bef0acf8 00011e14 b6f74c94
+[ 11.676886] Code: e1c321d4 e0433002 e0232397 e5843014 (e5953000)
+[ 11.681958] ---[ end trace 8f35917de2e76854 ]---
+
+Fixes: 521fc37be3d8 ("ath10k: Avoid override CE5 configuration for QCA99X0 chipsets")
+Reported-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> [ipq40xx/ map-ac2200]
+Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Link: https://lore.kernel.org/r/20200714205802.17688-1-hauke@hauke-m.de
+---
+ drivers/net/wireless/ath/ath10k/ahb.c | 2 +-
+ drivers/net/wireless/ath/ath10k/pci.c | 78 +++++++++++++--------------
+ 2 files changed, 38 insertions(+), 42 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath10k/ahb.c
++++ b/drivers/net/wireless/ath/ath10k/ahb.c
+@@ -820,7 +820,7 @@ err_free_irq:
+ ath10k_ahb_release_irq_legacy(ar);
+
+ err_free_pipes:
+- ath10k_pci_free_pipes(ar);
++ ath10k_pci_release_resource(ar);
+
+ err_resource_deinit:
+ ath10k_ahb_resource_deinit(ar);
+--- a/drivers/net/wireless/ath/ath10k/pci.c
++++ b/drivers/net/wireless/ath/ath10k/pci.c
+@@ -3473,6 +3473,28 @@ int ath10k_pci_setup_resource(struct ath
+
+ timer_setup(&ar_pci->rx_post_retry, ath10k_pci_rx_replenish_retry, 0);
+
++ ar_pci->attr = kmemdup(pci_host_ce_config_wlan,
++ sizeof(pci_host_ce_config_wlan),
++ GFP_KERNEL);
++ if (!ar_pci->attr)
++ return -ENOMEM;
++
++ ar_pci->pipe_config = kmemdup(pci_target_ce_config_wlan,
++ sizeof(pci_target_ce_config_wlan),
++ GFP_KERNEL);
++ if (!ar_pci->pipe_config) {
++ ret = -ENOMEM;
++ goto err_free_attr;
++ }
++
++ ar_pci->serv_to_pipe = kmemdup(pci_target_service_to_ce_map_wlan,
++ sizeof(pci_target_service_to_ce_map_wlan),
++ GFP_KERNEL);
++ if (!ar_pci->serv_to_pipe) {
++ ret = -ENOMEM;
++ goto err_free_pipe_config;
++ }
++
+ if (QCA_REV_6174(ar) || QCA_REV_9377(ar))
+ ath10k_pci_override_ce_config(ar);
+
+@@ -3480,18 +3502,31 @@ int ath10k_pci_setup_resource(struct ath
+ if (ret) {
+ ath10k_err(ar, "failed to allocate copy engine pipes: %d\n",
+ ret);
+- return ret;
++ goto err_free_serv_to_pipe;
+ }
+
+ return 0;
++
++err_free_serv_to_pipe:
++ kfree(ar_pci->serv_to_pipe);
++err_free_pipe_config:
++ kfree(ar_pci->pipe_config);
++err_free_attr:
++ kfree(ar_pci->attr);
++ return ret;
+ }
+
+ void ath10k_pci_release_resource(struct ath10k *ar)
+ {
++ struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
++
+ ath10k_pci_rx_retry_sync(ar);
+ netif_napi_del(&ar->napi);
+ ath10k_pci_ce_deinit(ar);
+ ath10k_pci_free_pipes(ar);
++ kfree(ar_pci->attr);
++ kfree(ar_pci->pipe_config);
++ kfree(ar_pci->serv_to_pipe);
+ }
+
+ static const struct ath10k_bus_ops ath10k_pci_bus_ops = {
+@@ -3601,30 +3636,6 @@ static int ath10k_pci_probe(struct pci_d
+
+ timer_setup(&ar_pci->ps_timer, ath10k_pci_ps_timer, 0);
+
+- ar_pci->attr = kmemdup(pci_host_ce_config_wlan,
+- sizeof(pci_host_ce_config_wlan),
+- GFP_KERNEL);
+- if (!ar_pci->attr) {
+- ret = -ENOMEM;
+- goto err_free;
+- }
+-
+- ar_pci->pipe_config = kmemdup(pci_target_ce_config_wlan,
+- sizeof(pci_target_ce_config_wlan),
+- GFP_KERNEL);
+- if (!ar_pci->pipe_config) {
+- ret = -ENOMEM;
+- goto err_free;
+- }
+-
+- ar_pci->serv_to_pipe = kmemdup(pci_target_service_to_ce_map_wlan,
+- sizeof(pci_target_service_to_ce_map_wlan),
+- GFP_KERNEL);
+- if (!ar_pci->serv_to_pipe) {
+- ret = -ENOMEM;
+- goto err_free;
+- }
+-
+ ret = ath10k_pci_setup_resource(ar);
+ if (ret) {
+ ath10k_err(ar, "failed to setup resource: %d\n", ret);
+@@ -3705,10 +3716,9 @@ err_unsupported:
+
+ err_free_irq:
+ ath10k_pci_free_irq(ar);
+- ath10k_pci_rx_retry_sync(ar);
+
+ err_deinit_irq:
+- ath10k_pci_deinit_irq(ar);
++ ath10k_pci_release_resource(ar);
+
+ err_sleep:
+ ath10k_pci_sleep_sync(ar);
+@@ -3720,29 +3730,18 @@ err_free_pipes:
+ err_core_destroy:
+ ath10k_core_destroy(ar);
+
+-err_free:
+- kfree(ar_pci->attr);
+- kfree(ar_pci->pipe_config);
+- kfree(ar_pci->serv_to_pipe);
+-
+ return ret;
+ }
+
+ static void ath10k_pci_remove(struct pci_dev *pdev)
+ {
+ struct ath10k *ar = pci_get_drvdata(pdev);
+- struct ath10k_pci *ar_pci;
+
+ ath10k_dbg(ar, ATH10K_DBG_PCI, "pci remove\n");
+
+ if (!ar)
+ return;
+
+- ar_pci = ath10k_pci_priv(ar);
+-
+- if (!ar_pci)
+- return;
+-
+ ath10k_core_unregister(ar);
+ ath10k_pci_free_irq(ar);
+ ath10k_pci_deinit_irq(ar);
+@@ -3750,9 +3749,6 @@ static void ath10k_pci_remove(struct pci
+ ath10k_pci_sleep_sync(ar);
+ ath10k_pci_release(ar);
+ ath10k_core_destroy(ar);
+- kfree(ar_pci->attr);
+- kfree(ar_pci->pipe_config);
+- kfree(ar_pci->serv_to_pipe);
+ }
+
+ MODULE_DEVICE_TABLE(pci, ath10k_pci_id_table);
diff --git a/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch b/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
index 417dc58436..4e59bb00e9 100644
--- a/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
+++ b/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
@@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
-@@ -3174,6 +3174,16 @@ int ath10k_core_register(struct ath10k *
+@@ -3172,6 +3172,16 @@ int ath10k_core_register(struct ath10k *
queue_work(ar->workqueue, &ar->register_work);
diff --git a/package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch b/package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch
index 37fde808db..abce361673 100644
--- a/package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch
+++ b/package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch
@@ -26,7 +26,7 @@ Forwarded: https://patchwork.kernel.org/patch/11367055/
--- a/drivers/net/wireless/ath/ath10k/htt.h
+++ b/drivers/net/wireless/ath/ath10k/htt.h
-@@ -2228,7 +2228,7 @@ struct htt_rx_chan_info {
+@@ -2242,7 +2242,7 @@ struct htt_rx_chan_info {
* Should be: sizeof(struct htt_host_rx_desc) + max rx MSDU size,
* rounded up to a cache line size.
*/
diff --git a/package/kernel/mac80211/patches/ath/930-ath10k_add_tpt_led_trigger.patch b/package/kernel/mac80211/patches/ath/930-ath10k_add_tpt_led_trigger.patch
index 8e34a810b3..2b36a559d6 100644
--- a/package/kernel/mac80211/patches/ath/930-ath10k_add_tpt_led_trigger.patch
+++ b/package/kernel/mac80211/patches/ath/930-ath10k_add_tpt_led_trigger.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -8785,6 +8785,21 @@ static int ath10k_mac_init_rd(struct ath
+@@ -9053,6 +9053,21 @@ static int ath10k_mac_init_rd(struct ath
return 0;
}
@@ -22,7 +22,7 @@
int ath10k_mac_register(struct ath10k *ar)
{
static const u32 cipher_suites[] = {
-@@ -9112,6 +9127,12 @@ int ath10k_mac_register(struct ath10k *a
+@@ -9380,6 +9395,12 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
diff --git a/package/kernel/mac80211/patches/ath/972-ath10k_fix-crash-due-to-wrong-handling-of-peer_bw_rxnss_override-parameter.patch b/package/kernel/mac80211/patches/ath/972-ath10k_fix-crash-due-to-wrong-handling-of-peer_bw_rxnss_override-parameter.patch
deleted file mode 100644
index 9cb2198ca2..0000000000
--- a/package/kernel/mac80211/patches/ath/972-ath10k_fix-crash-due-to-wrong-handling-of-peer_bw_rxnss_override-parameter.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From: Sebastian Gottschall <s.gottschall@dd-wrt.com>
-
-current handling of peer_bw_rxnss_override parameter is based on guessing the VHT160/8080 capability by rx rate. this is wrong and may lead
-to a non initialized peer_bw_rxnss_override parameter which is required since VHT160 operation mode only supports 2x2 chainmasks in addition the original code
-initialized the parameter with wrong masked values.
-This patch uses the peer phymode and peer nss information for correct initialisation of the peer_bw_rxnss_override parameter.
-if this peer information is not available, we initialize the parameter by minimum nss which is suggested by QCA as temporary workaround according
-to the QCA sourcecodes.
-
-Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
-
-v2: remove debug messages
-v3: apply some cosmetics, update documentation
-v4: fix compile warning and truncate nss to maximum of 2x2 since current chipsets only support 2x2 at vht160
-v5: handle maximum nss for chipsets supportig vht160 with 1x1 only
-v7: use more simple code variant and take care about hw/sw chainmask configuration
-v8: fix some code style issues
-v9: use SM/MS macros from code.h to simplify shift/mask handling
----
- drivers/net/wireless/ath/ath10k/mac.c | 54 +++++++++++++++++++--------
- drivers/net/wireless/ath/ath10k/wmi.c | 7 +---
- drivers/net/wireless/ath/ath10k/wmi.h | 14 ++++++-
- 3 files changed, 52 insertions(+), 23 deletions(-)
---- a/drivers/net/wireless/ath/ath10k/mac.c
-+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -2517,7 +2517,7 @@ static void ath10k_peer_assoc_h_vht(stru
- const u16 *vht_mcs_mask;
- u8 ampdu_factor;
- u8 max_nss, vht_mcs;
-- int i;
-+ int i, nss160;
-
- if (WARN_ON(ath10k_mac_vif_chan(vif, &def)))
- return;
-@@ -2577,23 +2577,45 @@ static void ath10k_peer_assoc_h_vht(stru
- __le16_to_cpu(vht_cap->vht_mcs.tx_highest);
- arg->peer_vht_rates.tx_mcs_set = ath10k_peer_assoc_h_vht_limit(
- __le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map), vht_mcs_mask);
-+ arg->peer_bw_rxnss_override = 0;
-+ nss160 = 1; /* 1x1 default config for VHT160 */
-
-- ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vht peer %pM max_mpdu %d flags 0x%x\n",
-- sta->addr, arg->peer_max_mpdu, arg->peer_flags);
-+ /* only local 4x4 configuration do support 2x2 for VHT160,
-+ * everything else must use 1x1
-+ */
-
-- if (arg->peer_vht_rates.rx_max_rate &&
-- (sta->vht_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK)) {
-- switch (arg->peer_vht_rates.rx_max_rate) {
-- case 1560:
-- /* Must be 2x2 at 160Mhz is all it can do. */
-- arg->peer_bw_rxnss_override = 2;
-- break;
-- case 780:
-- /* Can only do 1x1 at 160Mhz (Long Guard Interval) */
-- arg->peer_bw_rxnss_override = 1;
-- break;
-- }
-+ if (ar->cfg_rx_chainmask == 15)
-+ nss160 = arg->peer_num_spatial_streams <= 2 ? 1 : 2;
-+
-+ /* if peer provides 1x1 nss160 information using max rate
-+ * vht information, we reduce local nss160 to 1x1.
-+ * consider that it has been observed that some client
-+ * devices provide zero here, no matter which transmission
-+ * rate is possible. in that case the local nss configuration
-+ * will be used at maxmimum configuration possible. (see above)
-+ */
-+
-+ if (arg->peer_vht_rates.rx_max_rate == 780)
-+ nss160 = 1;
-+
-+ /* in case if peer is connected with vht160 or vht80+80,
-+ * we need to properly adjust rxnss parameters otherwise
-+ * firmware will raise a assert
-+ */
-+ switch (arg->peer_phymode) {
-+ case MODE_11AC_VHT80_80:
-+ arg->peer_bw_rxnss_override = BW_NSS_FWCONF_80_80(nss160);
-+ /* fall through */
-+ case MODE_11AC_VHT160:
-+ arg->peer_bw_rxnss_override |= BW_NSS_FWCONF_160(nss160);
-+ break;
-+ default:
-+ break;
- }
-+
-+ ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vht peer %pM max_mpdu %d flags 0x%x peer_bw_rxnss_override 0x%x\n",
-+ sta->addr, arg->peer_max_mpdu, arg->peer_flags,
-+ arg->peer_bw_rxnss_override);
- }
-
- static void ath10k_peer_assoc_h_qos(struct ath10k *ar,
-@@ -2745,9 +2767,9 @@ static int ath10k_peer_assoc_prepare(str
- ath10k_peer_assoc_h_crypto(ar, vif, sta, arg);
- ath10k_peer_assoc_h_rates(ar, vif, sta, arg);
- ath10k_peer_assoc_h_ht(ar, vif, sta, arg);
-+ ath10k_peer_assoc_h_phymode(ar, vif, sta, arg);
- ath10k_peer_assoc_h_vht(ar, vif, sta, arg);
- ath10k_peer_assoc_h_qos(ar, vif, sta, arg);
-- ath10k_peer_assoc_h_phymode(ar, vif, sta, arg);
-
- return 0;
- }
---- a/drivers/net/wireless/ath/ath10k/wmi.c
-+++ b/drivers/net/wireless/ath/ath10k/wmi.c
-@@ -7628,12 +7628,7 @@ ath10k_wmi_peer_assoc_fill_10_4(struct a
- struct wmi_10_4_peer_assoc_complete_cmd *cmd = buf;
-
- ath10k_wmi_peer_assoc_fill_10_2(ar, buf, arg);
-- if (arg->peer_bw_rxnss_override)
-- cmd->peer_bw_rxnss_override =
-- __cpu_to_le32((arg->peer_bw_rxnss_override - 1) |
-- BIT(PEER_BW_RXNSS_OVERRIDE_OFFSET));
-- else
-- cmd->peer_bw_rxnss_override = 0;
-+ cmd->peer_bw_rxnss_override = __cpu_to_le32(arg->peer_bw_rxnss_override);
- }
-
- static int
---- a/drivers/net/wireless/ath/ath10k/wmi.h
-+++ b/drivers/net/wireless/ath/ath10k/wmi.h
-@@ -6508,7 +6508,19 @@ struct wmi_10_2_peer_assoc_complete_cmd
- __le32 info0; /* WMI_PEER_ASSOC_INFO0_ */
- } __packed;
-
--#define PEER_BW_RXNSS_OVERRIDE_OFFSET 31
-+#define BW_NSS_FWCONF_MAP_ENABLE BIT(31)
-+#define BW_NSS_FWCONF_MAP_160MHZ_LSB (0)
-+#define BW_NSS_FWCONF_MAP_160MHZ_MASK (0x00000007)
-+#define BW_NSS_FWCONF_MAP_80_80MHZ_LSB (3)
-+#define BW_NSS_FWCONF_MAP_80_80MHZ_MASK (0x00000038)
-+#define BW_NSS_FWCONF_MAP_MASK (0x0000003F)
-+
-+#define GET_BW_NSS_FWCONF_160(x) (MS(x, BW_NSS_FWCONF_MAP_160MHZ) + 1)
-+#define GET_BW_NSS_FWCONF_80_80(x) (MS(x, BW_NSS_FWCONF_MAP_80_80MHZ) + 1)
-+
-+/* Values defined to set 160 MHz Bandwidth NSS Mapping into FW*/
-+#define BW_NSS_FWCONF_160(x) (BW_NSS_FWCONF_MAP_ENABLE | SM(x - 1, BW_NSS_FWCONF_MAP_160MHZ))
-+#define BW_NSS_FWCONF_80_80(x) (BW_NSS_FWCONF_MAP_ENABLE | SM(x - 1, BW_NSS_FWCONF_MAP_80_80MHZ))
-
- struct wmi_10_4_peer_assoc_complete_cmd {
- struct wmi_10_2_peer_assoc_complete_cmd cmd;
diff --git a/package/kernel/mac80211/patches/ath/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch b/package/kernel/mac80211/patches/ath/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch
deleted file mode 100644
index 4ad93ad790..0000000000
--- a/package/kernel/mac80211/patches/ath/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From: Sebastian Gottschall <s.gottschall@dd-wrt.com>
-
-starting with firmware 10.4.3.4.x series QCA changed the handling of the channel property band_center_freq1 and band_center_freq2 in vht160 operation mode
-likelly for backward compatiblity with vht80 only capable clients.
-this patch adjusts the handling to get vht160 to work again with official qca firmwares newer than 3.3
-consider that this patch will not work with older firmwares anymore. to avoid undefined behaviour this we disable vht160 capability for outdated firmwares
-Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
-
-v2: fix trailing whitespace issue and fix some typos within the commit note
----
- drivers/net/wireless/ath/ath10k/mac.c | 7 -------
- drivers/net/wireless/ath/ath10k/wmi.c | 11 ++++++++---
- 2 files changed, 8 insertions(+), 10 deletions(-)
---- a/drivers/net/wireless/ath/ath10k/mac.c
-+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -4588,13 +4588,6 @@ static struct ieee80211_sta_vht_cap ath1
- vht_cap.cap |= val;
- }
-
-- /* Currently the firmware seems to be buggy, don't enable 80+80
-- * mode until that's resolved.
-- */
-- if ((ar->vht_cap_info & IEEE80211_VHT_CAP_SHORT_GI_160) &&
-- (ar->vht_cap_info & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK) == 0)
-- vht_cap.cap |= IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ;
--
- mcs_map = 0;
- for (i = 0; i < 8; i++) {
- if ((i < ar->num_rf_chains) && (ar->cfg_tx_chainmask & BIT(i)))
---- a/drivers/net/wireless/ath/ath10k/wmi.c
-+++ b/drivers/net/wireless/ath/ath10k/wmi.c
-@@ -1713,13 +1713,18 @@ void ath10k_wmi_put_wmi_channel(struct w
- flags |= WMI_CHAN_FLAG_HT40_PLUS;
- if (arg->chan_radar)
- flags |= WMI_CHAN_FLAG_DFS;
--
-+ ch->band_center_freq2 = 0;
- ch->mhz = __cpu_to_le32(arg->freq);
- ch->band_center_freq1 = __cpu_to_le32(arg->band_center_freq1);
- if (arg->mode == MODE_11AC_VHT80_80)
- ch->band_center_freq2 = __cpu_to_le32(arg->band_center_freq2);
-- else
-- ch->band_center_freq2 = 0;
-+ if (arg->mode == MODE_11AC_VHT160) {
-+ if (arg->freq < arg->band_center_freq1)
-+ ch->band_center_freq1 = __cpu_to_le32(arg->band_center_freq1 - 40);
-+ else
-+ ch->band_center_freq1 = __cpu_to_le32(arg->band_center_freq1 + 40);
-+ ch->band_center_freq2 = __cpu_to_le32(arg->band_center_freq1);
-+ }
- ch->min_power = arg->min_power;
- ch->max_power = arg->max_power;
- ch->reg_power = arg->max_reg_power;
diff --git a/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch b/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
index d34e5c87e8..74a3028a8a 100644
--- a/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
+++ b/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
@@ -85,7 +85,7 @@ v13:
create mode 100644 drivers/net/wireless/ath/ath10k/leds.h
--- a/drivers/net/wireless/ath/ath10k/Kconfig
+++ b/drivers/net/wireless/ath/ath10k/Kconfig
-@@ -71,6 +71,16 @@ config ATH10K_DEBUGFS
+@@ -70,6 +70,16 @@ config ATH10K_DEBUGFS
If unsure, say Y to make it easier to debug problems.
@@ -148,7 +148,7 @@ v13:
.patch_load_addr = QCA9887_HW_1_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
-@@ -339,6 +342,7 @@ static const struct ath10k_hw_params ath
+@@ -340,6 +343,7 @@ static const struct ath10k_hw_params ath
.dev_id = QCA99X0_2_0_DEVICE_ID,
.bus = ATH10K_BUS_PCI,
.name = "qca99x0 hw2.0",
@@ -156,7 +156,7 @@ v13:
.patch_load_addr = QCA99X0_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.otp_exe_param = 0x00000700,
-@@ -380,6 +384,7 @@ static const struct ath10k_hw_params ath
+@@ -381,6 +385,7 @@ static const struct ath10k_hw_params ath
.dev_id = QCA9984_1_0_DEVICE_ID,
.bus = ATH10K_BUS_PCI,
.name = "qca9984/qca9994 hw1.0",
@@ -164,7 +164,7 @@ v13:
.patch_load_addr = QCA9984_HW_1_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
-@@ -428,6 +433,7 @@ static const struct ath10k_hw_params ath
+@@ -429,6 +434,7 @@ static const struct ath10k_hw_params ath
.dev_id = QCA9888_2_0_DEVICE_ID,
.bus = ATH10K_BUS_PCI,
.name = "qca9888 hw2.0",
@@ -172,7 +172,7 @@ v13:
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
-@@ -2889,6 +2895,10 @@ int ath10k_core_start(struct ath10k *ar,
+@@ -2887,6 +2893,10 @@ int ath10k_core_start(struct ath10k *ar,
goto err_hif_stop;
}
@@ -183,7 +183,7 @@ v13:
return 0;
err_hif_stop:
-@@ -3147,9 +3157,18 @@ static void ath10k_core_register_work(st
+@@ -3145,9 +3155,18 @@ static void ath10k_core_register_work(st
goto err_spectral_destroy;
}
@@ -202,7 +202,7 @@ v13:
err_spectral_destroy:
ath10k_spectral_destroy(ar);
err_debug_destroy:
-@@ -3195,6 +3214,8 @@ void ath10k_core_unregister(struct ath10
+@@ -3193,6 +3212,8 @@ void ath10k_core_unregister(struct ath10
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
return;
@@ -221,7 +221,7 @@ v13:
#include "htt.h"
#include "htc.h"
-@@ -1182,6 +1183,13 @@ struct ath10k {
+@@ -1216,6 +1217,13 @@ struct ath10k {
} testmode;
struct {
@@ -407,7 +407,7 @@ v13:
/* Rates */
--- a/drivers/net/wireless/ath/ath10k/wmi-ops.h
+++ b/drivers/net/wireless/ath/ath10k/wmi-ops.h
-@@ -217,7 +217,10 @@ struct wmi_ops {
+@@ -224,7 +224,10 @@ struct wmi_ops {
struct sk_buff *(*gen_bb_timing)
(struct ath10k *ar,
const struct wmi_bb_timing_cfg_arg *arg);
@@ -418,7 +418,7 @@ v13:
};
int ath10k_wmi_cmd_send(struct ath10k *ar, struct sk_buff *skb, u32 cmd_id);
-@@ -1090,6 +1093,35 @@ ath10k_wmi_force_fw_hang(struct ath10k *
+@@ -1120,6 +1123,35 @@ ath10k_wmi_force_fw_hang(struct ath10k *
return ath10k_wmi_cmd_send(ar, skb, ar->wmi.cmd->force_fw_hang_cmdid);
}
@@ -456,7 +456,7 @@ v13:
{
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
-@@ -4462,6 +4462,8 @@ static const struct wmi_ops wmi_tlv_ops
+@@ -4583,6 +4583,8 @@ static const struct wmi_ops wmi_tlv_ops
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
@@ -467,7 +467,7 @@ v13:
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
-@@ -7448,6 +7448,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
+@@ -7471,6 +7471,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
return skb;
}
@@ -517,7 +517,7 @@ v13:
static struct sk_buff *
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
enum wmi_sta_ps_mode psmode)
-@@ -9105,6 +9148,9 @@ static const struct wmi_ops wmi_ops = {
+@@ -9129,6 +9172,9 @@ static const struct wmi_ops wmi_ops = {
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@@ -527,7 +527,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
-@@ -9175,6 +9221,8 @@ static const struct wmi_ops wmi_10_1_ops
+@@ -9199,6 +9245,8 @@ static const struct wmi_ops wmi_10_1_ops
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@@ -536,7 +536,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
-@@ -9247,6 +9295,8 @@ static const struct wmi_ops wmi_10_2_ops
+@@ -9271,6 +9319,8 @@ static const struct wmi_ops wmi_10_2_ops
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
@@ -545,7 +545,7 @@ v13:
/* .gen_pdev_enable_adaptive_cca not implemented */
};
-@@ -9318,6 +9368,8 @@ static const struct wmi_ops wmi_10_2_4_o
+@@ -9342,6 +9392,8 @@ static const struct wmi_ops wmi_10_2_4_o
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
.gen_bb_timing = ath10k_wmi_10_2_4_op_gen_bb_timing,
@@ -554,7 +554,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
-@@ -9398,6 +9450,8 @@ static const struct wmi_ops wmi_10_4_ops
+@@ -9422,6 +9474,8 @@ static const struct wmi_ops wmi_10_4_ops
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
.gen_echo = ath10k_wmi_op_gen_echo,
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
@@ -565,7 +565,7 @@ v13:
int ath10k_wmi_attach(struct ath10k *ar)
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
-@@ -3014,6 +3014,41 @@ enum wmi_10_4_feature_mask {
+@@ -3016,6 +3016,41 @@ enum wmi_10_4_feature_mask {
};
diff --git a/package/kernel/mac80211/patches/ath/975-ath10k-use-tpt-trigger-by-default.patch b/package/kernel/mac80211/patches/ath/975-ath10k-use-tpt-trigger-by-default.patch
index 834bbf809f..db9a88e000 100644
--- a/package/kernel/mac80211/patches/ath/975-ath10k-use-tpt-trigger-by-default.patch
+++ b/package/kernel/mac80211/patches/ath/975-ath10k-use-tpt-trigger-by-default.patch
@@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
--- a/drivers/net/wireless/ath/ath10k/core.h
+++ b/drivers/net/wireless/ath/ath10k/core.h
-@@ -1235,6 +1235,10 @@ struct ath10k {
+@@ -1269,6 +1269,10 @@ struct ath10k {
bool coex_support;
int coex_gpio_pin;
@@ -25,7 +25,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
+#endif
+
/* must be last */
- u8 drv_priv[0] __aligned(sizeof(void *));
+ u8 drv_priv[] __aligned(sizeof(void *));
};
--- a/drivers/net/wireless/ath/ath10k/leds.c
+++ b/drivers/net/wireless/ath/ath10k/leds.c
@@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
if (ret)
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -9144,7 +9144,7 @@ int ath10k_mac_register(struct ath10k *a
+@@ -9397,7 +9397,7 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
#ifdef CPTCFG_MAC80211_LEDS
diff --git a/package/kernel/mac80211/patches/ath/980-ath10k-fix-max-antenna-gain-unit.patch b/package/kernel/mac80211/patches/ath/980-ath10k-fix-max-antenna-gain-unit.patch
index 7742c27966..9498e02462 100644
--- a/package/kernel/mac80211/patches/ath/980-ath10k-fix-max-antenna-gain-unit.patch
+++ b/package/kernel/mac80211/patches/ath/980-ath10k-fix-max-antenna-gain-unit.patch
@@ -38,7 +38,7 @@ Forwarded: https://patchwork.kernel.org/patch/10986723/
if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
arg.ssid = arvif->u.ap.ssid;
-@@ -3170,7 +3170,7 @@ static int ath10k_update_channel_list(st
+@@ -3194,7 +3194,7 @@ static int ath10k_update_channel_list(st
ch->min_power = 0;
ch->max_power = channel->max_power * 2;
ch->max_reg_power = channel->max_reg_power * 2;
diff --git a/package/kernel/mac80211/patches/ath/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch b/package/kernel/mac80211/patches/ath/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch
index 1501d4bc0c..fbb6fad660 100644
--- a/package/kernel/mac80211/patches/ath/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch
+++ b/package/kernel/mac80211/patches/ath/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch
@@ -89,7 +89,7 @@ Forwarded: no
if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
arg.ssid = arvif->u.ap.ssid;
-@@ -3170,7 +3206,8 @@ static int ath10k_update_channel_list(st
+@@ -3194,7 +3230,8 @@ static int ath10k_update_channel_list(st
ch->min_power = 0;
ch->max_power = channel->max_power * 2;
ch->max_reg_power = channel->max_reg_power * 2;
diff --git a/package/kernel/mac80211/patches/brcm/860-brcmfmac-register-wiphy-s-during-module_init.patch b/package/kernel/mac80211/patches/brcm/860-brcmfmac-register-wiphy-s-during-module_init.patch
index c18a5bfa4a..1b965087d3 100644
--- a/package/kernel/mac80211/patches/brcm/860-brcmfmac-register-wiphy-s-during-module_init.patch
+++ b/package/kernel/mac80211/patches/brcm/860-brcmfmac-register-wiphy-s-during-module_init.patch
@@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-@@ -1554,6 +1554,7 @@ int __init brcmf_core_init(void)
+@@ -1551,6 +1551,7 @@ int __init brcmf_core_init(void)
{
if (!schedule_work(&brcmf_driver_work))
return -EBUSY;
diff --git a/package/kernel/mac80211/patches/brcm/861-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch b/package/kernel/mac80211/patches/brcm/861-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch
index 81c170c43f..069aab8249 100644
--- a/package/kernel/mac80211/patches/brcm/861-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch
+++ b/package/kernel/mac80211/patches/brcm/861-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch
@@ -10,7 +10,7 @@ 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
-@@ -711,8 +711,36 @@ static struct wireless_dev *brcmf_cfg802
+@@ -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;
diff --git a/package/kernel/mac80211/patches/brcm/862-brcmfmac-Disable-power-management.patch b/package/kernel/mac80211/patches/brcm/862-brcmfmac-Disable-power-management.patch
index f65a7903c4..8a20ae133a 100644
--- a/package/kernel/mac80211/patches/brcm/862-brcmfmac-Disable-power-management.patch
+++ b/package/kernel/mac80211/patches/brcm/862-brcmfmac-Disable-power-management.patch
@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -2941,6 +2941,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
+@@ -2953,6 +2953,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
* preference in cfg struct to apply this to
* FW later while initializing the dongle
*/
diff --git a/package/kernel/mac80211/patches/brcm/998-survey.patch b/package/kernel/mac80211/patches/brcm/998-survey.patch
index 7f53c97470..bcab2e3f3c 100644
--- a/package/kernel/mac80211/patches/brcm/998-survey.patch
+++ b/package/kernel/mac80211/patches/brcm/998-survey.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -2893,6 +2893,63 @@ done:
+@@ -2905,6 +2905,63 @@ done:
}
static int
@@ -64,7 +64,7 @@
brcmf_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *ndev,
int idx, u8 *mac, struct station_info *sinfo)
{
-@@ -2982,6 +3039,7 @@ static s32 brcmf_inform_single_bss(struc
+@@ -2994,6 +3051,7 @@ static s32 brcmf_inform_single_bss(struc
struct brcmu_chan ch;
u16 channel;
u32 freq;
@@ -72,7 +72,7 @@
u16 notify_capability;
u16 notify_interval;
u8 *notify_ie;
-@@ -3006,6 +3064,17 @@ static s32 brcmf_inform_single_bss(struc
+@@ -3018,6 +3076,17 @@ static s32 brcmf_inform_single_bss(struc
band = NL80211_BAND_5GHZ;
freq = ieee80211_channel_to_frequency(channel, band);
@@ -90,7 +90,7 @@
bss_data.chan = ieee80211_get_channel(wiphy, freq);
bss_data.scan_width = NL80211_BSS_CHAN_WIDTH_20;
bss_data.boottime_ns = ktime_to_ns(ktime_get_boottime());
-@@ -5423,6 +5492,7 @@ static struct cfg80211_ops brcmf_cfg8021
+@@ -5470,6 +5539,7 @@ static struct cfg80211_ops brcmf_cfg8021
.leave_ibss = brcmf_cfg80211_leave_ibss,
.get_station = brcmf_cfg80211_get_station,
.dump_station = brcmf_cfg80211_dump_station,
@@ -100,7 +100,7 @@
.add_key = brcmf_cfg80211_add_key,
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-@@ -1352,6 +1352,8 @@ int brcmf_attach(struct device *dev)
+@@ -1349,6 +1349,8 @@ int brcmf_attach(struct device *dev)
/* Link to bus module */
drvr->hdrlen = 0;
@@ -109,7 +109,7 @@
/* Attach and link in the protocol */
ret = brcmf_proto_attach(drvr);
-@@ -1434,6 +1436,12 @@ void brcmf_detach(struct device *dev)
+@@ -1431,6 +1433,12 @@ void brcmf_detach(struct device *dev)
if (drvr == NULL)
return;
diff --git a/package/kernel/mac80211/patches/build/015-ipw200-mtu.patch b/package/kernel/mac80211/patches/build/015-ipw200-mtu.patch
index 59d3b62f9d..68db4f72d3 100644
--- a/package/kernel/mac80211/patches/build/015-ipw200-mtu.patch
+++ b/package/kernel/mac80211/patches/build/015-ipw200-mtu.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
-@@ -11479,6 +11479,15 @@ static const struct attribute_group ipw_
+@@ -11470,6 +11470,15 @@ static const struct attribute_group ipw_
.attrs = ipw_sysfs_entries,
};
@@ -16,7 +16,7 @@
#ifdef CPTCFG_IPW2200_PROMISCUOUS
static int ipw_prom_open(struct net_device *dev)
{
-@@ -11527,15 +11536,6 @@ static netdev_tx_t ipw_prom_hard_start_x
+@@ -11518,15 +11527,6 @@ static netdev_tx_t ipw_prom_hard_start_x
return NETDEV_TX_OK;
}
diff --git a/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch b/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch
index 93b6992f72..c00ab7c786 100644
--- a/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch
+++ b/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch
@@ -1,6 +1,6 @@
--- a/local-symbols
+++ b/local-symbols
-@@ -417,43 +417,6 @@ USB_SIERRA_NET=
+@@ -424,43 +424,6 @@ USB_SIERRA_NET=
USB_VL600=
USB_NET_CH9200=
USB_NET_AQC111=
@@ -69,7 +69,7 @@
depends on B43 && B43_SSB && SSB_SDIOHOST_POSSIBLE
- select SSB_SDIOHOST
+ depends on SSB_SDIOHOST
- ---help---
+ help
Broadcom 43xx device support for Soft-MAC SDIO devices.
@@ -96,13 +96,13 @@ config B43_SDIO
@@ -117,7 +117,7 @@
- select SSB
+ depends on SSB
depends on FW_LOADER
- ---help---
+ help
b43legacy is a driver for 802.11b devices from Broadcom (BCM4301 and
@@ -25,15 +25,15 @@ config B43LEGACY
config B43LEGACY_PCI_AUTOSELECT
@@ -192,7 +192,7 @@
select BRCMUTIL
--- a/Kconfig.local
+++ b/Kconfig.local
-@@ -1255,117 +1255,6 @@ config BACKPORTED_USB_NET_CH9200
+@@ -1276,117 +1276,6 @@ config BACKPORTED_USB_NET_CH9200
config BACKPORTED_USB_NET_AQC111
tristate
default USB_NET_AQC111
diff --git a/package/kernel/mac80211/patches/rt2x00/001-rt2800-enable-MFP-support-unconditionally.patch b/package/kernel/mac80211/patches/rt2x00/001-rt2800-enable-MFP-support-unconditionally.patch
deleted file mode 100644
index 5dfcf5bf3b..0000000000
--- a/package/kernel/mac80211/patches/rt2x00/001-rt2800-enable-MFP-support-unconditionally.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From b6b15e20421fefae9f78274f9fef80bc97bf5d5c Mon Sep 17 00:00:00 2001
-From: Rui Salvaterra <rsalvaterra@gmail.com>
-Date: Mon, 25 May 2020 14:49:07 +0100
-Subject: [PATCH] rt2800: enable MFP support unconditionally
-
-This gives us WPA3 support out of the box without having to manually disable
-hardware crypto. The driver will fall back to software crypto if the connection
-requires management frame protection.
-
-Suggested-by: Stanislaw Gruszka <stf_xl@wp.pl>
-Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
-Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-Link: https://lore.kernel.org/r/20200525134906.1672-1-rsalvaterra@gmail.com
----
- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 4 +---
- drivers/net/wireless/ralink/rt2x00/rt2x00mac.c | 3 ++-
- 2 files changed, 3 insertions(+), 4 deletions(-)
-
---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -9971,9 +9971,7 @@ static int rt2800_probe_hw_mode(struct r
- if (!rt2x00_is_usb(rt2x00dev))
- ieee80211_hw_set(rt2x00dev->hw, HOST_BROADCAST_PS_BUFFERING);
-
-- /* Set MFP if HW crypto is disabled. */
-- if (rt2800_hwcrypt_disabled(rt2x00dev))
-- ieee80211_hw_set(rt2x00dev->hw, MFP_CAPABLE);
-+ ieee80211_hw_set(rt2x00dev->hw, MFP_CAPABLE);
-
- SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev);
- SET_IEEE80211_PERM_ADDR(rt2x00dev->hw,
---- a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
-@@ -468,7 +468,8 @@ int rt2x00mac_set_key(struct ieee80211_h
- if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
- return 0;
-
-- if (!rt2x00_has_cap_hw_crypto(rt2x00dev))
-+ /* The hardware can't do MFP */
-+ if (!rt2x00_has_cap_hw_crypto(rt2x00dev) || (sta && sta->mfp))
- return -EOPNOTSUPP;
-
- /*
diff --git a/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch b/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
index 6cd504228f..da76b34fab 100644
--- a/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
+++ b/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
@@ -1,6 +1,6 @@
--- a/local-symbols
+++ b/local-symbols
-@@ -318,6 +318,7 @@ RT2X00_LIB_FIRMWARE=
+@@ -321,6 +321,7 @@ RT2X00_LIB_FIRMWARE=
RT2X00_LIB_CRYPTO=
RT2X00_LIB_LEDS=
RT2X00_LIB_DEBUGFS=
@@ -25,7 +25,7 @@
+ select RT2X00_LIB_EEPROM
select RT2800_LIB
select RT2800_LIB_MMIO
- ---help---
+ help
@@ -266,6 +268,9 @@ config RT2X00_LIB_FIRMWARE
config RT2X00_LIB_CRYPTO
bool
diff --git a/package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch b/package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch
index 43754c43c2..7338eb15b2 100644
--- a/package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch
+++ b/package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch
@@ -17,7 +17,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
select RT2800_LIB
select RT2800_LIB_MMIO
+ select MTD if SOC_RT288X || SOC_RT305X
- ---help---
+ help
This adds support for Ralink WiSoC devices.
Supported chips: RT2880, RT3050, RT3052, RT3350, RT3352.
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
diff --git a/package/kernel/mac80211/patches/subsys/090-wireless-Use-linux-stddef.h-instead-of-stddef.h.patch b/package/kernel/mac80211/patches/subsys/090-wireless-Use-linux-stddef.h-instead-of-stddef.h.patch
deleted file mode 100644
index c81cc063c6..0000000000
--- a/package/kernel/mac80211/patches/subsys/090-wireless-Use-linux-stddef.h-instead-of-stddef.h.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From e1f04bf9d38633f0bf9d041089366fea0ad22623 Mon Sep 17 00:00:00 2001
-From: Hauke Mehrtens <hauke@hauke-m.de>
-Date: Thu, 21 May 2020 19:50:05 +0200
-Subject: [PATCH] wireless: Use linux/stddef.h instead of stddef.h
-
-When compiling inside the kernel include linux/stddef.h instead of
-stddef.h. When I compile this header file in backports for power PC I
-run into a conflict with ptrdiff_t. I was unable to reproduce this in
-mainline kernel. I still would like to fix this problem in the kernel.
-
-Fixes: 6989310f5d43 ("wireless: Use offsetof instead of custom macro.")
-Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
----
- include/uapi/linux/wireless.h | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
---- a/include/uapi/linux/wireless.h
-+++ b/include/uapi/linux/wireless.h
-@@ -74,7 +74,11 @@
- #include <linux/socket.h> /* for "struct sockaddr" et al */
- #include <linux/if.h> /* for IFNAMSIZ and co... */
-
--#include <stddef.h> /* for offsetof */
-+#ifdef __KERNEL__
-+# include <linux/stddef.h> /* for offsetof */
-+#else
-+# include <stddef.h> /* for offsetof */
-+#endif
-
- /***************************** VERSION *****************************/
- /*
diff --git a/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch b/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch
index 5556f9b72a..a94f9d8fdb 100644
--- a/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch
+++ b/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch
@@ -654,7 +654,7 @@
- depends on CRYPTO_GCM
depends on CRYPTO_CMAC
depends on CRC32
- ---help---
+ help
--- a/net/mac80211/aes_gmac.h
+++ b/net/mac80211/aes_gmac.h
@@ -12,10 +12,22 @@
diff --git a/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch b/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch
index cceb6d5d7d..e56055caff 100644
--- a/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch
+++ b/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch
@@ -2,11 +2,11 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
-@@ -1186,7 +1186,6 @@ static int ieee80211_stop_ap(struct wiph
+@@ -1197,7 +1197,6 @@ static int ieee80211_stop_ap(struct wiph
sdata->vif.bss_conf.ftmr_params = NULL;
__sta_info_flush(sdata, true);
- ieee80211_free_keys(sdata, true);
sdata->vif.bss_conf.enable_beacon = false;
- sdata->vif.bss_conf.ssid_len = 0;
+ sdata->beacon_rate_set = false;
diff --git a/package/kernel/mac80211/patches/subsys/130-disable-fils.patch b/package/kernel/mac80211/patches/subsys/130-disable-fils.patch
index 5ca64d2c73..9c6e971f9d 100644
--- a/package/kernel/mac80211/patches/subsys/130-disable-fils.patch
+++ b/package/kernel/mac80211/patches/subsys/130-disable-fils.patch
@@ -21,7 +21,7 @@ Disable FILS support, since it pulls in crypto hash support
* FILS AEAD for (Re)Association Request/Response frames
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
-@@ -586,7 +586,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_
+@@ -591,7 +591,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_
NL80211_FEATURE_MAC_ON_CREATE |
NL80211_FEATURE_USERSPACE_MPM |
NL80211_FEATURE_FULL_AP_CLIENT_STATE;
diff --git a/package/kernel/mac80211/patches/subsys/132-mac80211-remove-cmac-dependency.patch b/package/kernel/mac80211/patches/subsys/132-mac80211-remove-cmac-dependency.patch
index 2a9c09b4ad..df67d2f101 100644
--- a/package/kernel/mac80211/patches/subsys/132-mac80211-remove-cmac-dependency.patch
+++ b/package/kernel/mac80211/patches/subsys/132-mac80211-remove-cmac-dependency.patch
@@ -6,5 +6,5 @@
depends on CRYPTO_AES
- depends on CRYPTO_CMAC
depends on CRC32
- ---help---
+ help
This option enables the hardware independent IEEE 802.11
diff --git a/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch b/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch
index 84cfaea8a4..56f8e7b8d9 100644
--- a/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch
+++ b/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch
@@ -1,6 +1,6 @@
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -4119,6 +4119,12 @@ out:
+@@ -4133,6 +4133,12 @@ out:
netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
struct net_device *dev)
{
diff --git a/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch b/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch
index 2f515be8f0..8a717558a7 100644
--- a/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch
+++ b/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch
@@ -1,6 +1,6 @@
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
-@@ -316,7 +316,7 @@ void ieee80211_restart_hw(struct ieee802
+@@ -321,7 +321,7 @@ void ieee80211_restart_hw(struct ieee802
}
EXPORT_SYMBOL(ieee80211_restart_hw);
@@ -9,7 +9,7 @@
static int ieee80211_ifa_changed(struct notifier_block *nb,
unsigned long data, void *arg)
{
-@@ -375,7 +375,7 @@ static int ieee80211_ifa_changed(struct
+@@ -380,7 +380,7 @@ static int ieee80211_ifa_changed(struct
}
#endif
@@ -18,7 +18,7 @@
static int ieee80211_ifa6_changed(struct notifier_block *nb,
unsigned long data, void *arg)
{
-@@ -1292,14 +1292,14 @@ int ieee80211_register_hw(struct ieee802
+@@ -1301,14 +1301,14 @@ int ieee80211_register_hw(struct ieee802
rtnl_unlock();
@@ -35,7 +35,7 @@
local->ifa6_notifier.notifier_call = ieee80211_ifa6_changed;
result = register_inet6addr_notifier(&local->ifa6_notifier);
if (result)
-@@ -1308,13 +1308,13 @@ int ieee80211_register_hw(struct ieee802
+@@ -1317,13 +1317,13 @@ int ieee80211_register_hw(struct ieee802
return 0;
@@ -52,7 +52,7 @@
fail_ifa:
#endif
wiphy_unregister(local->hw.wiphy);
-@@ -1342,10 +1342,10 @@ void ieee80211_unregister_hw(struct ieee
+@@ -1351,10 +1351,10 @@ void ieee80211_unregister_hw(struct ieee
tasklet_kill(&local->tx_pending_tasklet);
tasklet_kill(&local->tasklet);
diff --git a/package/kernel/mac80211/patches/subsys/210-ap_scan.patch b/package/kernel/mac80211/patches/subsys/210-ap_scan.patch
index 32f4ac07db..a4c3ca6f47 100644
--- a/package/kernel/mac80211/patches/subsys/210-ap_scan.patch
+++ b/package/kernel/mac80211/patches/subsys/210-ap_scan.patch
@@ -1,6 +1,6 @@
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
-@@ -2317,7 +2317,7 @@ static int ieee80211_scan(struct wiphy *
+@@ -2344,7 +2344,7 @@ static int ieee80211_scan(struct wiphy *
* the frames sent while scanning on other channel will be
* lost)
*/
diff --git a/package/kernel/mac80211/patches/subsys/300-mac80211-optimize-skb-resizing.patch b/package/kernel/mac80211/patches/subsys/300-mac80211-optimize-skb-resizing.patch
index 13fb2fd077..41f8eb5a65 100644
--- a/package/kernel/mac80211/patches/subsys/300-mac80211-optimize-skb-resizing.patch
+++ b/package/kernel/mac80211/patches/subsys/300-mac80211-optimize-skb-resizing.patch
@@ -24,8 +24,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
-@@ -1801,6 +1801,9 @@ int ieee80211_tx_control_port(struct wip
- const u8 *dest, __be16 proto, bool unencrypted);
+@@ -1809,6 +1809,9 @@ int ieee80211_tx_control_port(struct wip
+ u64 *cookie);
int ieee80211_probe_mesh_link(struct wiphy *wiphy, struct net_device *dev,
const u8 *buf, size_t len);
+int ieee80211_skb_resize(struct ieee80211_local *local,
@@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata,
--- a/net/mac80211/status.c
+++ b/net/mac80211/status.c
-@@ -828,6 +828,11 @@ void ieee80211_tx_monitor(struct ieee802
+@@ -835,6 +835,11 @@ void ieee80211_tx_monitor(struct ieee802
struct net_device *prev_dev = NULL;
int rtap_len;
@@ -143,7 +143,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
ieee80211_free_txskb(&local->hw, skb);
return;
}
-@@ -2796,29 +2802,13 @@ static struct sk_buff *ieee80211_build_h
+@@ -2809,29 +2815,13 @@ static struct sk_buff *ieee80211_build_h
}
skb_pull(skb, skip_header_bytes);
@@ -179,7 +179,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
}
if (encaps_data)
-@@ -3433,7 +3423,6 @@ static bool ieee80211_xmit_fast(struct i
+@@ -3446,7 +3436,6 @@ static bool ieee80211_xmit_fast(struct i
struct ieee80211_local *local = sdata->local;
u16 ethertype = (skb->data[12] << 8) | skb->data[13];
int extra_head = fast_tx->hdr_len - (ETH_HLEN - 2);
@@ -187,7 +187,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct ethhdr eth;
struct ieee80211_tx_info *info;
struct ieee80211_hdr *hdr = (void *)fast_tx->hdr;
-@@ -3485,10 +3474,7 @@ static bool ieee80211_xmit_fast(struct i
+@@ -3498,10 +3487,7 @@ static bool ieee80211_xmit_fast(struct i
* as the may-encrypt argument for the resize to not account for
* more room than we already have in 'extra_head'
*/
diff --git a/package/kernel/mac80211/patches/subsys/400-allow-ibss-mixed.patch b/package/kernel/mac80211/patches/subsys/400-allow-ibss-mixed.patch
index 52200b6ecc..feb6b5b11e 100644
--- a/package/kernel/mac80211/patches/subsys/400-allow-ibss-mixed.patch
+++ b/package/kernel/mac80211/patches/subsys/400-allow-ibss-mixed.patch
@@ -5,7 +5,7 @@ and we should ignore this.
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -613,21 +613,6 @@ static int wiphy_verify_combinations(str
+@@ -612,21 +612,6 @@ static int wiphy_verify_combinations(str
c->limits[j].max > 1))
return -EINVAL;
diff --git a/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch b/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch
index f4573f124a..09c5857623 100644
--- a/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch
+++ b/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch
@@ -1,6 +1,6 @@
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
-@@ -3552,6 +3552,7 @@ struct cfg80211_update_owe_info {
+@@ -3610,6 +3610,7 @@ struct mgmt_frame_regs {
* (as advertised by the nl80211 feature flag.)
* @get_tx_power: store the current TX power into the dbm variable;
* return 0 if successful
@@ -8,7 +8,7 @@
*
* @set_wds_peer: set the WDS peer for a WDS interface
*
-@@ -3874,6 +3875,7 @@ struct cfg80211_ops {
+@@ -3932,6 +3933,7 @@ struct cfg80211_ops {
enum nl80211_tx_power_setting type, int mbm);
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
int *dbm);
@@ -18,7 +18,7 @@
const u8 *addr);
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
-@@ -1504,6 +1504,7 @@ enum ieee80211_smps_mode {
+@@ -1519,6 +1519,7 @@ enum ieee80211_smps_mode {
*
* @power_level: requested transmit power (in dBm), backward compatibility
* value only that is set to the minimum of all interfaces
@@ -26,7 +26,7 @@
*
* @chandef: the channel definition to tune to
* @radar_enabled: whether radar detection is enabled
-@@ -1524,6 +1525,7 @@ enum ieee80211_smps_mode {
+@@ -1539,6 +1540,7 @@ enum ieee80211_smps_mode {
struct ieee80211_conf {
u32 flags;
int power_level, dynamic_ps_timeout;
@@ -36,9 +36,9 @@
u8 ps_dtim_period;
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
-@@ -2470,6 +2470,9 @@ enum nl80211_commands {
- * no roaming occurs between the reauth threshold and PMK expiration,
- * disassociation is still forced.
+@@ -2505,6 +2505,9 @@ enum nl80211_commands {
+ * @NL80211_ATTR_HE_6GHZ_CAPABILITY: HE 6 GHz Band Capability element (from
+ * association request when used with NL80211_CMD_NEW_STATION).
*
+ * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce
+ * transmit power to stay within regulatory limits. u32, dBi.
@@ -46,9 +46,9 @@
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
-@@ -2945,6 +2948,8 @@ enum nl80211_attrs {
- NL80211_ATTR_PMK_LIFETIME,
- NL80211_ATTR_PMK_REAUTH_THRESHOLD,
+@@ -2987,6 +2990,8 @@ enum nl80211_attrs {
+
+ NL80211_ATTR_HE_6GHZ_CAPABILITY,
+ NL80211_ATTR_WIPHY_ANTENNA_GAIN,
+
@@ -57,7 +57,7 @@
__NL80211_ATTR_AFTER_LAST,
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
-@@ -2582,6 +2582,19 @@ static int ieee80211_get_tx_power(struct
+@@ -2609,6 +2609,19 @@ static int ieee80211_get_tx_power(struct
return 0;
}
@@ -77,7 +77,7 @@
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
const u8 *addr)
{
-@@ -4004,6 +4017,7 @@ const struct cfg80211_ops mac80211_confi
+@@ -4039,6 +4052,7 @@ const struct cfg80211_ops mac80211_confi
.set_wiphy_params = ieee80211_set_wiphy_params,
.set_tx_power = ieee80211_set_tx_power,
.get_tx_power = ieee80211_get_tx_power,
@@ -87,7 +87,7 @@
CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd)
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
-@@ -1380,6 +1380,7 @@ struct ieee80211_local {
+@@ -1385,6 +1385,7 @@ struct ieee80211_local {
int dynamic_ps_forced_timeout;
int user_power_level; /* in dBm, for all interfaces */
@@ -97,7 +97,7 @@
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
-@@ -93,7 +93,7 @@ static u32 ieee80211_hw_conf_chan(struct
+@@ -96,7 +96,7 @@ static u32 ieee80211_hw_conf_chan(struct
struct ieee80211_sub_if_data *sdata;
struct cfg80211_chan_def chandef = {};
u32 changed = 0;
@@ -106,7 +106,7 @@
u32 offchannel_flag;
offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL;
-@@ -152,6 +152,12 @@ static u32 ieee80211_hw_conf_chan(struct
+@@ -157,6 +157,12 @@ static u32 ieee80211_hw_conf_chan(struct
}
rcu_read_unlock();
@@ -119,7 +119,7 @@
if (local->hw.conf.power_level != power) {
changed |= IEEE80211_CONF_CHANGE_POWER;
local->hw.conf.power_level = power;
-@@ -656,6 +662,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_
+@@ -665,6 +671,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_
IEEE80211_RADIOTAP_MCS_HAVE_BW;
local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI |
IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH;
@@ -129,15 +129,15 @@
local->hw.max_mtu = IEEE80211_MAX_DATA_LEN;
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -661,6 +661,7 @@ const struct nla_policy nl80211_policy[N
- [NL80211_ATTR_CONTROL_PORT_NO_PREAUTH] = { .type = NLA_FLAG },
- [NL80211_ATTR_PMK_LIFETIME] = NLA_POLICY_MIN(NLA_U32, 1),
- [NL80211_ATTR_PMK_REAUTH_THRESHOLD] = NLA_POLICY_RANGE(NLA_U8, 1, 100),
+@@ -658,6 +658,7 @@ static const struct nla_policy nl80211_p
+ .type = NLA_EXACT_LEN,
+ .len = sizeof(struct ieee80211_he_6ghz_capa),
+ },
+ [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 },
};
/* policy for the key attributes */
-@@ -3132,6 +3133,20 @@ static int nl80211_set_wiphy(struct sk_b
+@@ -3136,6 +3137,20 @@ static int nl80211_set_wiphy(struct sk_b
if (result)
return result;
}
diff --git a/package/kernel/mac80211/realtek.mk b/package/kernel/mac80211/realtek.mk
index 19b54e07d7..bcf35e35c4 100644
--- a/package/kernel/mac80211/realtek.mk
+++ b/package/kernel/mac80211/realtek.mk
@@ -26,7 +26,7 @@ config-$(call config_package,rtl8723bs) += RTL8723BS
config-y += STAGING
config-$(call config_package,rtw88) += RTW88 RTW88_CORE RTW88_PCI
-config-y += RTW88_8822BE RTW88_8822CE
+config-y += RTW88_8822BE RTW88_8822CE RTW88_8723DE
define KernelPackage/rtl818x/Default
$(call KernelPackage/mac80211/Default)
@@ -177,11 +177,18 @@ endef
define KernelPackage/rtw88
$(call KernelPackage/mac80211/Default)
- TITLE:=Realtek RTL8822BE/RTL8822CE
+ TITLE:=Realtek RTL8822BE/RTL8822CE/RTL8723DE
DEPENDS+= @(PCI_SUPPORT) +kmod-mac80211 +@DRIVER_11AC_SUPPORT +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT
- FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtw88.ko \
- $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtwpci.ko
- AUTOLOAD:=$(call AutoProbe,rtwpci)
+ FILES:=\
+ $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtw88_8822be.ko \
+ $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtw88_8822b.ko \
+ $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtw88_8822ce.ko \
+ $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtw88_8822c.ko \
+ $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtw88_8723de.ko \
+ $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtw88_8723d.ko \
+ $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtw88_core.ko \
+ $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtw88_pci.ko
+ AUTOLOAD:=$(call AutoProbe,rtw88_8822be rtw88_8822ce rtw88_8723de)
endef
define KernelPackage/rtl8723bs