2010/12/21 Bruno Randolf <br1@xxxxxxxxxxx>: > 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 <br1@xxxxxxxxxxx> > --- > Â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 <mickflemm@xxxxxxxxx> -- GPG ID: 0xD21DB2DB As you read this post global entropy rises. Have Fun ;-) Nick -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html