diff --git a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/bp-0001-Revert-mac80211_configure_antenna_gain.patch b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/bp-0001-Revert-mac80211_configure_antenna_gain.patch
deleted file mode 100644
index 7c29367..0000000
--- a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/bp-0001-Revert-mac80211_configure_antenna_gain.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-From cefd58077419436745c1ca07daf75419c96e36b5 Mon Sep 17 00:00:00 2001
-From: Shayne Chen <shayne.chen@mediatek.com>
-Date: Tue, 18 Apr 2023 15:37:08 +0800
-Subject: [PATCH 1/9] Revert mac80211_configure_antenna_gain
-
----
- include/net/cfg80211.h       |  2 --
- include/net/mac80211.h       |  2 --
- include/uapi/linux/nl80211.h |  5 -----
- net/mac80211/cfg.c           | 14 --------------
- net/mac80211/ieee80211_i.h   |  1 -
- net/mac80211/main.c          |  9 +--------
- net/wireless/nl80211.c       | 17 -----------------
- 7 files changed, 1 insertion(+), 49 deletions(-)
-
-diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
-index 357a78f..803949b 100644
---- a/include/net/cfg80211.h
-+++ b/include/net/cfg80211.h
-@@ -4081,7 +4081,6 @@ 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
-- * @set_antenna_gain: set antenna gain to reduce maximum tx power if necessary
-  *
-  * @rfkill_poll: polls the hw rfkill line, use cfg80211 reporting
-  *	functions to adjust rfkill hw state
-@@ -4432,7 +4431,6 @@ struct cfg80211_ops {
- 				enum nl80211_tx_power_setting type, int mbm);
- 	int	(*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
- 				int *dbm);
--	int	(*set_antenna_gain)(struct wiphy *wiphy, int dbi);
- 
- 	void	(*rfkill_poll)(struct wiphy *wiphy);
- 
-diff --git a/include/net/mac80211.h b/include/net/mac80211.h
-index da3c3b3..9c59eb8 100644
---- a/include/net/mac80211.h
-+++ b/include/net/mac80211.h
-@@ -1677,7 +1677,6 @@ enum ieee80211_smps_mode {
-  *
-  * @power_level: requested transmit power (in dBm), backward compatibility
-  *	value only that is set to the minimum of all interfaces
-- * @max_antenna_gain: maximum antenna gain adjusted by user config (in dBi)
-  *
-  * @chandef: the channel definition to tune to
-  * @radar_enabled: whether radar detection is enabled
-@@ -1698,7 +1697,6 @@ enum ieee80211_smps_mode {
- struct ieee80211_conf {
- 	u32 flags;
- 	int power_level, dynamic_ps_timeout;
--	int max_antenna_gain;
- 
- 	u16 listen_interval;
- 	u8 ps_dtim_period;
-diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
-index ba4aa09..c32e761 100644
---- a/include/uapi/linux/nl80211.h
-+++ b/include/uapi/linux/nl80211.h
-@@ -2749,9 +2749,6 @@ enum nl80211_commands {
-  *	When used with %NL80211_CMD_FRAME_TX_STATUS, indicates the ack RX
-  *	timestamp. When used with %NL80211_CMD_FRAME RX notification, indicates
-  *	the incoming frame RX timestamp.
-- * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce
-- *	transmit power to stay within regulatory limits. u32, dBi.
-- *
-  * @NUM_NL80211_ATTR: total number of nl80211_attrs available
-  * @NL80211_ATTR_MAX: highest attribute number currently defined
-  * @__NL80211_ATTR_AFTER_LAST: internal use
-@@ -3280,8 +3277,6 @@ enum nl80211_attrs {
- 	NL80211_ATTR_TX_HW_TIMESTAMP,
- 	NL80211_ATTR_RX_HW_TIMESTAMP,
- 
--	NL80211_ATTR_WIPHY_ANTENNA_GAIN,
--
- 	/* add attributes here, update the policy in nl80211.c */
- 
- 	__NL80211_ATTR_AFTER_LAST,
-diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
-index 5397fe9..7a5e459 100644
---- a/net/mac80211/cfg.c
-+++ b/net/mac80211/cfg.c
-@@ -3046,19 +3046,6 @@ static int ieee80211_get_tx_power(struct wiphy *wiphy,
- 	return 0;
- }
- 
--static int ieee80211_set_antenna_gain(struct wiphy *wiphy, int dbi)
--{
--	struct ieee80211_local *local = wiphy_priv(wiphy);
--
--	if (dbi < 0)
--		return -EINVAL;
--
--	local->user_antenna_gain = dbi;
--	ieee80211_hw_config(local, 0);
--
--	return 0;
--}
--
- static void ieee80211_rfkill_poll(struct wiphy *wiphy)
- {
- 	struct ieee80211_local *local = wiphy_priv(wiphy);
-@@ -4966,7 +4953,6 @@ const struct cfg80211_ops mac80211_config_ops = {
- 	.set_wiphy_params = ieee80211_set_wiphy_params,
- 	.set_tx_power = ieee80211_set_tx_power,
- 	.get_tx_power = ieee80211_get_tx_power,
--	.set_antenna_gain = ieee80211_set_antenna_gain,
- 	.rfkill_poll = ieee80211_rfkill_poll,
- 	CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd)
- 	CFG80211_TESTMODE_DUMP(ieee80211_testmode_dump)
-diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
-index e7bcdea..a4fab9a 100644
---- a/net/mac80211/ieee80211_i.h
-+++ b/net/mac80211/ieee80211_i.h
-@@ -1538,7 +1538,6 @@ struct ieee80211_local {
- 	int dynamic_ps_forced_timeout;
- 
- 	int user_power_level; /* in dBm, for all interfaces */
--	int user_antenna_gain; /* in dBi */
- 
- 	enum ieee80211_smps_mode smps_mode;
- 
-diff --git a/net/mac80211/main.c b/net/mac80211/main.c
-index 83a1482..dfb9f4b 100644
---- a/net/mac80211/main.c
-+++ b/net/mac80211/main.c
-@@ -96,7 +96,7 @@ static u32 ieee80211_hw_conf_chan(struct ieee80211_local *local)
- 	struct ieee80211_sub_if_data *sdata;
- 	struct cfg80211_chan_def chandef = {};
- 	u32 changed = 0;
--	int power, max_power;
-+	int power;
- 	u32 offchannel_flag;
- 
- 	offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL;
-@@ -157,12 +157,6 @@ static u32 ieee80211_hw_conf_chan(struct ieee80211_local *local)
- 	}
- 	rcu_read_unlock();
- 
--	max_power = chandef.chan->max_reg_power;
--	if (local->user_antenna_gain > 0) {
--		max_power -= local->user_antenna_gain;
--		power = min(power, max_power);
--	}
--
- 	if (local->hw.conf.power_level != power) {
- 		changed |= IEEE80211_CONF_CHANGE_POWER;
- 		local->hw.conf.power_level = power;
-@@ -768,7 +762,6 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
- 					 IEEE80211_RADIOTAP_MCS_HAVE_BW;
- 	local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI |
- 					 IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH;
--	local->user_antenna_gain = 0;
- 	local->hw.uapsd_queues = IEEE80211_DEFAULT_UAPSD_QUEUES;
- 	local->hw.uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN;
- 	local->hw.max_mtu = IEEE80211_MAX_DATA_LEN;
-diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
-index 507c868..777c141 100644
---- a/net/wireless/nl80211.c
-+++ b/net/wireless/nl80211.c
-@@ -799,7 +799,6 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
- 	[NL80211_ATTR_MLD_ADDR] = NLA_POLICY_EXACT_LEN(ETH_ALEN),
- 	[NL80211_ATTR_MLO_SUPPORT] = { .type = NLA_FLAG },
- 	[NL80211_ATTR_MAX_NUM_AKM_SUITES] = { .type = NLA_REJECT },
--	[NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 },
- };
- 
- /* policy for the key attributes */
-@@ -3513,22 +3512,6 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
- 			goto out;
- 	}
- 
--	if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_GAIN]) {
--		int idx, dbi = 0;
--
--		if (!rdev->ops->set_antenna_gain) {
--			result = -EOPNOTSUPP;
--			goto out;
--		}
--
--		idx = NL80211_ATTR_WIPHY_ANTENNA_GAIN;
--		dbi = nla_get_u32(info->attrs[idx]);
--
--		result = rdev->ops->set_antenna_gain(&rdev->wiphy, dbi);
--		if (result)
--			goto out;
--	}
--
- 	if (info->attrs[NL80211_ATTR_WIPHY_TX_POWER_SETTING]) {
- 		struct wireless_dev *txp_wdev = wdev;
- 		enum nl80211_tx_power_setting type;
--- 
-2.39.2
-
