diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
index cc17031a87c9..75d9cd9e6f3f 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 3bb046e8436b..de6f9d9bb079 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 7824eab6cb93..bf87d3551a18 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 b186e8fa4781..89e26af763f3 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 e958769fe7ca..b9c784eb25e8 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 b3dfa105ca97..1f194830642e 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 7c60191d4802..5220157de6fb 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 087b0664e77d..f59654e41456 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/921-ath10k_init_devices_synchronously.patch b/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
index 417dc5843685..4e59bb00e99b 100644
--- a/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
+++ b/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
@@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
 
 --- a/drivers/net/wireless/ath/ath10k/core.c
 +++ b/drivers/net/wireless/ath/ath10k/core.c
-@@ -3174,6 +3174,16 @@ int ath10k_core_register(struct ath10k *
+@@ -3172,6 +3172,16 @@ int ath10k_core_register(struct ath10k *
  
  	queue_work(ar->workqueue, &ar->register_work);
  
diff --git a/package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch b/package/kernel/mac80211/patches/ath/922-ath10k-increase-rx-buffer-size-to-2048.patch
index 37fde808db3f..abce361673d5 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 8e34a810b34a..2b36a559d676 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 9cb2198ca23c..000000000000
--- a/package/kernel/mac80211/patches/ath/972-ath10k_fix-crash-due-to-wrong-handling-of-peer_bw_rxnss_override-parameter.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From: Sebastian Gottschall <s.gottschall@dd-wrt.com>
-
-current handling of peer_bw_rxnss_override parameter is based on guessing the VHT160/8080 capability by rx rate. this is wrong and may lead
-to a non initialized peer_bw_rxnss_override parameter which is required since VHT160 operation mode only supports 2x2 chainmasks in addition the original code
-initialized the parameter with wrong masked values.
-This patch uses the peer phymode and peer nss information for correct initialisation of the peer_bw_rxnss_override parameter.
-if this peer information is not available, we initialize the parameter by minimum nss which is suggested by QCA as temporary workaround according
-to the QCA sourcecodes.
-
-Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
-
-v2: remove debug messages
-v3: apply some cosmetics, update documentation
-v4: fix compile warning and truncate nss to maximum of 2x2 since current chipsets only support 2x2 at vht160
-v5: handle maximum nss for chipsets supportig vht160 with 1x1 only
-v7: use more simple code variant and take care about hw/sw chainmask configuration
-v8: fix some code style issues
-v9: use SM/MS macros from code.h to simplify shift/mask handling
----
- drivers/net/wireless/ath/ath10k/mac.c | 54 +++++++++++++++++++--------
- drivers/net/wireless/ath/ath10k/wmi.c |  7 +---
- drivers/net/wireless/ath/ath10k/wmi.h | 14 ++++++-
- 3 files changed, 52 insertions(+), 23 deletions(-)
---- a/drivers/net/wireless/ath/ath10k/mac.c
-+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -2517,7 +2517,7 @@ static void ath10k_peer_assoc_h_vht(stru
- 	const u16 *vht_mcs_mask;
- 	u8 ampdu_factor;
- 	u8 max_nss, vht_mcs;
--	int i;
-+	int i, nss160;
- 
- 	if (WARN_ON(ath10k_mac_vif_chan(vif, &def)))
- 		return;
-@@ -2577,23 +2577,45 @@ static void ath10k_peer_assoc_h_vht(stru
- 		__le16_to_cpu(vht_cap->vht_mcs.tx_highest);
- 	arg->peer_vht_rates.tx_mcs_set = ath10k_peer_assoc_h_vht_limit(
- 		__le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map), vht_mcs_mask);
-+	arg->peer_bw_rxnss_override = 0;
-+	nss160 = 1; /* 1x1 default config for VHT160 */
- 
--	ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vht peer %pM max_mpdu %d flags 0x%x\n",
--		   sta->addr, arg->peer_max_mpdu, arg->peer_flags);
-+	/* only local 4x4 configuration do support 2x2 for VHT160,
-+	 * everything else must use 1x1 
-+	 */
- 
--	if (arg->peer_vht_rates.rx_max_rate &&
--	    (sta->vht_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK)) {
--		switch (arg->peer_vht_rates.rx_max_rate) {
--		case 1560:
--			/* Must be 2x2 at 160Mhz is all it can do. */
--			arg->peer_bw_rxnss_override = 2;
--			break;
--		case 780:
--			/* Can only do 1x1 at 160Mhz (Long Guard Interval) */
--			arg->peer_bw_rxnss_override = 1;
--			break;
--		}
-+	if (ar->cfg_rx_chainmask == 15)
-+		nss160 = arg->peer_num_spatial_streams <= 2 ? 1 : 2;
-+
-+	/* if peer provides 1x1 nss160 information using max rate
-+	 * vht information, we reduce local nss160 to 1x1.
-+	 * consider that it has been observed that some client
-+	 * devices provide zero here, no matter which transmission
-+	 * rate is possible. in that case the local nss configuration 
-+	 * will be used at maxmimum configuration possible. (see above)
-+	 */
-+
-+	if (arg->peer_vht_rates.rx_max_rate == 780)
-+		nss160 = 1;
-+
-+	/* in case if peer is connected with vht160 or vht80+80,
-+         * we need to properly adjust rxnss parameters otherwise 
-+	 * firmware will raise a assert 
-+	 */
-+	switch (arg->peer_phymode) {
-+	case MODE_11AC_VHT80_80:
-+		arg->peer_bw_rxnss_override = BW_NSS_FWCONF_80_80(nss160);
-+	/* fall through */
-+	case MODE_11AC_VHT160:
-+		arg->peer_bw_rxnss_override |= BW_NSS_FWCONF_160(nss160);
-+		break;
-+	default:
-+		break;
- 	}
-+
-+	ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vht peer %pM max_mpdu %d flags 0x%x peer_bw_rxnss_override 0x%x\n",
-+		   sta->addr, arg->peer_max_mpdu, arg->peer_flags, 
-+		   arg->peer_bw_rxnss_override);
- }
- 
- static void ath10k_peer_assoc_h_qos(struct ath10k *ar,
-@@ -2745,9 +2767,9 @@ static int ath10k_peer_assoc_prepare(str
- 	ath10k_peer_assoc_h_crypto(ar, vif, sta, arg);
- 	ath10k_peer_assoc_h_rates(ar, vif, sta, arg);
- 	ath10k_peer_assoc_h_ht(ar, vif, sta, arg);
-+	ath10k_peer_assoc_h_phymode(ar, vif, sta, arg);
- 	ath10k_peer_assoc_h_vht(ar, vif, sta, arg);
- 	ath10k_peer_assoc_h_qos(ar, vif, sta, arg);
--	ath10k_peer_assoc_h_phymode(ar, vif, sta, arg);
- 
- 	return 0;
- }
---- a/drivers/net/wireless/ath/ath10k/wmi.c
-+++ b/drivers/net/wireless/ath/ath10k/wmi.c
-@@ -7628,12 +7628,7 @@ ath10k_wmi_peer_assoc_fill_10_4(struct a
- 	struct wmi_10_4_peer_assoc_complete_cmd *cmd = buf;
- 
- 	ath10k_wmi_peer_assoc_fill_10_2(ar, buf, arg);
--	if (arg->peer_bw_rxnss_override)
--		cmd->peer_bw_rxnss_override =
--			__cpu_to_le32((arg->peer_bw_rxnss_override - 1) |
--				      BIT(PEER_BW_RXNSS_OVERRIDE_OFFSET));
--	else
--		cmd->peer_bw_rxnss_override = 0;
-+	cmd->peer_bw_rxnss_override = __cpu_to_le32(arg->peer_bw_rxnss_override);
- }
- 
- static int
---- a/drivers/net/wireless/ath/ath10k/wmi.h
-+++ b/drivers/net/wireless/ath/ath10k/wmi.h
-@@ -6508,7 +6508,19 @@ struct wmi_10_2_peer_assoc_complete_cmd
- 	__le32 info0; /* WMI_PEER_ASSOC_INFO0_ */
- } __packed;
- 
--#define PEER_BW_RXNSS_OVERRIDE_OFFSET  31
-+#define BW_NSS_FWCONF_MAP_ENABLE	BIT(31)
-+#define BW_NSS_FWCONF_MAP_160MHZ_LSB	(0)
-+#define BW_NSS_FWCONF_MAP_160MHZ_MASK	(0x00000007)
-+#define BW_NSS_FWCONF_MAP_80_80MHZ_LSB	(3)
-+#define BW_NSS_FWCONF_MAP_80_80MHZ_MASK (0x00000038)
-+#define BW_NSS_FWCONF_MAP_MASK		(0x0000003F)
-+
-+#define GET_BW_NSS_FWCONF_160(x)	(MS(x, BW_NSS_FWCONF_MAP_160MHZ) + 1)
-+#define GET_BW_NSS_FWCONF_80_80(x)	(MS(x, BW_NSS_FWCONF_MAP_80_80MHZ) + 1)
-+
-+/* Values defined to set 160 MHz Bandwidth NSS Mapping into FW*/
-+#define BW_NSS_FWCONF_160(x)		(BW_NSS_FWCONF_MAP_ENABLE | SM(x - 1, BW_NSS_FWCONF_MAP_160MHZ))
-+#define BW_NSS_FWCONF_80_80(x)		(BW_NSS_FWCONF_MAP_ENABLE | SM(x - 1, BW_NSS_FWCONF_MAP_80_80MHZ))
- 
- struct wmi_10_4_peer_assoc_complete_cmd {
- 	struct wmi_10_2_peer_assoc_complete_cmd cmd;
diff --git a/package/kernel/mac80211/patches/ath/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch b/package/kernel/mac80211/patches/ath/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch
deleted file mode 100644
index 4ad93ad790ac..000000000000
--- a/package/kernel/mac80211/patches/ath/973-ath10k_fix-band_center_freq-handling-for-VHT160-in-recent-firmwares.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From: Sebastian Gottschall <s.gottschall@dd-wrt.com>
-
-starting with firmware 10.4.3.4.x series QCA changed the handling of the channel property band_center_freq1 and band_center_freq2 in vht160 operation mode
-likelly for backward compatiblity with vht80 only capable clients.
-this patch adjusts the handling to get vht160 to work again with official qca firmwares newer than 3.3
-consider that this patch will not work with older firmwares anymore. to avoid undefined behaviour this we disable vht160 capability for outdated firmwares
-Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
-
-v2: fix trailing whitespace issue and fix some typos within the commit note
----
- drivers/net/wireless/ath/ath10k/mac.c |  7 -------
- drivers/net/wireless/ath/ath10k/wmi.c | 11 ++++++++---
- 2 files changed, 8 insertions(+), 10 deletions(-)
---- a/drivers/net/wireless/ath/ath10k/mac.c
-+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -4588,13 +4588,6 @@ static struct ieee80211_sta_vht_cap ath1
- 		vht_cap.cap |= val;
- 	}
- 
--	/* Currently the firmware seems to be buggy, don't enable 80+80
--	 * mode until that's resolved.
--	 */
--	if ((ar->vht_cap_info & IEEE80211_VHT_CAP_SHORT_GI_160) &&
--	    (ar->vht_cap_info & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK) == 0)
--		vht_cap.cap |= IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ;
--
- 	mcs_map = 0;
- 	for (i = 0; i < 8; i++) {
- 		if ((i < ar->num_rf_chains) && (ar->cfg_tx_chainmask & BIT(i)))
---- a/drivers/net/wireless/ath/ath10k/wmi.c
-+++ b/drivers/net/wireless/ath/ath10k/wmi.c
-@@ -1713,13 +1713,18 @@ void ath10k_wmi_put_wmi_channel(struct w
- 		flags |= WMI_CHAN_FLAG_HT40_PLUS;
- 	if (arg->chan_radar)
- 		flags |= WMI_CHAN_FLAG_DFS;
--
-+	ch->band_center_freq2 = 0;
- 	ch->mhz = __cpu_to_le32(arg->freq);
- 	ch->band_center_freq1 = __cpu_to_le32(arg->band_center_freq1);
- 	if (arg->mode == MODE_11AC_VHT80_80)
- 		ch->band_center_freq2 = __cpu_to_le32(arg->band_center_freq2);
--	else
--		ch->band_center_freq2 = 0;
-+	if (arg->mode == MODE_11AC_VHT160)  {
-+		if (arg->freq < arg->band_center_freq1)
-+			ch->band_center_freq1 = __cpu_to_le32(arg->band_center_freq1 - 40);
-+		else
-+			ch->band_center_freq1 = __cpu_to_le32(arg->band_center_freq1 + 40);
-+		ch->band_center_freq2 = __cpu_to_le32(arg->band_center_freq1);
-+	}
- 	ch->min_power = arg->min_power;
- 	ch->max_power = arg->max_power;
- 	ch->reg_power = arg->max_reg_power;
diff --git a/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch b/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
index d34e5c87e83a..74a3028a8aa5 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 834bbf809f83..db9a88e000e5 100644
--- a/package/kernel/mac80211/patches/ath/975-ath10k-use-tpt-trigger-by-default.patch
+++ b/package/kernel/mac80211/patches/ath/975-ath10k-use-tpt-trigger-by-default.patch
@@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
 
 --- a/drivers/net/wireless/ath/ath10k/core.h
 +++ b/drivers/net/wireless/ath/ath10k/core.h
-@@ -1235,6 +1235,10 @@ struct ath10k {
+@@ -1269,6 +1269,10 @@ struct ath10k {
  	bool coex_support;
  	int coex_gpio_pin;
  
@@ -25,7 +25,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
 +#endif
 +
  	/* must be last */
- 	u8 drv_priv[0] __aligned(sizeof(void *));
+ 	u8 drv_priv[] __aligned(sizeof(void *));
  };
 --- a/drivers/net/wireless/ath/ath10k/leds.c
 +++ b/drivers/net/wireless/ath/ath10k/leds.c
@@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
  	if (ret)
 --- a/drivers/net/wireless/ath/ath10k/mac.c
 +++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -9144,7 +9144,7 @@ int ath10k_mac_register(struct ath10k *a
+@@ -9397,7 +9397,7 @@ int ath10k_mac_register(struct ath10k *a
  	ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
  
  #ifdef CPTCFG_MAC80211_LEDS
diff --git a/package/kernel/mac80211/patches/ath/980-ath10k-fix-max-antenna-gain-unit.patch b/package/kernel/mac80211/patches/ath/980-ath10k-fix-max-antenna-gain-unit.patch
index 7742c2796664..9498e02462b0 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 1501d4bc0c71..fbb6fad660a6 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 c18a5bfa4af5..1b965087d3e2 100644
--- a/package/kernel/mac80211/patches/brcm/860-brcmfmac-register-wiphy-s-during-module_init.patch
+++ b/package/kernel/mac80211/patches/brcm/860-brcmfmac-register-wiphy-s-during-module_init.patch
@@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 
 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-@@ -1554,6 +1554,7 @@ int __init brcmf_core_init(void)
+@@ -1551,6 +1551,7 @@ int __init brcmf_core_init(void)
  {
  	if (!schedule_work(&brcmf_driver_work))
  		return -EBUSY;
diff --git a/package/kernel/mac80211/patches/brcm/861-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch b/package/kernel/mac80211/patches/brcm/861-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch
index 81c170c43f6e..069aab82497c 100644
--- a/package/kernel/mac80211/patches/brcm/861-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch
+++ b/package/kernel/mac80211/patches/brcm/861-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch
@@ -10,7 +10,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 
 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -711,8 +711,36 @@ static struct wireless_dev *brcmf_cfg802
+@@ -712,8 +712,36 @@ static struct wireless_dev *brcmf_cfg802
  	struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
  	struct brcmf_pub *drvr = cfg->pub;
  	struct wireless_dev *wdev;
diff --git a/package/kernel/mac80211/patches/brcm/862-brcmfmac-Disable-power-management.patch b/package/kernel/mac80211/patches/brcm/862-brcmfmac-Disable-power-management.patch
index f65a7903c4ac..8a20ae133a96 100644
--- a/package/kernel/mac80211/patches/brcm/862-brcmfmac-Disable-power-management.patch
+++ b/package/kernel/mac80211/patches/brcm/862-brcmfmac-Disable-power-management.patch
@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 
 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -2941,6 +2941,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
+@@ -2953,6 +2953,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
  	 * preference in cfg struct to apply this to
  	 * FW later while initializing the dongle
  	 */
diff --git a/package/kernel/mac80211/patches/brcm/998-survey.patch b/package/kernel/mac80211/patches/brcm/998-survey.patch
index 7f53c97470a9..bcab2e3f3ce7 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 59d3b62f9dcf..68db4f72d379 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 93b6992f729c..c00ab7c78644 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 5dfcf5bf3b6e..000000000000
--- a/package/kernel/mac80211/patches/rt2x00/001-rt2800-enable-MFP-support-unconditionally.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From b6b15e20421fefae9f78274f9fef80bc97bf5d5c Mon Sep 17 00:00:00 2001
-From: Rui Salvaterra <rsalvaterra@gmail.com>
-Date: Mon, 25 May 2020 14:49:07 +0100
-Subject: [PATCH] rt2800: enable MFP support unconditionally
-
-This gives us WPA3 support out of the box without having to manually disable
-hardware crypto. The driver will fall back to software crypto if the connection
-requires management frame protection.
-
-Suggested-by: Stanislaw Gruszka <stf_xl@wp.pl>
-Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
-Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-Link: https://lore.kernel.org/r/20200525134906.1672-1-rsalvaterra@gmail.com
----
- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 4 +---
- drivers/net/wireless/ralink/rt2x00/rt2x00mac.c | 3 ++-
- 2 files changed, 3 insertions(+), 4 deletions(-)
-
---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -9971,9 +9971,7 @@ static int rt2800_probe_hw_mode(struct r
- 	if (!rt2x00_is_usb(rt2x00dev))
- 		ieee80211_hw_set(rt2x00dev->hw, HOST_BROADCAST_PS_BUFFERING);
- 
--	/* Set MFP if HW crypto is disabled. */
--	if (rt2800_hwcrypt_disabled(rt2x00dev))
--		ieee80211_hw_set(rt2x00dev->hw, MFP_CAPABLE);
-+	ieee80211_hw_set(rt2x00dev->hw, MFP_CAPABLE);
- 
- 	SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev);
- 	SET_IEEE80211_PERM_ADDR(rt2x00dev->hw,
---- a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
-@@ -468,7 +468,8 @@ int rt2x00mac_set_key(struct ieee80211_h
- 	if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
- 		return 0;
- 
--	if (!rt2x00_has_cap_hw_crypto(rt2x00dev))
-+	/* The hardware can't do MFP */
-+	if (!rt2x00_has_cap_hw_crypto(rt2x00dev) || (sta && sta->mfp))
- 		return -EOPNOTSUPP;
- 
- 	/*
diff --git a/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch b/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
index 6cd504228f05..da76b34fab36 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 43754c43c24a..7338eb15b20e 100644
--- a/package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch
+++ b/package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch
@@ -17,7 +17,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  	select RT2800_LIB
  	select RT2800_LIB_MMIO
 +	select MTD if SOC_RT288X || SOC_RT305X
- 	---help---
+ 	help
  	  This adds support for Ralink WiSoC devices.
  	  Supported chips: RT2880, RT3050, RT3052, RT3350, RT3352.
 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
diff --git a/package/kernel/mac80211/patches/subsys/090-wireless-Use-linux-stddef.h-instead-of-stddef.h.patch b/package/kernel/mac80211/patches/subsys/090-wireless-Use-linux-stddef.h-instead-of-stddef.h.patch
deleted file mode 100644
index c81cc063c66e..000000000000
--- a/package/kernel/mac80211/patches/subsys/090-wireless-Use-linux-stddef.h-instead-of-stddef.h.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From e1f04bf9d38633f0bf9d041089366fea0ad22623 Mon Sep 17 00:00:00 2001
-From: Hauke Mehrtens <hauke@hauke-m.de>
-Date: Thu, 21 May 2020 19:50:05 +0200
-Subject: [PATCH] wireless: Use linux/stddef.h instead of stddef.h
-
-When compiling inside the kernel include linux/stddef.h instead of
-stddef.h. When I compile this header file in backports for power PC I
-run into a conflict with ptrdiff_t. I was unable to reproduce this in
-mainline kernel. I still would like to fix this problem in the kernel.
-
-Fixes: 6989310f5d43 ("wireless: Use offsetof instead of custom macro.")
-Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
----
- include/uapi/linux/wireless.h | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
---- a/include/uapi/linux/wireless.h
-+++ b/include/uapi/linux/wireless.h
-@@ -74,7 +74,11 @@
- #include <linux/socket.h>		/* for "struct sockaddr" et al	*/
- #include <linux/if.h>			/* for IFNAMSIZ and co... */
- 
--#include <stddef.h>                     /* for offsetof */
-+#ifdef __KERNEL__
-+#	include <linux/stddef.h>	/* for offsetof */
-+#else
-+#	include <stddef.h>		/* for offsetof */
-+#endif
- 
- /***************************** VERSION *****************************/
- /*
diff --git a/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch b/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch
index 5556f9b72a65..a94f9d8fdb6e 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 cceb6d5d7ddf..e56055caff7e 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 5ca64d2c730c..9c6e971f9da5 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 2a9c09b4ada9..df67d2f1019e 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 84cfaea8a4d9..56f8e7b8d9f3 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 2f515be8f0c2..8a717558a7c8 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 32f4ac07dba1..a4c3ca6f47e5 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 13fb2fd077e4..41f8eb5a654b 100644
--- a/package/kernel/mac80211/patches/subsys/300-mac80211-optimize-skb-resizing.patch
+++ b/package/kernel/mac80211/patches/subsys/300-mac80211-optimize-skb-resizing.patch
@@ -24,8 +24,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/mac80211/ieee80211_i.h
 +++ b/net/mac80211/ieee80211_i.h
-@@ -1801,6 +1801,9 @@ int ieee80211_tx_control_port(struct wip
- 			      const u8 *dest, __be16 proto, bool unencrypted);
+@@ -1809,6 +1809,9 @@ int ieee80211_tx_control_port(struct wip
+ 			      u64 *cookie);
  int ieee80211_probe_mesh_link(struct wiphy *wiphy, struct net_device *dev,
  			      const u8 *buf, size_t len);
 +int ieee80211_skb_resize(struct ieee80211_local *local,
@@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata,
 --- a/net/mac80211/status.c
 +++ b/net/mac80211/status.c
-@@ -828,6 +828,11 @@ void ieee80211_tx_monitor(struct ieee802
+@@ -835,6 +835,11 @@ void ieee80211_tx_monitor(struct ieee802
  	struct net_device *prev_dev = NULL;
  	int rtap_len;
  
@@ -143,7 +143,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		ieee80211_free_txskb(&local->hw, skb);
  		return;
  	}
-@@ -2796,29 +2802,13 @@ static struct sk_buff *ieee80211_build_h
+@@ -2809,29 +2815,13 @@ static struct sk_buff *ieee80211_build_h
  	}
  
  	skb_pull(skb, skip_header_bytes);
@@ -179,7 +179,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	}
  
  	if (encaps_data)
-@@ -3433,7 +3423,6 @@ static bool ieee80211_xmit_fast(struct i
+@@ -3446,7 +3436,6 @@ static bool ieee80211_xmit_fast(struct i
  	struct ieee80211_local *local = sdata->local;
  	u16 ethertype = (skb->data[12] << 8) | skb->data[13];
  	int extra_head = fast_tx->hdr_len - (ETH_HLEN - 2);
@@ -187,7 +187,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	struct ethhdr eth;
  	struct ieee80211_tx_info *info;
  	struct ieee80211_hdr *hdr = (void *)fast_tx->hdr;
-@@ -3485,10 +3474,7 @@ static bool ieee80211_xmit_fast(struct i
+@@ -3498,10 +3487,7 @@ static bool ieee80211_xmit_fast(struct i
  	 * as the may-encrypt argument for the resize to not account for
  	 * more room than we already have in 'extra_head'
  	 */
diff --git a/package/kernel/mac80211/patches/subsys/400-allow-ibss-mixed.patch b/package/kernel/mac80211/patches/subsys/400-allow-ibss-mixed.patch
index 52200b6ecc8d..feb6b5b11edb 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 f4573f124ab9..09c58576238e 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 19b54e07d773..bcf35e35c4b1 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 000000000000..64c5ab162bab
--- /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 5084c5d45fe1..d935a1dc3ebf 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,
  };
  
