aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/ath9k/main.c3
-rw-r--r--drivers/net/wireless/ath9k/xmit.c8
2 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
index a7656a3ea1b..795fed5cadf 100644
--- a/drivers/net/wireless/ath9k/main.c
+++ b/drivers/net/wireless/ath9k/main.c
@@ -1250,7 +1250,8 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
sc->sc_ah->ah_channels[pos].chanmode =
ath_get_extchanmode(sc, curchan);
- sc->sc_config.txpowlimit = 2 * conf->power_level;
+ if (changed & IEEE80211_CONF_CHANGE_POWER)
+ sc->sc_config.txpowlimit = 2 * conf->power_level;
/* set h/w channel */
if (ath_set_channel(sc, &sc->sc_ah->ah_channels[pos]) < 0)
diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c
index 8073c71b3a6..2f27a04487b 100644
--- a/drivers/net/wireless/ath9k/xmit.c
+++ b/drivers/net/wireless/ath9k/xmit.c
@@ -230,7 +230,13 @@ static int ath_tx_prepare(struct ath_softc *sc,
txctl->if_id = 0;
txctl->frmlen = skb->len + FCS_LEN - (hdrlen & 3);
- txctl->txpower = MAX_RATE_POWER; /* FIXME */
+
+ /* Always try at highest power possible unless the the device
+ * was configured by the user to use another power. */
+ if (likely(sc->sc_config.txpowlimit == ATH_TXPOWER_MAX))
+ txctl->txpower = ATH_TXPOWER_MAX;
+ else
+ txctl->txpower = sc->sc_config.txpowlimit;
/* Fill Key related fields */