2010/12/21 Bruno Randolf <b...@einfach.org>:
> Let ath5k_hw_txpower() decide if it can re-use the powertable or if it has to
> be recalculated instead of passing a 'fast' flag from the outside.
>
> Signed-off-by: Bruno Randolf <b...@einfach.org>
> ---
>  drivers/net/wireless/ath/ath5k/ath5k.h |    1 +
>  drivers/net/wireless/ath/ath5k/phy.c   |   35 
> ++++++++++++--------------------
>  2 files changed, 14 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h 
> b/drivers/net/wireless/ath/ath5k/ath5k.h
> index d6e7440..e6491bf 100644
> --- a/drivers/net/wireless/ath/ath5k/ath5k.h
> +++ b/drivers/net/wireless/ath/ath5k/ath5k.h
> @@ -1113,6 +1113,7 @@ struct ath5k_hw {
>                s16             txp_cck_ofdm_gainf_delta;
>                /* Value in dB units */
>                s16             txp_cck_ofdm_pwr_delta;
> +               bool            txp_setup;
>        } ah_txpower;
>
>        struct {
> diff --git a/drivers/net/wireless/ath/ath5k/phy.c 
> b/drivers/net/wireless/ath/ath5k/phy.c
> index f84afb4..7c6d7dc 100644
> --- a/drivers/net/wireless/ath/ath5k/phy.c
> +++ b/drivers/net/wireless/ath/ath5k/phy.c
> @@ -3004,6 +3004,8 @@ ath5k_setup_channel_powertable(struct ath5k_hw *ah,
>                return -EINVAL;
>        }
>
> +       ah->ah_txpower.txp_setup = true;
> +
>        return 0;
>  }
>
> @@ -3105,9 +3107,10 @@ ath5k_setup_rate_powertable(struct ath5k_hw *ah, u16 
> max_pwr,
>  */
>  static int
>  ath5k_hw_txpower(struct ath5k_hw *ah, struct ieee80211_channel *channel,
> -               u8 ee_mode, u8 txpower, bool fast)
> +               u8 ee_mode, u8 txpower)
>  {
>        struct ath5k_rate_pcal_info rate_info;
> +       struct ieee80211_channel *curr_channel = ah->ah_current_channel;
>        u8 type;
>        int ret;
>
> @@ -3138,10 +3141,13 @@ ath5k_hw_txpower(struct ath5k_hw *ah, struct 
> ieee80211_channel *channel,
>                return -EINVAL;
>        }
>
> -       /* If fast is set it means we are on the same channel/mode
> -        * so there is no need to recalculate the powertable, we 'll
> -        * just use the cached one */
> -       if (!fast) {
> +       /*
> +        * If we don't change channel/mode skip tx powertable calculation
> +        * and use the cached one.
> +        */
> +       if (!ah->ah_txpower.txp_setup ||
> +           (channel->hw_value != curr_channel->hw_value) ||
> +           (channel->center_freq != curr_channel->center_freq)) {
>                /* Reset TX power values */
>                memset(&ah->ah_txpower, 0, sizeof(ah->ah_txpower));
>                ah->ah_txpower.txp_tpc = AR5K_TUNE_TPC_TXPOWER;
> @@ -3159,8 +3165,6 @@ ath5k_hw_txpower(struct ath5k_hw *ah, struct 
> ieee80211_channel *channel,
>        else
>                ath5k_setup_pcdac_table(ah);
>
> -
> -
>        /* Limit max power if we have a CTL available */
>        ath5k_get_max_ctl_power(ah, channel);
>
> @@ -3238,7 +3242,7 @@ int ath5k_hw_set_txpower_limit(struct ath5k_hw *ah, u8 
> txpower)
>        ATH5K_DBG(ah->ah_sc, ATH5K_DEBUG_TXPOWER,
>                "changing txpower to %d\n", txpower);
>
> -       return ath5k_hw_txpower(ah, channel, ee_mode, txpower, true);
> +       return ath5k_hw_txpower(ah, channel, ee_mode, txpower);
>  }
>
>  /*************\
> @@ -3251,7 +3255,6 @@ int ath5k_hw_phy_init(struct ath5k_hw *ah, struct 
> ieee80211_channel *channel,
>        struct ieee80211_channel *curr_channel;
>        int ret, i;
>        u32 phy_tst1;
> -       bool fast_txp;
>        ret = 0;
>
>        /*
> @@ -3282,17 +3285,6 @@ int ath5k_hw_phy_init(struct ath5k_hw *ah, struct 
> ieee80211_channel *channel,
>        }
>
>        /*
> -        * If we don't change channel/mode skip
> -        * tx powertable calculation and use the
> -        * cached one.
> -        */
> -       if ((channel->hw_value == curr_channel->hw_value) &&
> -       (channel->center_freq == curr_channel->center_freq))
> -               fast_txp = true;
> -       else
> -               fast_txp = false;
> -
> -       /*
>         * Set TX power
>         *
>         * Note: We need to do that before we set
> @@ -3300,8 +3292,7 @@ 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,
> -                               fast_txp);
> +                               ah->ah_txpower.txp_max_pwr / 2);
>        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