diff --git a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0013-mac80211-mtk-add-fill-receive-path-ops-to-get-wed-id.patch b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0013-mac80211-mtk-add-fill-receive-path-ops-to-get-wed-id.patch
index 8d2067f..4d394b6 100644
--- a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0013-mac80211-mtk-add-fill-receive-path-ops-to-get-wed-id.patch
+++ b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0013-mac80211-mtk-add-fill-receive-path-ops-to-get-wed-id.patch
@@ -5,74 +5,42 @@
 
 Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
 ---
- include/net/mac80211.h    | 15 +++++++++++++--
+ include/net/mac80211.h    |  5 +++++
  net/mac80211/driver-ops.h | 13 +++++++++++++
- net/mac80211/iface.c      | 24 ++++++++++++++++++++++++
+ net/mac80211/iface.c      | 23 +++++++++++++++++++++++
  net/mac80211/util.c       |  9 +++++++++
- 4 files changed, 59 insertions(+), 2 deletions(-)
- mode change 100644 => 100755 net/mac80211/util.c
+ 4 files changed, 50 insertions(+)
 
 diff --git a/include/net/mac80211.h b/include/net/mac80211.h
-index ad5f217..d1d7fc3 100644
+index 6e5ad3e..cc02639 100644
 --- a/include/net/mac80211.h
 +++ b/include/net/mac80211.h
-@@ -1380,7 +1380,7 @@ ieee80211_tx_info_clear_status(struct ieee80211_tx_info *info)
-  * @RX_FLAG_AMPDU_EOF_BIT_KNOWN: The EOF value is known
-  * @RX_FLAG_RADIOTAP_HE: HE radiotap data is present
-  *	(&struct ieee80211_radiotap_he, mac80211 will fill in
-- *	
-+ *
-  *	 - DATA3_DATA_MCS
-  *	 - DATA3_DATA_DCM
-  *	 - DATA3_CODING
-@@ -1388,7 +1388,7 @@ ieee80211_tx_info_clear_status(struct ieee80211_tx_info *info)
-  *	 - DATA5_DATA_BW_RU_ALLOC
-  *	 - DATA6_NSTS
-  *	 - DATA3_STBC
-- *	
-+ *
-  *	from the RX info data, so leave those zeroed when building this data)
-  * @RX_FLAG_RADIOTAP_HE_MU: HE MU radiotap data is present
-  *	(&struct ieee80211_radiotap_he_mu)
-@@ -1950,6 +1950,12 @@ struct ieee80211_vif *wdev_to_ieee80211_vif(struct wireless_dev *wdev);
-  */
- struct wireless_dev *ieee80211_vif_to_wdev(struct ieee80211_vif *vif);
- 
-+/**
-+ * ieee80211_vif_to_wdev - return a net_device struct from a vif
-+ * @vif: the vif to get the net_device for
-+ */
-+struct net_device *ieee80211_vif_to_netdev(struct ieee80211_vif *vif);
-+
- /**
-  * lockdep_vif_mutex_held - for lockdep checks on link poiners
-  * @vif: the interface to check
-@@ -4219,6 +4225,8 @@ struct ieee80211_prep_tx_info {
-  *	Note that a sta can also be inserted or removed with valid links,
-  *	i.e. passed to @sta_add/@sta_state with sta->valid_links not zero.
-  *	In fact, cannot change from having valid_links and not having them.
+@@ -4207,6 +4207,8 @@ struct ieee80211_prep_tx_info {
+  *	disable background CAC/radar detection.
+  * @net_fill_forward_path: Called from .ndo_fill_forward_path in order to
+  *	resolve a path for hardware flow offloading
 + * @net_fill_receive_path: Called from .ndo_fill_receive_path in order to
 + *	get a path for hardware flow offloading
-  */
- struct ieee80211_ops {
- 	void (*tx)(struct ieee80211_hw *hw,
-@@ -4574,6 +4582,9 @@ struct ieee80211_ops {
- 				struct ieee80211_vif *vif,
- 				struct ieee80211_sta *sta,
- 				u16 old_links, u16 new_links);
+  * @change_vif_links: Change the valid links on an interface, note that while
+  *	removing the old link information is still valid (link_conf pointer),
+  *	but may immediately disappear after the function returns. The old or
+@@ -4570,6 +4572,9 @@ struct ieee80211_ops {
+ 				     struct ieee80211_sta *sta,
+ 				     struct net_device_path_ctx *ctx,
+ 				     struct net_device_path *path);
 +	int (*net_fill_receive_path)(struct ieee80211_hw *hw,
 +				     struct net_device_path_ctx *ctx,
 +				     struct net_device_path *path);
- };
- 
- /**
+ 	int (*change_vif_links)(struct ieee80211_hw *hw,
+ 				struct ieee80211_vif *vif,
+ 				u16 old_links, u16 new_links,
 diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
-index 3d16b09..bbecd2e 100644
+index 1c3a2c9..0057535 100644
 --- a/net/mac80211/driver-ops.h
 +++ b/net/mac80211/driver-ops.h
-@@ -1479,4 +1479,17 @@ int drv_change_sta_links(struct ieee80211_local *local,
- 			 struct ieee80211_sta *sta,
- 			 u16 old_links, u16 new_links);
+@@ -1470,6 +1470,19 @@ static inline int drv_net_fill_forward_path(struct ieee80211_local *local,
+ 	return ret;
+ }
  
 +static inline int drv_net_fill_receive_path(struct ieee80211_local *local,
 +					    struct net_device_path_ctx *ctx,
@@ -87,12 +55,14 @@
 +	return ret;
 +}
 +
- #endif /* __MAC80211_DRIVER_OPS */
+ static inline int drv_net_setup_tc(struct ieee80211_local *local,
+ 				   struct ieee80211_sub_if_data *sdata,
+ 				   struct net_device *dev,
 diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
-index 25a7545..6e76b23 100644
+index a18f80d..b82065c 100644
 --- a/net/mac80211/iface.c
 +++ b/net/mac80211/iface.c
-@@ -920,6 +920,29 @@ out:
+@@ -936,6 +936,28 @@ out:
  	return ret;
  }
  
@@ -118,22 +88,19 @@
 +	return ret;
 +}
 +
