summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath9k
diff options
context:
space:
mode:
authorLuis R. Rodriguez <lrodriguez@atheros.com>2008-10-22 13:28:45 -0700
committerJohn W. Linville <linville@tuxdriver.com>2008-10-31 19:00:54 -0400
commit5c020dc6a0f75de3cd75d9cca3b589abc1826fc5 (patch)
tree3b70d0b8ad905871f669add6dda016737b4cfae0 /drivers/net/wireless/ath9k
parentf97e40078e44c1db96269286adc0b12dc8eae3c2 (diff)
downloadkernel-crypto-5c020dc6a0f75de3cd75d9cca3b589abc1826fc5.tar.gz
kernel-crypto-5c020dc6a0f75de3cd75d9cca3b589abc1826fc5.tar.xz
kernel-crypto-5c020dc6a0f75de3cd75d9cca3b589abc1826fc5.zip
ath9k: Allow user to change tx power when asked
We were also changing tx power even when we were not asked to, this enforces the change only when we are asked nicely. When not asked we simply try to use the max power, we don't tx power at all for rate control. Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath9k')
-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 */