All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gabor Juhos <juhosg@openwrt.org>
To: ath9k-devel@lists.ath9k.org
Subject: [ath9k-devel] [PATCH 1/2] ath9k: add an extra boolean parameter to ath9k_hw_apply_txpower
Date: Tue, 17 Apr 2012 21:33:47 +0200	[thread overview]
Message-ID: <4F8DC59B.3050605@openwrt.org> (raw)
In-Reply-To: <20120417184235.GD2477@tuxdriver.com>

2012.04.17. 20:42 keltez?ssel, John W. Linville ?rta:
> Are these intended as fixes for 3.4?

Yes. Sorry, I forgot to mention that.

-Gabor

> 
> On Sun, Apr 15, 2012 at 08:38:05PM +0200, Gabor Juhos wrote:
>> In order to unifying regulatory limit handling
>> commit ca2c68cc7bc80fc4504fb420df04cce99c9ee6ec
>> (ath9k_hw: clean up tx power handling) introduced
>> a new helper function 'ath9k_hw_apply_txpower',
>> and the direct calls of 'ah->eep_ops->set_txpower'
>> has been replaced by a call of the helper function.
>>
>> This caused a change in the behaviour of the
>> 'ath9k_hw_set_txpowerlimit' function. The purpose
>> of that function is to calculate and store the
>> rate txpower table and the regulatory limit without
>> touching the hardware registers. Before the commit,
>> the 'test' parameter of the function was passed to
>> the 'ah->eep_ops->set_txpower'. Now the calling of
>> the 'set_txpower' function happens indirectly through
>> 'ath9k_hw_apply_txpower', so the 'test' argument of
>> the 'set_txpower' is always 'false'.
>>
>> This patch restores the original behaviour of
>> 'ath9k_hw_set_txpowerlimit' by adding a new
>> argument to 'ath9k_hw_apply_txpower.'
>>
>> Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
>> Acked-by: Felix Fietkau <nbd@openwrt.org>
>> ---
>>  drivers/net/wireless/ath/ath9k/ar5008_phy.c   |    2 +-
>>  drivers/net/wireless/ath/ath9k/ar9003_paprd.c |    2 +-
>>  drivers/net/wireless/ath/ath9k/ar9003_phy.c   |    2 +-
>>  drivers/net/wireless/ath/ath9k/hw.c           |    9 +++++----
>>  drivers/net/wireless/ath/ath9k/hw.h           |    3 ++-
>>  5 files changed, 10 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/ar5008_phy.c b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
>> index de30cb3..8753e38 100644
>> --- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
>> +++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
>> @@ -868,7 +868,7 @@ static int ar5008_hw_process_ini(struct ath_hw *ah,
>>  	ar5008_hw_set_channel_regs(ah, chan);
>>  	ar5008_hw_init_chain_masks(ah);
>>  	ath9k_olc_init(ah);
>> -	ath9k_hw_apply_txpower(ah, chan);
>> +	ath9k_hw_apply_txpower(ah, chan, false);
>>  
>>  	/* Write analog registers */
>>  	if (!ath9k_hw_set_rf_regs(ah, chan, freqIndex)) {
>> diff --git a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
>> index 59647a3..3d400e8 100644
>> --- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
>> +++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
>> @@ -54,7 +54,7 @@ void ar9003_paprd_enable(struct ath_hw *ah, bool val)
>>  
>>  	if (val) {
>>  		ah->paprd_table_write_done = true;
>> -		ath9k_hw_apply_txpower(ah, chan);
>> +		ath9k_hw_apply_txpower(ah, chan, false);
>>  	}
>>  
>>  	REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL0_B0,
>> diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
>> index 4c9bc9f..5d2b584 100644
>> --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
>> +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
>> @@ -690,7 +690,7 @@ static int ar9003_hw_process_ini(struct ath_hw *ah,
>>  	ar9003_hw_override_ini(ah);
>>  	ar9003_hw_set_channel_regs(ah, chan);
>>  	ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask);
>> -	ath9k_hw_apply_txpower(ah, chan);
>> +	ath9k_hw_apply_txpower(ah, chan, false);
>>  
>>  	if (AR_SREV_9462(ah)) {
>>  		if (REG_READ_FIELD(ah, AR_PHY_TX_IQCAL_CONTROL_0,
>> diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
>> index 6fa8128..480e8f8 100644
>> --- a/drivers/net/wireless/ath/ath9k/hw.c
>> +++ b/drivers/net/wireless/ath/ath9k/hw.c
>> @@ -1453,7 +1453,7 @@ static bool ath9k_hw_channel_change(struct ath_hw *ah,
>>  		return false;
>>  	}
>>  	ath9k_hw_set_clockrate(ah);
>> -	ath9k_hw_apply_txpower(ah, chan);
>> +	ath9k_hw_apply_txpower(ah, chan, false);
>>  	ath9k_hw_rfbus_done(ah);
>>  
>>  	if (IS_CHAN_OFDM(chan) || IS_CHAN_HT(chan))
>> @@ -2724,7 +2724,8 @@ static int get_antenna_gain(struct ath_hw *ah, struct ath9k_channel *chan)
>>  	return ah->eep_ops->get_eeprom(ah, gain_param);
>>  }
>>  
>> -void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan)
>> +void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan,
>> +			    bool test)
>>  {
>>  	struct ath_regulatory *reg = ath9k_hw_regulatory(ah);
>>  	struct ieee80211_channel *channel;
>> @@ -2745,7 +2746,7 @@ void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan)
>>  
>>  	ah->eep_ops->set_txpower(ah, chan,
>>  				 ath9k_regd_get_ctl(reg, chan),
>> -				 ant_reduction, new_pwr, false);
>> +				 ant_reduction, new_pwr, test);
>>  }
>>  
>>  void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test)
>> @@ -2758,7 +2759,7 @@ void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test)
>>  	if (test)
>>  		channel->max_power = MAX_RATE_POWER / 2;
>>  
>> -	ath9k_hw_apply_txpower(ah, chan);
>> +	ath9k_hw_apply_txpower(ah, chan, test);
>>  
>>  	if (test)
>>  		channel->max_power = DIV_ROUND_UP(reg->max_power_level, 2);
>> diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
>> index 1d4b983..99b57bd 100644
>> --- a/drivers/net/wireless/ath/ath9k/hw.h
>> +++ b/drivers/net/wireless/ath/ath9k/hw.h
>> @@ -976,7 +976,8 @@ void ath9k_hw_name(struct ath_hw *ah, char *hw_name, size_t len);
>>  /* PHY */
>>  void ath9k_hw_get_delta_slope_vals(struct ath_hw *ah, u32 coef_scaled,
>>  				   u32 *coef_mantissa, u32 *coef_exponent);
>> -void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan);
>> +void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan,
>> +			    bool test);
>>  
>>  /*
>>   * Code Specific to AR5008, AR9001 or AR9002,
>> -- 
>> 1.7.2.1
>>
>>
> 

WARNING: multiple messages have this Message-ID (diff)
From: Gabor Juhos <juhosg@openwrt.org>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org,
	"ath9k-devel@lists.ath9k.org" <ath9k-devel@venema.h4ckr.net>
Subject: Re: [PATCH 1/2] ath9k: add an extra boolean parameter to ath9k_hw_apply_txpower
Date: Tue, 17 Apr 2012 21:33:47 +0200	[thread overview]
Message-ID: <4F8DC59B.3050605@openwrt.org> (raw)
In-Reply-To: <20120417184235.GD2477@tuxdriver.com>

2012.04.17. 20:42 keltezéssel, John W. Linville írta:
> Are these intended as fixes for 3.4?

Yes. Sorry, I forgot to mention that.

-Gabor

> 
> On Sun, Apr 15, 2012 at 08:38:05PM +0200, Gabor Juhos wrote:
>> In order to unifying regulatory limit handling
>> commit ca2c68cc7bc80fc4504fb420df04cce99c9ee6ec
>> (ath9k_hw: clean up tx power handling) introduced
>> a new helper function 'ath9k_hw_apply_txpower',
>> and the direct calls of 'ah->eep_ops->set_txpower'
>> has been replaced by a call of the helper function.
>>
>> This caused a change in the behaviour of the
>> 'ath9k_hw_set_txpowerlimit' function. The purpose
>> of that function is to calculate and store the
>> rate txpower table and the regulatory limit without
>> touching the hardware registers. Before the commit,
>> the 'test' parameter of the function was passed to
>> the 'ah->eep_ops->set_txpower'. Now the calling of
>> the 'set_txpower' function happens indirectly through
>> 'ath9k_hw_apply_txpower', so the 'test' argument of
>> the 'set_txpower' is always 'false'.
>>
>> This patch restores the original behaviour of
>> 'ath9k_hw_set_txpowerlimit' by adding a new
>> argument to 'ath9k_hw_apply_txpower.'
>>
>> Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
>> Acked-by: Felix Fietkau <nbd@openwrt.org>
>> ---
>>  drivers/net/wireless/ath/ath9k/ar5008_phy.c   |    2 +-
>>  drivers/net/wireless/ath/ath9k/ar9003_paprd.c |    2 +-
>>  drivers/net/wireless/ath/ath9k/ar9003_phy.c   |    2 +-
>>  drivers/net/wireless/ath/ath9k/hw.c           |    9 +++++----
>>  drivers/net/wireless/ath/ath9k/hw.h           |    3 ++-
>>  5 files changed, 10 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/ar5008_phy.c b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
>> index de30cb3..8753e38 100644
>> --- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
>> +++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
>> @@ -868,7 +868,7 @@ static int ar5008_hw_process_ini(struct ath_hw *ah,
>>  	ar5008_hw_set_channel_regs(ah, chan);
>>  	ar5008_hw_init_chain_masks(ah);
>>  	ath9k_olc_init(ah);
>> -	ath9k_hw_apply_txpower(ah, chan);
>> +	ath9k_hw_apply_txpower(ah, chan, false);
>>  
>>  	/* Write analog registers */
>>  	if (!ath9k_hw_set_rf_regs(ah, chan, freqIndex)) {
>> diff --git a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
>> index 59647a3..3d400e8 100644
>> --- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
>> +++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
>> @@ -54,7 +54,7 @@ void ar9003_paprd_enable(struct ath_hw *ah, bool val)
>>  
>>  	if (val) {
>>  		ah->paprd_table_write_done = true;
>> -		ath9k_hw_apply_txpower(ah, chan);
>> +		ath9k_hw_apply_txpower(ah, chan, false);
>>  	}
>>  
>>  	REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL0_B0,
>> diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
>> index 4c9bc9f..5d2b584 100644
>> --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
>> +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
>> @@ -690,7 +690,7 @@ static int ar9003_hw_process_ini(struct ath_hw *ah,
>>  	ar9003_hw_override_ini(ah);
>>  	ar9003_hw_set_channel_regs(ah, chan);
>>  	ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask);
>> -	ath9k_hw_apply_txpower(ah, chan);
>> +	ath9k_hw_apply_txpower(ah, chan, false);
>>  
>>  	if (AR_SREV_9462(ah)) {
>>  		if (REG_READ_FIELD(ah, AR_PHY_TX_IQCAL_CONTROL_0,
>> diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
>> index 6fa8128..480e8f8 100644
>> --- a/drivers/net/wireless/ath/ath9k/hw.c
>> +++ b/drivers/net/wireless/ath/ath9k/hw.c
>> @@ -1453,7 +1453,7 @@ static bool ath9k_hw_channel_change(struct ath_hw *ah,
>>  		return false;
>>  	}
>>  	ath9k_hw_set_clockrate(ah);
>> -	ath9k_hw_apply_txpower(ah, chan);
>> +	ath9k_hw_apply_txpower(ah, chan, false);
>>  	ath9k_hw_rfbus_done(ah);
>>  
>>  	if (IS_CHAN_OFDM(chan) || IS_CHAN_HT(chan))
>> @@ -2724,7 +2724,8 @@ static int get_antenna_gain(struct ath_hw *ah, struct ath9k_channel *chan)
>>  	return ah->eep_ops->get_eeprom(ah, gain_param);
>>  }
>>  
>> -void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan)
>> +void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan,
>> +			    bool test)
>>  {
>>  	struct ath_regulatory *reg = ath9k_hw_regulatory(ah);
>>  	struct ieee80211_channel *channel;
>> @@ -2745,7 +2746,7 @@ void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan)
>>  
>>  	ah->eep_ops->set_txpower(ah, chan,
>>  				 ath9k_regd_get_ctl(reg, chan),
>> -				 ant_reduction, new_pwr, false);
>> +				 ant_reduction, new_pwr, test);
>>  }
>>  
>>  void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test)
>> @@ -2758,7 +2759,7 @@ void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test)
>>  	if (test)
>>  		channel->max_power = MAX_RATE_POWER / 2;
>>  
>> -	ath9k_hw_apply_txpower(ah, chan);
>> +	ath9k_hw_apply_txpower(ah, chan, test);
>>  
>>  	if (test)
>>  		channel->max_power = DIV_ROUND_UP(reg->max_power_level, 2);
>> diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
>> index 1d4b983..99b57bd 100644
>> --- a/drivers/net/wireless/ath/ath9k/hw.h
>> +++ b/drivers/net/wireless/ath/ath9k/hw.h
>> @@ -976,7 +976,8 @@ void ath9k_hw_name(struct ath_hw *ah, char *hw_name, size_t len);
>>  /* PHY */
>>  void ath9k_hw_get_delta_slope_vals(struct ath_hw *ah, u32 coef_scaled,
>>  				   u32 *coef_mantissa, u32 *coef_exponent);
>> -void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan);
>> +void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan,
>> +			    bool test);
>>  
>>  /*
>>   * Code Specific to AR5008, AR9001 or AR9002,
>> -- 
>> 1.7.2.1
>>
>>
> 


  reply	other threads:[~2012-04-17 19:33 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-15 18:38 [ath9k-devel] [PATCH 1/2] ath9k: add an extra boolean parameter to ath9k_hw_apply_txpower Gabor Juhos
2012-04-15 18:38 ` Gabor Juhos
2012-04-15 18:38 ` [ath9k-devel] [PATCH 2/2] ath9k: fix tx power settings for AR9287 Gabor Juhos
2012-04-15 18:38   ` Gabor Juhos
2012-04-17 18:42 ` [ath9k-devel] [PATCH 1/2] ath9k: add an extra boolean parameter to ath9k_hw_apply_txpower John W. Linville
2012-04-17 18:42   ` John W. Linville
2012-04-17 19:33   ` Gabor Juhos [this message]
2012-04-17 19:33     ` Gabor Juhos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F8DC59B.3050605@openwrt.org \
    --to=juhosg@openwrt.org \
    --cc=ath9k-devel@lists.ath9k.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.