-+
  static const struct net_device_ops ieee80211_dataif_8023_ops = {
  	.ndo_open		= ieee80211_open,
  	.ndo_stop		= ieee80211_stop,
-@@ -929,6 +952,7 @@ static const struct net_device_ops ieee80211_dataif_8023_ops = {
+@@ -945,6 +967,7 @@ static const struct net_device_ops ieee80211_dataif_8023_ops = {
  	.ndo_set_mac_address	= ieee80211_change_mac,
  	.ndo_get_stats64	= ieee80211_get_stats64,
  	.ndo_fill_forward_path	= ieee80211_netdev_fill_forward_path,
-+	.ndo_fill_receive_path = ieee80211_netdev_fill_receive_path,
++	.ndo_fill_receive_path	= ieee80211_netdev_fill_receive_path,
+ 	.ndo_setup_tc		= ieee80211_netdev_setup_tc,
  };
  
- static bool ieee80211_iftype_supports_hdr_offload(enum nl80211_iftype iftype)
 diff --git a/net/mac80211/util.c b/net/mac80211/util.c
-old mode 100644
-new mode 100755
-index 608f927..fd63ee3
+index 608f927..fd63ee3 100644
 --- a/net/mac80211/util.c
 +++ b/net/mac80211/util.c
 @@ -914,6 +914,15 @@ struct wireless_dev *ieee80211_vif_to_wdev(struct ieee80211_vif *vif)
diff --git a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0015-mac80211-mtk-fix-build-error-on-Linux-Kernel-5.4.patch b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0014-mac80211-mtk-fix-build-error-on-Linux-Kernel-5.4.patch
similarity index 100%
rename from autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0015-mac80211-mtk-fix-build-error-on-Linux-Kernel-5.4.patch
rename to autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0014-mac80211-mtk-fix-build-error-on-Linux-Kernel-5.4.patch
diff --git a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0014-mac80211-mtk-register-.ndo_setup_tc-to-support-wifi2.patch b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0014-mac80211-mtk-register-.ndo_setup_tc-to-support-wifi2.patch
deleted file mode 100644
index c32e2a0..0000000
--- a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0014-mac80211-mtk-register-.ndo_setup_tc-to-support-wifi2.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From a4cd8f81a63827647e88021cbcfc479f024221cb Mon Sep 17 00:00:00 2001
-From: Sujuan Chen <sujuan.chen@mediatek.com>
-Date: Fri, 23 Dec 2022 18:12:41 +0800
-Subject: [PATCH 14/19] mac80211: mtk: register .ndo_setup_tc to support
- wifi2wifi offload
-
-Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
----
- include/net/mac80211.h |  5 +++++
- net/mac80211/iface.c   | 26 ++++++++++++++++++++++++++
- 2 files changed, 31 insertions(+)
-
-diff --git a/include/net/mac80211.h b/include/net/mac80211.h
-index d1d7fc3..1de9fad 100644
---- a/include/net/mac80211.h
-+++ b/include/net/mac80211.h
-@@ -4227,6 +4227,8 @@ struct ieee80211_prep_tx_info {
-  *	In fact, cannot change from having valid_links and not having them.
-  * @net_fill_receive_path: Called from .ndo_fill_receive_path in order to
-  *	get a path for hardware flow offloading
-+  * @net_setup_tc: Called from .ndo_setup_tc in order to register flowblock
-+ *	callback function
-  */
- struct ieee80211_ops {
- 	void (*tx)(struct ieee80211_hw *hw,
-@@ -4585,6 +4587,9 @@ struct ieee80211_ops {
- 	int (*net_fill_receive_path)(struct ieee80211_hw *hw,
- 				     struct net_device_path_ctx *ctx,
- 				     struct net_device_path *path);
-+	int (*net_setup_tc)(struct ieee80211_hw *hw,
-+			    struct net_device *dev,
-+			    int type, void *type_data);
- };
- 
- /**
-diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
-index 6e76b23..b80fb66 100644
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -942,6 +942,30 @@ static int ieee80211_netdev_fill_receive_path(struct net_device_path_ctx *ctx,
- 	return ret;
- }
- 
-+static int ieee80211_netdev_setup_tc(struct net_device *dev,
-+					       enum tc_setup_type type, void *type_data)
-+{
-+	struct ieee80211_sub_if_data *sdata;
-+	struct ieee80211_local *local;
-+	int ret = -ENOENT;
-+
-+	sdata = IEEE80211_DEV_TO_SUB_IF(dev);
-+	local = sdata->local;
-+
-+	if (!local->ops->net_setup_tc)
-+		return -EOPNOTSUPP;
-+
-+	if (!type_data)
-+		return -EINVAL;
-+
-+	rcu_read_lock();
-+
-+	ret = local->ops->net_setup_tc(&local->hw, dev, (int)type, type_data);
-+
-+	rcu_read_unlock();
-+
-+	return ret;
-+}
- 
- static const struct net_device_ops ieee80211_dataif_8023_ops = {
- 	.ndo_open		= ieee80211_open,
-@@ -953,6 +977,7 @@ static const struct net_device_ops ieee80211_dataif_8023_ops = {
- 	.ndo_get_stats64	= ieee80211_get_stats64,
- 	.ndo_fill_forward_path	= ieee80211_netdev_fill_forward_path,
- 	.ndo_fill_receive_path = ieee80211_netdev_fill_receive_path,
-+	.ndo_setup_tc		= ieee80211_netdev_setup_tc,
- };
- 
- static bool ieee80211_iftype_supports_hdr_offload(enum nl80211_iftype iftype)
-@@ -1482,6 +1507,7 @@ static void ieee80211_if_setup(struct net_device *dev)
- 	ether_setup(dev);
- 	dev->priv_flags &= ~IFF_TX_SKB_SHARING;
- 	dev->priv_flags |= IFF_NO_QUEUE;
-+	dev->features |= NETIF_F_HW_TC;
- 	dev->netdev_ops = &ieee80211_dataif_ops;
- 	dev->needs_free_netdev = true;
- 	dev->priv_destructor = ieee80211_if_free;
--- 
-2.18.0
-
diff --git a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0016-mac80211-mtk-track-obss-color-bitmap.patch b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0015-mac80211-mtk-track-obss-color-bitmap.patch
similarity index 95%
rename from autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0016-mac80211-mtk-track-obss-color-bitmap.patch
rename to autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0015-mac80211-mtk-track-obss-color-bitmap.patch
index 0c4ec80..a97deae 100644
--- a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0016-mac80211-mtk-track-obss-color-bitmap.patch
+++ b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0015-mac80211-mtk-track-obss-color-bitmap.patch
@@ -27,7 +27,7 @@
  	struct ieee80211_fils_discovery fils_discovery;
  	u32 unsol_bcast_probe_resp_interval;
  	struct cfg80211_bitrate_mask beacon_tx_rate;
-@@ -7250,7 +7251,7 @@ ieee80211_get_unsol_bcast_probe_resp_tmpl(struct ieee80211_hw *hw,
+@@ -7248,7 +7249,7 @@ ieee80211_get_unsol_bcast_probe_resp_tmpl(struct ieee80211_hw *hw,
  					  struct ieee80211_vif *vif);
  
  /**
@@ -36,7 +36,7 @@
   * collision.
   *
   * @vif: &struct ieee80211_vif pointer from the add_interface callback.
-@@ -7259,7 +7260,7 @@ ieee80211_get_unsol_bcast_probe_resp_tmpl(struct ieee80211_hw *hw,
+@@ -7257,7 +7258,7 @@ ieee80211_get_unsol_bcast_probe_resp_tmpl(struct ieee80211_hw *hw,
   * @gfp: allocation flags
   */
  void
@@ -92,7 +92,7 @@
 index 9f43775..71e312f 100644
 --- a/net/mac80211/trace.h
 +++ b/net/mac80211/trace.h
-@@ -3026,6 +3026,27 @@ TRACE_EVENT(stop_queue,
+@@ -3051,6 +3051,27 @@ TRACE_EVENT(stop_queue,
  	)
  );
  
diff --git a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0017-mac80211-mtk-aging-color-bitmap.patch b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0016-mac80211-mtk-aging-color-bitmap.patch
similarity index 98%
rename from autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0017-mac80211-mtk-aging-color-bitmap.patch
rename to autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0016-mac80211-mtk-aging-color-bitmap.patch
index b93c42f..8953cb9 100644
--- a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0017-mac80211-mtk-aging-color-bitmap.patch
+++ b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0016-mac80211-mtk-aging-color-bitmap.patch
@@ -104,7 +104,7 @@
  
  	if (sdata->wdev.cac_started) {
  		chandef = sdata->vif.bss_conf.chandef;
-@@ -1479,6 +1480,10 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
+@@ -1470,6 +1471,10 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
  
  	set_bit(SDATA_STATE_RUNNING, &sdata->state);
  
