--- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -816,7 +816,7 @@ enum ieee80211_smps_mode { */ struct ieee80211_conf { u32 flags; - int power_level, dynamic_ps_timeout; + int cur_power_level, power_level, dynamic_ps_timeout; int max_sleep_period; u16 listen_interval; --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -1696,7 +1696,7 @@ static int ieee80211_get_tx_power(struct { struct ieee80211_local *local = wiphy_priv(wiphy); - *dbm = local->hw.conf.power_level; + *dbm = local->hw.conf.cur_power_level; return 0; } --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -167,6 +167,7 @@ int ieee80211_hw_config(struct ieee80211 if (local->hw.conf.power_level != power) { changed |= IEEE80211_CONF_CHANGE_POWER; + local->hw.conf.cur_power_level = power; local->hw.conf.power_level = power; }