diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/0006-mt76-mt7915-add-the-maximum-size-of-beacon-offload.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/0006-mt76-mt7915-add-the-maximum-size-of-beacon-offload.patch
deleted file mode 100644
index 8cebede..0000000
--- a/autobuild_mac80211_release/package/kernel/mt76/patches/0006-mt76-mt7915-add-the-maximum-size-of-beacon-offload.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From f07ccb594e7e4653db40a84ac34f12958dc7a4bd Mon Sep 17 00:00:00 2001
-From: MeiChia Chiu <meichia.chiu@mediatek.com>
-Date: Mon, 23 May 2022 17:09:52 +0800
-Subject: [PATCH 06/12] mt76: mt7915: add the maximum size of beacon offload
-
-add the maximum size of beacon offload to avoid exceeding the size limit
-
-Signed-off-by: Money Wang <Money.Wang@mediatek.com>
-Signed-off-by: MeiChia Chiu <MeiChia.Chiu@mediatek.com>
----
- mt7915/mcu.c | 11 +++++++++--
- mt7915/mcu.h |  3 +++
- 2 files changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/mt7915/mcu.c b/mt7915/mcu.c
-index f513005..3a88638 100644
---- a/mt7915/mcu.c
-+++ b/mt7915/mcu.c
-@@ -1937,6 +1937,13 @@ mt7915_mcu_beacon_inband_discov(struct mt7915_dev *dev, struct ieee80211_vif *vi
- 	len = sizeof(*discov) + MT_TXD_SIZE + skb->len;
- 	len = (len & 0x3) ? ((len | 0x3) + 1) : len;
- 
-+	if (len > (MAX_BEACON_SIZE + MAX_INBND_FRME_SIZE +
-+		   MT7915_BEACON_UPDATE_SIZE) - rskb->len) {
-+		dev_err(dev->mt76.dev, "inband discovery size limit exceed\n");
-+		dev_kfree_skb(skb);
-+		return;
-+	}
-+
- 	tlv = mt7915_mcu_add_nested_subtlv(rskb, BSS_INFO_BCN_DISCOV,
- 					   len, &bcn->sub_ntlv, &bcn->len);
- 	discov = (struct bss_info_inband_discovery *)tlv;
-@@ -1959,7 +1966,6 @@ mt7915_mcu_beacon_inband_discov(struct mt7915_dev *dev, struct ieee80211_vif *vi
- int mt7915_mcu_add_beacon(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
- 			  int en, u32 changed)
- {
--#define MAX_BEACON_SIZE 512
- 	struct mt7915_dev *dev = mt7915_hw_dev(hw);
- 	struct mt7915_phy *phy = mt7915_hw_phy(hw);
- 	struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
-@@ -1968,7 +1974,8 @@ int mt7915_mcu_add_beacon(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
- 	struct sk_buff *skb, *rskb;
- 	struct tlv *tlv;
- 	struct bss_info_bcn *bcn;
--	int len = MT7915_BEACON_UPDATE_SIZE + MAX_BEACON_SIZE;
-+	int len = MT7915_BEACON_UPDATE_SIZE + MAX_BEACON_SIZE +
-+		  MAX_INBND_FRME_SIZE;
- 	bool ext_phy = phy != &dev->phy;
- 
- 	if (vif->bss_conf.nontransmitted)
-diff --git a/mt7915/mcu.h b/mt7915/mcu.h
-index bd9c6dc..b82f258 100644
---- a/mt7915/mcu.h
-+++ b/mt7915/mcu.h
-@@ -453,6 +453,9 @@ enum {
- 	SER_RECOVER
- };
- 
-+#define MAX_BEACON_SIZE 512
-+#define MAX_INBND_FRME_SIZE 256
-+
- #define MT7915_BSS_UPDATE_MAX_SIZE	(sizeof(struct sta_req_hdr) +	\
- 					 sizeof(struct bss_info_omac) +	\
- 					 sizeof(struct bss_info_basic) +\
--- 
-2.18.0
-
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/0007-mt76-mt7915-update-mpdu-density-in-6g-capability.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/0007-mt76-mt7915-update-mpdu-density-in-6g-capability.patch
deleted file mode 100644
index e5fe5f0..0000000
--- a/autobuild_mac80211_release/package/kernel/mt76/patches/0007-mt76-mt7915-update-mpdu-density-in-6g-capability.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 90fdd58113eb001c67e05845991b956b6f087880 Mon Sep 17 00:00:00 2001
-From: Peter Chiu <chui-hao.chiu@mediatek.com>
-Date: Mon, 6 Jun 2022 17:03:07 +0800
-Subject: [PATCH 07/12] mt76: mt7915: update mpdu density in 6g capability
-
-Set mpdu density to 2 usec in 6g capability.
-
-Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
----
- mt7915/init.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mt7915/init.c b/mt7915/init.c
-index 39936b3..8554c9d 100644
---- a/mt7915/init.c
-+++ b/mt7915/init.c
-@@ -982,7 +982,7 @@ mt7915_init_he_caps(struct mt7915_phy *phy, enum nl80211_band band,
- 			u16 cap = IEEE80211_HE_6GHZ_CAP_TX_ANTPAT_CONS |
- 				  IEEE80211_HE_6GHZ_CAP_RX_ANTPAT_CONS;
- 
--			cap |= u16_encode_bits(IEEE80211_HT_MPDU_DENSITY_8,
-+			cap |= u16_encode_bits(IEEE80211_HT_MPDU_DENSITY_2,
- 					       IEEE80211_HE_6GHZ_CAP_MIN_MPDU_START) |
- 			       u16_encode_bits(IEEE80211_VHT_MAX_AMPDU_1024K,
- 					       IEEE80211_HE_6GHZ_CAP_MAX_AMPDU_LEN_EXP) |
--- 
-2.18.0
-
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/0009-mt76-check-starec-newly.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/0009-mt76-check-starec-newly.patch
deleted file mode 100644
index d6be2d2..0000000
--- a/autobuild_mac80211_release/package/kernel/mt76/patches/0009-mt76-check-starec-newly.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 2c6d87aad4535b918828b5d01e51650901131cd1 Mon Sep 17 00:00:00 2001
-From: Shayne Chen <shayne.chen@mediatek.com>
-Date: Wed, 15 Jun 2022 23:15:13 +0800
-Subject: [PATCH 09/12] check starec newly
-
----
- mt7915/main.c | 2 +-
- mt7915/mcu.c  | 4 +++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/mt7915/main.c b/mt7915/main.c
-index 7934981..3958799 100644
---- a/mt7915/main.c
-+++ b/mt7915/main.c
-@@ -235,7 +235,6 @@ static int mt7915_add_interface(struct ieee80211_hw *hw,
- 	mt7915_mac_wtbl_update(dev, idx,
- 			       MT_WTBL_UPDATE_ADM_COUNT_CLEAR);
- 
--	rcu_assign_pointer(dev->mt76.wcid[idx], &mvif->sta.wcid);
- 	if (vif->txq) {
- 		mtxq = (struct mt76_txq *)vif->txq->drv_priv;
- 		mtxq->wcid = idx;
-@@ -251,6 +250,7 @@ static int mt7915_add_interface(struct ieee80211_hw *hw,
- 
- 	mt7915_mcu_add_bss_info(phy, vif, true);
- 	mt7915_mcu_add_sta(dev, vif, NULL, true);
-+	rcu_assign_pointer(dev->mt76.wcid[idx], &mvif->sta.wcid);
- 
- out:
- 	mutex_unlock(&dev->mt76.mutex);
-diff --git a/mt7915/mcu.c b/mt7915/mcu.c
-index 1b7a630..a726021 100644
---- a/mt7915/mcu.c
-+++ b/mt7915/mcu.c
-@@ -1610,6 +1610,7 @@ int mt7915_mcu_add_sta(struct mt7915_dev *dev, struct ieee80211_vif *vif,
- 	struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
- 	struct mt7915_sta *msta;
- 	struct sk_buff *skb;
-+	bool newly;
- 	int ret;
- 
- 	msta = sta ? (struct mt7915_sta *)sta->drv_priv : &mvif->sta;
-@@ -1620,7 +1621,8 @@ int mt7915_mcu_add_sta(struct mt7915_dev *dev, struct ieee80211_vif *vif,
- 		return PTR_ERR(skb);
- 
- 	/* starec basic */
--	mt76_connac_mcu_sta_basic_tlv(skb, vif, sta, enable, true);
-+	newly = !rcu_access_pointer(dev->mt76.wcid[msta->wcid.idx]);
-+	mt76_connac_mcu_sta_basic_tlv(skb, vif, sta, enable, newly);
- 	if (!enable)
- 		goto out;
- 
--- 
-2.18.0
-
diff --git a/autobuild_mac80211_release/package/kernel/mt76/patches/0011-mt76-do-not-check-the-ccmp-pn-for-ONLY_MONITOR-frame.patch b/autobuild_mac80211_release/package/kernel/mt76/patches/0011-mt76-do-not-check-the-ccmp-pn-for-ONLY_MONITOR-frame.patch
deleted file mode 100644
index 9616b13..0000000
--- a/autobuild_mac80211_release/package/kernel/mt76/patches/0011-mt76-do-not-check-the-ccmp-pn-for-ONLY_MONITOR-frame.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 975fc0afe9673689b2364b261dbe1f8f7fc58c56 Mon Sep 17 00:00:00 2001
-From: MeiChia Chiu <meichia.chiu@mediatek.com>
-Date: Mon, 20 Jun 2022 17:42:19 +0800
-Subject: [PATCH 11/12] mt76: do not check the ccmp pn for ONLY_MONITOR frame
-
-if the received frame enables RX_FLAG_ONLY_MONITOR,
-driver doesn't need to check the ccmp pn of this frame.
-
-Signed-off-by: MeiChia Chiu <MeiChia.Chiu@mediatek.com>
-Change-Id: I85abba5b66ef3b58739069e04830980384f805d1
----
- mac80211.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/mac80211.c b/mac80211.c
-index 5782244..c1df063 100644
---- a/mac80211.c
-+++ b/mac80211.c
-@@ -1031,6 +1031,9 @@ mt76_check_ccmp_pn(struct sk_buff *skb)
- 	if (!(status->flag & RX_FLAG_DECRYPTED))
- 		return 0;
- 
-+	if (status->flag & RX_FLAG_ONLY_MONITOR)
-+		return 0;
-+
- 	if (!wcid || !wcid->rx_check_pn)
- 		return 0;
- 
--- 
-2.18.0
-
