From ed2015c38617ed6624471e77f27fbb0c58c8c660 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 20 Jun 2020 23:11:17 +0200 Subject: [PATCH] mac80211: Update to version 5.8-rc2-1 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 [ipq40xx/ map-ac2200] Signed-off-by: Hauke Mehrtens --- package/kernel/mac80211/Makefile | 6 +- .../ath/080-ath10k_thermal_config.patch | 4 +- .../patches/ath/402-ath_regd_optional.patch | 2 +- .../patches/ath/404-regd_no_assoc_hints.patch | 4 +- .../patches/ath/501-ath9k_ahb_init.patch | 2 +- .../patches/ath/530-ath9k_extra_leds.patch | 2 +- .../patches/ath/542-ath9k_debugfs_diag.patch | 6 +- .../ath/543-ath9k_entropy_from_adc.patch | 10 +- ...pointer-dereference-in-AHB-device-pr.patch | 262 +++++++++++++++ ...21-ath10k_init_devices_synchronously.patch | 2 +- ...h10k-increase-rx-buffer-size-to-2048.patch | 2 +- .../ath/930-ath10k_add_tpt_led_trigger.patch | 4 +- ...-of-peer_bw_rxnss_override-parameter.patch | 144 --------- ...dling-for-VHT160-in-recent-firmwares.patch | 53 --- ...rolling-support-for-various-chipsets.patch | 36 +-- ...75-ath10k-use-tpt-trigger-by-default.patch | 6 +- ...980-ath10k-fix-max-antenna-gain-unit.patch | 2 +- ...-power-reduction-for-US-regulatory-d.patch | 2 +- ...-register-wiphy-s-during-module_init.patch | 2 +- ...und-bug-with-some-inconsistent-BSSes.patch | 2 +- ...62-brcmfmac-Disable-power-management.patch | 2 +- .../mac80211/patches/brcm/998-survey.patch | 12 +- .../patches/build/015-ipw200-mtu.patch | 4 +- .../patches/build/060-no_local_ssb_bcma.patch | 8 +- ...0-enable-MFP-support-unconditionally.patch | 44 --- .../602-rt2x00-introduce-rt2x00eeprom.patch | 4 +- ...om-on-SoC-from-a-mtd-device-defines-.patch | 2 +- ...e-linux-stddef.h-instead-of-stddef.h.patch | 31 -- .../100-remove-cryptoapi-dependencies.patch | 2 +- .../110-mac80211_keep_keys_on_stop_ap.patch | 4 +- .../patches/subsys/130-disable-fils.patch | 2 +- .../132-mac80211-remove-cmac-dependency.patch | 2 +- .../subsys/140-tweak-TSQ-setting.patch | 2 +- .../subsys/150-disable_addr_notifier.patch | 10 +- .../mac80211/patches/subsys/210-ap_scan.patch | 2 +- .../300-mac80211-optimize-skb-resizing.patch | 12 +- .../patches/subsys/400-allow-ibss-mixed.patch | 2 +- .../500-mac80211_configure_antenna_gain.patch | 42 +-- package/kernel/mac80211/realtek.mk | 17 +- .../patches/003-wireless-5.8.patch | 37 +++ .../utils/iw/patches/001-nl80211_h_sync.patch | 303 ++++++++++++++++-- 41 files changed, 687 insertions(+), 410 deletions(-) create mode 100644 package/kernel/mac80211/patches/ath/910-ath10k-Fix-NULL-pointer-dereference-in-AHB-device-pr.patch delete mode 100644 package/kernel/mac80211/patches/ath/972-ath10k_fix-crash-due-to-wrong-handling-of-peer_bw_rxnss_override-parameter.patch delete mode 100644 package/kernel/mac80211/patches/ath/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch delete mode 100644 package/kernel/mac80211/patches/rt2x00/001-rt2800-enable-MFP-support-unconditionally.patch delete mode 100644 package/kernel/mac80211/patches/subsys/090-wireless-Use-linux-stddef.h-instead-of-stddef.h.patch create mode 100644 package/kernel/rtl8812au-ct/patches/003-wireless-5.8.patch 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 +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 : [] lr : [] 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] [] (ath10k_ce_alloc_pipe [ath10k_core]) from [] (ath10k_pci_alloc_pipes+0x94/0xc8 [ath10k_pci]) +[ 11.501498] [] (ath10k_pci_alloc_pipes [ath10k_pci]) from [] (ath10k_pci_setup_resource+0xb8/0xf0 [ath10k_pci]) +[ 11.512773] [] (ath10k_pci_setup_resource [ath10k_pci]) from [] (ath10k_ahb_probe+0x32c/0x670 [ath10k_pci]) +[ 11.524566] [] (ath10k_ahb_probe [ath10k_pci]) from [] (platform_drv_probe+0x34/0x70) +[ 11.536016] [] (platform_drv_probe) from [] (really_probe+0x1f0/0x358) +[ 11.545729] [] (really_probe) from [] (device_driver_attach+0x58/0x60) +[ 11.553886] [] (device_driver_attach) from [] (__driver_attach+0x58/0xcc) +[ 11.562134] [] (__driver_attach) from [] (bus_for_each_dev+0x68/0x8c) +[ 11.570731] [] (bus_for_each_dev) from [] (bus_add_driver+0x1c8/0x1d8) +[ 11.578886] [] (bus_add_driver) from [] (driver_register+0x74/0x108) +[ 11.587060] [] (driver_register) from [] (ath10k_ahb_init+0x18/0x38 [ath10k_pci]) +[ 11.595320] [] (ath10k_ahb_init [ath10k_pci]) from [] (init_module+0x3c/0x1000 [ath10k_pci]) +[ 11.604432] [] (init_module [ath10k_pci]) from [] (do_one_initcall+0x84/0x1d8) +[ 11.614657] [] (do_one_initcall) from [] (do_init_module+0x5c/0x228) +[ 11.623421] [] (do_init_module) from [] (load_module+0x1fc8/0x224c) +[ 11.631663] [] (load_module) from [] (sys_init_module+0x15c/0x17c) +[ 11.639390] [] (sys_init_module) from [] (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 [ipq40xx/ map-ac2200] +Signed-off-by: Hauke Mehrtens +Signed-off-by: Kalle Valo +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 --- 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 - -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 - -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 - -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 - -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 --- 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 +#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 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 --- 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 --- 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 --- 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 -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 -Signed-off-by: Rui Salvaterra -Acked-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo -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 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 -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 ---- - 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 /* for "struct sockaddr" et al */ - #include /* for IFNAMSIZ and co... */ - --#include /* for offsetof */ -+#ifdef __KERNEL__ -+# include /* for offsetof */ -+#else -+# include /* 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 --- 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 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 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 } 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 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 diff --git a/package/kernel/rtl8812au-ct/patches/003-wireless-5.8.patch b/package/kernel/rtl8812au-ct/patches/003-wireless-5.8.patch new file mode 100644 index 0000000000..64c5ab162b --- /dev/null +++ b/package/kernel/rtl8812au-ct/patches/003-wireless-5.8.patch @@ -0,0 +1,37 @@ +--- a/os_dep/linux/ioctl_cfg80211.c ++++ b/os_dep/linux/ioctl_cfg80211.c +@@ -5177,6 +5177,14 @@ exit: + return ret; + } + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)) || defined(BUILD_OPENWRT) ++static void cfg80211_rtw_update_mgmt_frame_registrations(struct wiphy *wiphy, ++ struct wireless_dev *wdev, ++ struct mgmt_frame_regs *upd) ++{ ++ ++} ++#else + static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy, + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) + struct wireless_dev *wdev, +@@ -5205,6 +5213,7 @@ static void cfg80211_rtw_mgmt_frame_regi + exit: + return; + } ++#endif + + #if defined(CONFIG_TDLS) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) + static int cfg80211_rtw_tdls_mgmt(struct wiphy *wiphy, +@@ -6019,7 +6028,10 @@ static struct cfg80211_ops rtw_cfg80211_ + .cancel_remain_on_channel = cfg80211_rtw_cancel_remain_on_channel, + #endif + +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)) || defined(BUILD_OPENWRT) ++ .mgmt_tx = cfg80211_rtw_mgmt_tx, ++ .update_mgmt_frame_registrations = cfg80211_rtw_update_mgmt_frame_registrations, ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + .mgmt_tx = cfg80211_rtw_mgmt_tx, + .mgmt_frame_register = cfg80211_rtw_mgmt_frame_register, + #elif (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,34) && LINUX_VERSION_CODE<=KERNEL_VERSION(2,6,35)) diff --git a/package/network/utils/iw/patches/001-nl80211_h_sync.patch b/package/network/utils/iw/patches/001-nl80211_h_sync.patch index 5084c5d45f..d935a1dc3e 100644 --- a/package/network/utils/iw/patches/001-nl80211_h_sync.patch +++ b/package/network/utils/iw/patches/001-nl80211_h_sync.patch @@ -55,7 +55,69 @@ * enum nl80211_commands - supported nl80211 commands * * @NL80211_CMD_UNSPEC: unspecified command to catch errors -@@ -571,6 +610,14 @@ +@@ -257,13 +296,14 @@ + * to get a list of all present wiphys. + * @NL80211_CMD_SET_WIPHY: set wiphy parameters, needs %NL80211_ATTR_WIPHY or + * %NL80211_ATTR_IFINDEX; can be used to set %NL80211_ATTR_WIPHY_NAME, +- * %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ (and the +- * attributes determining the channel width; this is used for setting +- * monitor mode channel), %NL80211_ATTR_WIPHY_RETRY_SHORT, +- * %NL80211_ATTR_WIPHY_RETRY_LONG, %NL80211_ATTR_WIPHY_FRAG_THRESHOLD, +- * and/or %NL80211_ATTR_WIPHY_RTS_THRESHOLD. +- * However, for setting the channel, see %NL80211_CMD_SET_CHANNEL +- * instead, the support here is for backward compatibility only. ++ * %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ, ++ * %NL80211_ATTR_WIPHY_FREQ_OFFSET (and the attributes determining the ++ * channel width; this is used for setting monitor mode channel), ++ * %NL80211_ATTR_WIPHY_RETRY_SHORT, %NL80211_ATTR_WIPHY_RETRY_LONG, ++ * %NL80211_ATTR_WIPHY_FRAG_THRESHOLD, and/or ++ * %NL80211_ATTR_WIPHY_RTS_THRESHOLD. However, for setting the channel, ++ * see %NL80211_CMD_SET_CHANNEL instead, the support here is for backward ++ * compatibility only. + * @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request + * or rename notification. Has attributes %NL80211_ATTR_WIPHY and + * %NL80211_ATTR_WIPHY_NAME. +@@ -312,7 +352,8 @@ + * %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_INACTIVITY_TIMEOUT, + * %NL80211_ATTR_ACL_POLICY and %NL80211_ATTR_MAC_ADDRS. + * The channel to use can be set on the interface or be given using the +- * %NL80211_ATTR_WIPHY_FREQ and the attributes determining channel width. ++ * %NL80211_ATTR_WIPHY_FREQ and %NL80211_ATTR_WIPHY_FREQ_OFFSET, and the ++ * attributes determining channel width. + * @NL80211_CMD_NEW_BEACON: old alias for %NL80211_CMD_START_AP + * @NL80211_CMD_STOP_AP: Stop AP operation on the given interface + * @NL80211_CMD_DEL_BEACON: old alias for %NL80211_CMD_STOP_AP +@@ -497,11 +538,12 @@ + * interface. %NL80211_ATTR_MAC is used to specify PeerSTAAddress (and + * BSSID in case of station mode). %NL80211_ATTR_SSID is used to specify + * the SSID (mainly for association, but is included in authentication +- * request, too, to help BSS selection. %NL80211_ATTR_WIPHY_FREQ is used +- * to specify the frequence of the channel in MHz. %NL80211_ATTR_AUTH_TYPE +- * is used to specify the authentication type. %NL80211_ATTR_IE is used to +- * define IEs (VendorSpecificInfo, but also including RSN IE and FT IEs) +- * to be added to the frame. ++ * request, too, to help BSS selection. %NL80211_ATTR_WIPHY_FREQ + ++ * %NL80211_ATTR_WIPHY_FREQ_OFFSET is used to specify the frequence of the ++ * channel in MHz. %NL80211_ATTR_AUTH_TYPE is used to specify the ++ * authentication type. %NL80211_ATTR_IE is used to define IEs ++ * (VendorSpecificInfo, but also including RSN IE and FT IEs) to be added ++ * to the frame. + * When used as an event, this reports reception of an Authentication + * frame in station and IBSS modes when the local MLME processed the + * frame, i.e., it was for the local STA and was received in correct +@@ -556,8 +598,9 @@ + * requests to connect to a specified network but without separating + * auth and assoc steps. For this, you need to specify the SSID in a + * %NL80211_ATTR_SSID attribute, and can optionally specify the association +- * IEs in %NL80211_ATTR_IE, %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_USE_MFP, +- * %NL80211_ATTR_MAC, %NL80211_ATTR_WIPHY_FREQ, %NL80211_ATTR_CONTROL_PORT, ++ * IEs in %NL80211_ATTR_IE, %NL80211_ATTR_AUTH_TYPE, ++ * %NL80211_ATTR_USE_MFP, %NL80211_ATTR_MAC, %NL80211_ATTR_WIPHY_FREQ, ++ * %NL80211_ATTR_WIPHY_FREQ_OFFSET, %NL80211_ATTR_CONTROL_PORT, + * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE, + * %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT, + * %NL80211_ATTR_CONTROL_PORT_OVER_NL80211, %NL80211_ATTR_MAC_HINT, and +@@ -571,6 +614,14 @@ * set of BSSID,frequency parameters is used (i.e., either the enforcing * %NL80211_ATTR_MAC,%NL80211_ATTR_WIPHY_FREQ or the less strict * %NL80211_ATTR_MAC_HINT and %NL80211_ATTR_WIPHY_FREQ_HINT). @@ -70,26 +132,71 @@ * %NL80211_ATTR_PREV_BSSID can be used to request a reassociation within * the ESS in case the device is already associated and an association with * a different BSS is desired. -@@ -1101,6 +1148,9 @@ +@@ -640,6 +691,10 @@ + * four bytes for vendor frames including the OUI. The registration + * cannot be dropped, but is removed automatically when the netlink + * socket is closed. Multiple registrations can be made. ++ * The %NL80211_ATTR_RECEIVE_MULTICAST flag attribute can be given if ++ * %NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS is available, in which ++ * case the registration can also be modified to include/exclude the ++ * flag, rather than requiring unregistration to change it. + * @NL80211_CMD_REGISTER_ACTION: Alias for @NL80211_CMD_REGISTER_FRAME for + * backward compatibility + * @NL80211_CMD_FRAME: Management frame TX request and RX notification. This +@@ -739,7 +794,7 @@ + * various triggers. These triggers can be configured through this + * command with the %NL80211_ATTR_WOWLAN_TRIGGERS attribute. For + * more background information, see +- * http://wireless.kernel.org/en/users/Documentation/WoWLAN. ++ * https://wireless.wiki.kernel.org/en/users/Documentation/WoWLAN. + * The @NL80211_CMD_SET_WOWLAN command can also be used as a notification + * from the driver reporting the wakeup reason. In this case, the + * @NL80211_ATTR_WOWLAN_TRIGGERS attribute will contain the reason +@@ -1101,6 +1156,20 @@ * peer MAC address and %NL80211_ATTR_FRAME is used to specify the frame * content. The frame is ethernet data. * + * @NL80211_CMD_SET_TID_CONFIG: Data frame TID specific configuration + * is passed using %NL80211_ATTR_TID_CONFIG attribute. ++ * ++ * @NL80211_CMD_UNPROT_BEACON: Unprotected or incorrectly protected Beacon ++ * frame. This event is used to indicate that a received Beacon frame was ++ * dropped because it did not include a valid MME MIC while beacon ++ * protection was enabled (BIGTK configured in station mode). ++ * ++ * @NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS: Report TX status of a control ++ * port frame transmitted with %NL80211_CMD_CONTROL_PORT_FRAME. ++ * %NL80211_ATTR_COOKIE identifies the TX command and %NL80211_ATTR_FRAME ++ * includes the contents of the frame. %NL80211_ATTR_ACK flag is included ++ * if the recipient acknowledged the frame. + * * @NL80211_CMD_MAX: highest used command number * @__NL80211_CMD_AFTER_LAST: internal use */ -@@ -1325,6 +1375,8 @@ enum nl80211_commands { +@@ -1325,6 +1394,12 @@ enum nl80211_commands { NL80211_CMD_PROBE_MESH_LINK, + NL80211_CMD_SET_TID_CONFIG, ++ ++ NL80211_CMD_UNPROT_BEACON, ++ ++ NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS, + /* add new commands above here */ /* used to define NL80211_CMD_MAX below */ -@@ -1580,7 +1632,8 @@ enum nl80211_commands { +@@ -1370,7 +1445,8 @@ enum nl80211_commands { + * of &enum nl80211_chan_width, describing the channel width. See the + * documentation of the enum for more information. + * @NL80211_ATTR_CENTER_FREQ1: Center frequency of the first part of the +- * channel, used for anything but 20 MHz bandwidth ++ * channel, used for anything but 20 MHz bandwidth. In S1G this is the ++ * operating channel center frequency. + * @NL80211_ATTR_CENTER_FREQ2: Center frequency of the second part of the + * channel, used only for 80+80 MHz bandwidth + * @NL80211_ATTR_WIPHY_CHANNEL_TYPE: included with NL80211_ATTR_WIPHY_FREQ +@@ -1580,7 +1656,8 @@ enum nl80211_commands { * flag is included, then control port frames are sent over NL80211 instead * using %CMD_CONTROL_PORT_FRAME. If control port routing over NL80211 is * to be used then userspace must also use the %NL80211_ATTR_SOCKET_OWNER @@ -99,7 +206,7 @@ * * @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver. * We recommend using nested, driver-specific attributes within this. -@@ -2373,6 +2426,53 @@ enum nl80211_commands { +@@ -2373,6 +2450,64 @@ enum nl80211_commands { * the allowed channel bandwidth configurations. (u8 attribute) * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13. * @@ -146,6 +253,17 @@ + * entry without having to force a disconnection after the PMK timeout. If + * no roaming occurs between the reauth threshold and PMK expiration, + * disassociation is still forced. ++ * @NL80211_ATTR_RECEIVE_MULTICAST: multicast flag for the ++ * %NL80211_CMD_REGISTER_FRAME command, see the description there. ++ * @NL80211_ATTR_WIPHY_FREQ_OFFSET: offset of the associated ++ * %NL80211_ATTR_WIPHY_FREQ in positive KHz. Only valid when supplied with ++ * an %NL80211_ATTR_WIPHY_FREQ_OFFSET. ++ * @NL80211_ATTR_CENTER_FREQ1_OFFSET: Center frequency offset in KHz for the ++ * first channel segment specified in %NL80211_ATTR_CENTER_FREQ1. ++ * @NL80211_ATTR_SCAN_FREQ_KHZ: nested attribute with KHz frequencies ++ * ++ * @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. @@ -153,7 +271,7 @@ * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use -@@ -2835,6 +2935,21 @@ enum nl80211_attrs { +@@ -2835,6 +2970,28 @@ enum nl80211_attrs { NL80211_ATTR_WIPHY_EDMG_CHANNELS, NL80211_ATTR_WIPHY_EDMG_BW_CONFIG, @@ -170,29 +288,55 @@ + NL80211_ATTR_PMK_LIFETIME, + NL80211_ATTR_PMK_REAUTH_THRESHOLD, + ++ NL80211_ATTR_RECEIVE_MULTICAST, ++ NL80211_ATTR_WIPHY_FREQ_OFFSET, ++ NL80211_ATTR_CENTER_FREQ1_OFFSET, ++ NL80211_ATTR_SCAN_FREQ_KHZ, ++ ++ NL80211_ATTR_HE_6GHZ_CAPABILITY, ++ + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, -@@ -3554,6 +3669,8 @@ enum nl80211_wmm_rule { +@@ -3413,6 +3570,8 @@ enum nl80211_mpath_info { + * defined in HE capabilities IE + * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band HE capability attribute currently + * defined ++ * @NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA: HE 6GHz band capabilities (__le16), ++ * given for all 6 GHz band channels + * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use + */ + enum nl80211_band_iftype_attr { +@@ -3423,6 +3582,7 @@ enum nl80211_band_iftype_attr { + NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY, + NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET, + NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE, ++ NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA, + + /* keep last */ + __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST, +@@ -3554,6 +3714,9 @@ enum nl80211_wmm_rule { * @NL80211_FREQUENCY_ATTR_WMM: this channel has wmm limitations. * This is a nested attribute that contains the wmm limitation per AC. * (see &enum nl80211_wmm_rule) + * @NL80211_FREQUENCY_ATTR_NO_HE: HE operation is not allowed on this channel + * in current regulatory domain. ++ * @NL80211_FREQUENCY_ATTR_OFFSET: frequency offset in KHz * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number * currently defined * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use -@@ -3583,6 +3700,7 @@ enum nl80211_frequency_attr { +@@ -3583,6 +3746,8 @@ enum nl80211_frequency_attr { NL80211_FREQUENCY_ATTR_NO_20MHZ, NL80211_FREQUENCY_ATTR_NO_10MHZ, NL80211_FREQUENCY_ATTR_WMM, + NL80211_FREQUENCY_ATTR_NO_HE, ++ NL80211_FREQUENCY_ATTR_OFFSET, /* keep last */ __NL80211_FREQUENCY_ATTR_AFTER_LAST, -@@ -3780,6 +3898,7 @@ enum nl80211_sched_scan_match_attr { +@@ -3780,6 +3945,7 @@ enum nl80211_sched_scan_match_attr { * @NL80211_RRF_NO_HT40PLUS: channels can't be used in HT40+ operation * @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed * @NL80211_RRF_NO_160MHZ: 160MHz operation not allowed @@ -200,7 +344,7 @@ */ enum nl80211_reg_rule_flags { NL80211_RRF_NO_OFDM = 1<<0, -@@ -3797,6 +3916,7 @@ enum nl80211_reg_rule_flags { +@@ -3797,6 +3963,7 @@ enum nl80211_reg_rule_flags { NL80211_RRF_NO_HT40PLUS = 1<<14, NL80211_RRF_NO_80MHZ = 1<<15, NL80211_RRF_NO_160MHZ = 1<<16, @@ -208,7 +352,23 @@ }; #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR -@@ -4503,6 +4623,7 @@ enum nl80211_key_default_types { +@@ -4351,6 +4518,7 @@ enum nl80211_bss_scan_width { + * @NL80211_BSS_CHAIN_SIGNAL: per-chain signal strength of last BSS update. + * Contains a nested array of signal strength attributes (u8, dBm), + * using the nesting index as the antenna number. ++ * @NL80211_BSS_FREQUENCY_OFFSET: frequency offset in KHz + * @__NL80211_BSS_AFTER_LAST: internal + * @NL80211_BSS_MAX: highest BSS attribute + */ +@@ -4375,6 +4543,7 @@ enum nl80211_bss { + NL80211_BSS_PARENT_TSF, + NL80211_BSS_PARENT_BSSID, + NL80211_BSS_CHAIN_SIGNAL, ++ NL80211_BSS_FREQUENCY_OFFSET, + + /* keep last */ + __NL80211_BSS_AFTER_LAST, +@@ -4503,6 +4672,7 @@ enum nl80211_key_default_types { * See &enum nl80211_key_default_types. * @NL80211_KEY_MODE: the mode from enum nl80211_key_mode. * Defaults to @NL80211_KEY_RX_TX. @@ -216,7 +376,7 @@ * * @__NL80211_KEY_AFTER_LAST: internal * @NL80211_KEY_MAX: highest key attribute -@@ -4518,6 +4639,7 @@ enum nl80211_key_attributes { +@@ -4518,6 +4688,7 @@ enum nl80211_key_attributes { NL80211_KEY_TYPE, NL80211_KEY_DEFAULT_TYPES, NL80211_KEY_MODE, @@ -224,7 +384,7 @@ /* keep last */ __NL80211_KEY_AFTER_LAST, -@@ -4674,6 +4796,69 @@ enum nl80211_tx_power_setting { +@@ -4674,6 +4845,92 @@ enum nl80211_tx_power_setting { }; /** @@ -237,6 +397,17 @@ + NL80211_TID_CONFIG_DISABLE, +}; + ++/* enum nl80211_tx_rate_setting - TX rate configuration type ++ * @NL80211_TX_RATE_AUTOMATIC: automatically determine TX rate ++ * @NL80211_TX_RATE_LIMITED: limit the TX rate by the TX rate parameter ++ * @NL80211_TX_RATE_FIXED: fix TX rate to the TX rate parameter ++ */ ++enum nl80211_tx_rate_setting { ++ NL80211_TX_RATE_AUTOMATIC, ++ NL80211_TX_RATE_LIMITED, ++ NL80211_TX_RATE_FIXED, ++}; ++ +/* enum nl80211_tid_config_attr - TID specific configuration. + * @NL80211_TID_CONFIG_ATTR_PAD: pad attribute for 64-bit values + * @NL80211_TID_CONFIG_ATTR_VIF_SUPP: a bitmap (u64) of attributes supported @@ -244,12 +415,10 @@ + * (%NL80211_TID_CONFIG_ATTR_TIDS, %NL80211_TID_CONFIG_ATTR_OVERRIDE). + * @NL80211_TID_CONFIG_ATTR_PEER_SUPP: same as the previous per-vif one, but + * per peer instead. -+ * @NL80211_TID_CONFIG_ATTR_OVERRIDE: flag attribue, if no peer -+ * is selected, if set indicates that the new configuration overrides -+ * all previous peer configurations, otherwise previous peer specific -+ * configurations should be left untouched. If peer is selected then -+ * it will reset particular TID configuration of that peer and it will -+ * not accept other TID config attributes along with peer. ++ * @NL80211_TID_CONFIG_ATTR_OVERRIDE: flag attribue, if set indicates ++ * that the new configuration overrides all previous peer ++ * configurations, otherwise previous peer specific configurations ++ * should be left untouched. + * @NL80211_TID_CONFIG_ATTR_TIDS: a bitmask value of TIDs (bit 0 to 7) + * Its type is u16. + * @NL80211_TID_CONFIG_ATTR_NOACK: Configure ack policy for the TID. @@ -265,12 +434,23 @@ + * &NL80211_CMD_SET_TID_CONFIG. Its type is u8, min value is 1 and + * the max value is advertised by the driver in this attribute on + * output in wiphy capabilities. -+ * @NL80211_TID_CONFIG_ATTR_AMPDU_CTRL: Enable/Disable aggregation for the TIDs -+ * specified in %NL80211_TID_CONFIG_ATTR_TIDS. Its type is u8, using -+ * the values from &nl80211_tid_config. ++ * @NL80211_TID_CONFIG_ATTR_AMPDU_CTRL: Enable/Disable MPDU aggregation ++ * for the TIDs specified in %NL80211_TID_CONFIG_ATTR_TIDS. ++ * Its type is u8, using the values from &nl80211_tid_config. + * @NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL: Enable/Disable RTS_CTS for the TIDs + * specified in %NL80211_TID_CONFIG_ATTR_TIDS. It is u8 type, using + * the values from &nl80211_tid_config. ++ * @NL80211_TID_CONFIG_ATTR_AMSDU_CTRL: Enable/Disable MSDU aggregation ++ * for the TIDs specified in %NL80211_TID_CONFIG_ATTR_TIDS. ++ * Its type is u8, using the values from &nl80211_tid_config. ++ * @NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE: This attribute will be useful ++ * to notfiy the driver that what type of txrate should be used ++ * for the TIDs specified in %NL80211_TID_CONFIG_ATTR_TIDS. using ++ * the values form &nl80211_tx_rate_setting. ++ * @NL80211_TID_CONFIG_ATTR_TX_RATE: Data frame TX rate mask should be applied ++ * with the parameters passed through %NL80211_ATTR_TX_RATES. ++ * configuration is applied to the data frame for the tid to that connected ++ * station. + */ +enum nl80211_tid_config_attr { + __NL80211_TID_CONFIG_ATTR_INVALID, @@ -284,6 +464,9 @@ + NL80211_TID_CONFIG_ATTR_RETRY_LONG, + NL80211_TID_CONFIG_ATTR_AMPDU_CTRL, + NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL, ++ NL80211_TID_CONFIG_ATTR_AMSDU_CTRL, ++ NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE, ++ NL80211_TID_CONFIG_ATTR_TX_RATE, + + /* keep last */ + __NL80211_TID_CONFIG_ATTR_AFTER_LAST, @@ -294,7 +477,32 @@ * enum nl80211_packet_pattern_attr - packet pattern attribute * @__NL80211_PKTPAT_INVALID: invalid number for nested attribute * @NL80211_PKTPAT_PATTERN: the pattern, values where the mask has -@@ -5484,6 +5669,26 @@ enum nl80211_feature_flags { +@@ -5144,6 +5401,8 @@ enum plink_actions { + + #define NL80211_KCK_LEN 16 + #define NL80211_KEK_LEN 16 ++#define NL80211_KCK_EXT_LEN 24 ++#define NL80211_KEK_EXT_LEN 32 + #define NL80211_REPLAY_CTR_LEN 8 + + /** +@@ -5152,6 +5411,7 @@ enum plink_actions { + * @NL80211_REKEY_DATA_KEK: key encryption key (binary) + * @NL80211_REKEY_DATA_KCK: key confirmation key (binary) + * @NL80211_REKEY_DATA_REPLAY_CTR: replay counter (binary) ++ * @NL80211_REKEY_DATA_AKM: AKM data (OUI, suite type) + * @NUM_NL80211_REKEY_DATA: number of rekey attributes (internal) + * @MAX_NL80211_REKEY_DATA: highest rekey attribute (internal) + */ +@@ -5160,6 +5420,7 @@ enum nl80211_rekey_data { + NL80211_REKEY_DATA_KEK, + NL80211_REKEY_DATA_KCK, + NL80211_REKEY_DATA_REPLAY_CTR, ++ NL80211_REKEY_DATA_AKM, + + /* keep last */ + NUM_NL80211_REKEY_DATA, +@@ -5484,6 +5745,39 @@ enum nl80211_feature_flags { * @NL80211_EXT_FEATURE_SAE_OFFLOAD: Device wants to do SAE authentication in * station mode (SAE password is passed as part of the connect command). * @@ -308,6 +516,8 @@ + * + * @NL80211_EXT_FEATURE_BEACON_PROTECTION: The driver supports Beacon protection + * and can receive key configuration for BIGTK using key indexes 6 and 7. ++ * @NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT: The driver supports Beacon ++ * protection as a client only and cannot transmit protected beacons. + * + * @NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH: The driver can disable the + * forwarding of preauth frames over the control port. They are then @@ -317,11 +527,22 @@ + * + * @NL80211_EXT_FEATURE_DEL_IBSS_STA: The driver supports removing stations + * in IBSS mode, essentially by dropping their state. ++ * ++ * @NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS: management frame registrations ++ * are possible for multicast frames and those will be reported properly. ++ * ++ * @NL80211_EXT_FEATURE_SCAN_FREQ_KHZ: This driver supports receiving and ++ * reporting scan request with %NL80211_ATTR_SCAN_FREQ_KHZ. In order to ++ * report %NL80211_ATTR_SCAN_FREQ_KHZ, %NL80211_SCAN_FLAG_FREQ_KHZ must be ++ * included in the scan request. ++ * ++ * @NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS: The driver ++ * can report tx status for control port over nl80211 tx operations. + * * @NUM_NL80211_EXT_FEATURES: number of extended features. * @MAX_NL80211_EXT_FEATURES: highest extended feature index. */ -@@ -5529,6 +5734,12 @@ enum nl80211_ext_feature_index { +@@ -5529,6 +5823,16 @@ enum nl80211_ext_feature_index { NL80211_EXT_FEATURE_EXT_KEY_ID, NL80211_EXT_FEATURE_STA_TX_PWR, NL80211_EXT_FEATURE_SAE_OFFLOAD, @@ -331,10 +552,32 @@ + NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH, + NL80211_EXT_FEATURE_PROTECTED_TWT, + NL80211_EXT_FEATURE_DEL_IBSS_STA, ++ NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS, ++ NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT, ++ NL80211_EXT_FEATURE_SCAN_FREQ_KHZ, ++ NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS, /* add new features before the definition below */ NUM_NL80211_EXT_FEATURES, -@@ -6151,12 +6362,14 @@ enum nl80211_ftm_responder_stats { +@@ -5640,6 +5944,9 @@ enum nl80211_timeout_reason { + * @NL80211_SCAN_FLAG_MIN_PREQ_CONTENT: minimize probe request content to + * only have supported rates and no additional capabilities (unless + * added by userspace explicitly.) ++ * @NL80211_SCAN_FLAG_FREQ_KHZ: report scan results with ++ * %NL80211_ATTR_SCAN_FREQ_KHZ. This also means ++ * %NL80211_ATTR_SCAN_FREQUENCIES will not be included. + */ + enum nl80211_scan_flags { + NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0, +@@ -5655,6 +5962,7 @@ enum nl80211_scan_flags { + NL80211_SCAN_FLAG_HIGH_ACCURACY = 1<<10, + NL80211_SCAN_FLAG_RANDOM_SN = 1<<11, + NL80211_SCAN_FLAG_MIN_PREQ_CONTENT = 1<<12, ++ NL80211_SCAN_FLAG_FREQ_KHZ = 1<<13, + }; + + /** +@@ -6151,12 +6459,14 @@ enum nl80211_ftm_responder_stats { * @NL80211_PREAMBLE_HT: HT preamble * @NL80211_PREAMBLE_VHT: VHT preamble * @NL80211_PREAMBLE_DMG: DMG preamble @@ -349,7 +592,7 @@ }; /** -@@ -6349,6 +6562,10 @@ enum nl80211_peer_measurement_attrs { +@@ -6349,6 +6659,10 @@ enum nl80211_peer_measurement_attrs { * is valid) * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST: u32 attribute indicating * the maximum FTMs per burst (if not present anything is valid) @@ -360,7 +603,7 @@ * * @NUM_NL80211_PMSR_FTM_CAPA_ATTR: internal * @NL80211_PMSR_FTM_CAPA_ATTR_MAX: highest attribute number -@@ -6364,6 +6581,8 @@ enum nl80211_peer_measurement_ftm_capa { +@@ -6364,6 +6678,8 @@ enum nl80211_peer_measurement_ftm_capa { NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS, NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT, NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST, @@ -369,7 +612,7 @@ /* keep last */ NUM_NL80211_PMSR_FTM_CAPA_ATTR, -@@ -6393,6 +6612,20 @@ enum nl80211_peer_measurement_ftm_capa { +@@ -6393,6 +6709,20 @@ enum nl80211_peer_measurement_ftm_capa { * @NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI: request LCI data (flag) * @NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC: request civic location data * (flag) @@ -390,7 +633,7 @@ * * @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal * @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number -@@ -6409,6 +6642,8 @@ enum nl80211_peer_measurement_ftm_req { +@@ -6409,6 +6739,8 @@ enum nl80211_peer_measurement_ftm_req { NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES, NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI, NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC, @@ -399,7 +642,7 @@ /* keep last */ NUM_NL80211_PMSR_FTM_REQ_ATTR, -@@ -6548,5 +6783,51 @@ enum nl80211_obss_pd_attributes { +@@ -6548,5 +6880,51 @@ enum nl80211_obss_pd_attributes { NL80211_HE_OBSS_PD_ATTR_MAX = __NL80211_HE_OBSS_PD_ATTR_LAST - 1, };