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

