--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1251,6 +1251,8 @@ int ath9k_config(struct ieee80211_hw *hw
 			return -EINVAL;
 		}
 
+		hw->cur_power_level = sc->curtxpow / 2;
+
 		/*
 		 * The most recent snapshot of channel->noisefloor for the old
 		 * channel is only available after the hardware reset. Copy it to
@@ -1265,6 +1267,7 @@ int ath9k_config(struct ieee80211_hw *hw
 		sc->config.txpowlimit = 2 * conf->power_level;
 		ath9k_cmn_update_txpow(ah, sc->curtxpow,
 				       sc->config.txpowlimit, &sc->curtxpow);
+		hw->cur_power_level = sc->curtxpow / 2;
 	}
 
 	mutex_unlock(&sc->mutex);