ath9k: Allow user to change tx power when asked
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Wed, 22 Oct 2008 20:28:45 +0000 (13:28 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 31 Oct 2008 23:00:54 +0000 (19:00 -0400)
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>
drivers/net/wireless/ath9k/main.c
drivers/net/wireless/ath9k/xmit.c

index a7656a3ea1b098d661eafd7f304b5440937bca00..795fed5cadfa5eb8436295291bd84ccd17f3430e 100644 (file)
@@ -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)
index 8073c71b3a675b62c6c12fd7f952f1f1f78759f7..2f27a04487b49d76491d5b29ced55ff26984f9d9 100644 (file)
@@ -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 */