aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/520-mac80211_cur_txpower.patch
blob: dc848774d445f505d3f61e3c2b30d74386355830 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1622,6 +1622,7 @@ struct ieee80211_hw {
 	u8 max_tx_aggregation_subframes;
 	u8 offchannel_tx_hw_queue;
 	u8 radiotap_mcs_details;
+	s8 cur_power_level;
 	u16 radiotap_vht_details;
 	netdev_features_t netdev_features;
 	u8 uapsd_queues;
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2283,7 +2283,9 @@ static int ieee80211_get_tx_power(struct
 	struct ieee80211_local *local = wiphy_priv(wiphy);
 	struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
 
-	if (!local->use_chanctx)
+	if (local->hw.cur_power_level)
+		*dbm = local->hw.cur_power_level;
+	else if (!local->use_chanctx)
 		*dbm = local->hw.conf.power_level;
 	else
 		*dbm = sdata->vif.bss_conf.txpower;
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -167,6 +167,7 @@ static u32 ieee80211_hw_conf_chan(struct
 
 	if (local->hw.conf.power_level != power) {
 		changed |= IEEE80211_CONF_CHANGE_POWER;
+		local->hw.cur_power_level = power;
 		local->hw.conf.power_level = power;
 	}