2010/12/21 Bruno Randolf <b...@einfach.org>:
> Add a new variable to keep track of the currently configured tx power. Before
> max_pwr was re-used for keeping the maximum allowed power as well as the
> current configuration. Doing a min() on it allows you to lower the txpower, 
> but
> how would you be able to make it higher again?
>
> This patch fixes that by adding a new variable ah_cur_pwr which is used 
> instead
> of txp_max_pwr to keep the current configuration. txp_max_pwr is used to check
> if we are within the limits.
>
> Another problem fixed by this patch is that it avoids setting a zero txpower
> when things are initialized first and the current power is not yet set.
>
> Signed-off-by: Bruno Randolf <b...@einfach.org>
> ---
>  drivers/net/wireless/ath/ath5k/ath5k.h |    1 +
>  drivers/net/wireless/ath/ath5k/phy.c   |    7 +++----
>  2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h 
> b/drivers/net/wireless/ath/ath5k/ath5k.h
> index e6491bf..342da28 100644
> --- a/drivers/net/wireless/ath/ath5k/ath5k.h
> +++ b/drivers/net/wireless/ath/ath5k/ath5k.h
> @@ -1107,6 +1107,7 @@ struct ath5k_hw {
>                /* Values in 0.25dB units */
>                s16             txp_min_pwr;
>                s16             txp_max_pwr;
> +               s16             txp_cur_pwr;
>                /* Values in 0.5dB units */
>                s16             txp_offset;
>                s16             txp_ofdm;
> diff --git a/drivers/net/wireless/ath/ath5k/phy.c 
> b/drivers/net/wireless/ath/ath5k/phy.c
> index 6f0cf3a..18c58cd 100644
> --- a/drivers/net/wireless/ath/ath5k/phy.c
> +++ b/drivers/net/wireless/ath/ath5k/phy.c
> @@ -3096,7 +3096,7 @@ ath5k_setup_rate_powertable(struct ath5k_hw *ah, u16 
> max_pwr,
>
>        /* Min/max in 0.25dB units */
>        ah->ah_txpower.txp_min_pwr = 2 * rates[7];
> -       ah->ah_txpower.txp_max_pwr = 2 * rates[0];
> +       ah->ah_txpower.txp_cur_pwr = 2 * rates[0];
>        ah->ah_txpower.txp_ofdm = rates[7];
>  }
>
> @@ -3150,8 +3150,6 @@ ath5k_hw_txpower(struct ath5k_hw *ah, struct 
> ieee80211_channel *channel,
>                /* Reset TX power values */
>                memset(&ah->ah_txpower, 0, sizeof(ah->ah_txpower));
>                ah->ah_txpower.txp_tpc = AR5K_TUNE_TPC_TXPOWER;
> -               ah->ah_txpower.txp_min_pwr = 0;
> -               ah->ah_txpower.txp_max_pwr = AR5K_TUNE_MAX_TXPOWER;
>
>                /* Calculate the powertable */
>                ret = ath5k_setup_channel_powertable(ah, channel,
> @@ -3290,7 +3288,8 @@ int ath5k_hw_phy_init(struct ath5k_hw *ah, struct 
> ieee80211_channel *channel,
>         * properly set curve indices.
>         */
>        ret = ath5k_hw_txpower(ah, channel, ee_mode,
> -                               ah->ah_txpower.txp_max_pwr / 2);
> +               ah->ah_txpower.txp_cur_pwr ?
> +                       ah->ah_txpower.txp_cur_pwr / 2 : 
> AR5K_TUNE_MAX_TXPOWER);
>        if (ret)
>                return ret;
>
>
>

Acked-by: Nick Kossifidis <mickfl...@gmail.com>


-- 
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to