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