linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/4] ath9k: initialize tx chainmask before testing channel tx power values
@ 2011-07-27 13:01 Felix Fietkau
  2011-07-27 13:01 ` [PATCH 2/4] ath9k_hw: remove the tx power index offset Felix Fietkau
  0 siblings, 1 reply; 7+ messages in thread
From: Felix Fietkau @ 2011-07-27 13:01 UTC (permalink / raw)
  To: linux-wireless; +Cc: linville, lrodriguez

With an uninitialized chainmask, the per-channel power will only contain
the power limits for a single chain instead of the combined tx power.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Cc: stable@kernel.org
---
 drivers/net/wireless/ath/ath9k/init.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index dceaa4a..2e96346 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -669,8 +669,10 @@ static void ath9k_init_band_txpower(struct ath_softc *sc, int band)
 static void ath9k_init_txpower_limits(struct ath_softc *sc)
 {
 	struct ath_hw *ah = sc->sc_ah;
+	struct ath_common *common = ath9k_hw_common(sc->sc_ah);
 	struct ath9k_channel *curchan = ah->curchan;
 
+	ah->txchainmask = common->tx_chainmask;
 	if (ah->caps.hw_caps & ATH9K_HW_CAP_2GHZ)
 		ath9k_init_band_txpower(sc, IEEE80211_BAND_2GHZ);
 	if (ah->caps.hw_caps & ATH9K_HW_CAP_5GHZ)
-- 
1.7.3.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/4] ath9k_hw: remove the tx power index offset
  2011-07-27 13:01 [PATCH 1/4] ath9k: initialize tx chainmask before testing channel tx power values Felix Fietkau
@ 2011-07-27 13:01 ` Felix Fietkau
  2011-07-27 13:01   ` [PATCH 3/4] ath9k_hw: fix calculated runtime tx power limit Felix Fietkau
  0 siblings, 1 reply; 7+ messages in thread
From: Felix Fietkau @ 2011-07-27 13:01 UTC (permalink / raw)
  To: linux-wireless; +Cc: linville, lrodriguez

It is always 0

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
---
 drivers/net/wireless/ath/ath9k/eeprom_4k.c   |    9 ++-------
 drivers/net/wireless/ath/ath9k/eeprom_9287.c |    9 ++-------
 drivers/net/wireless/ath/ath9k/eeprom_def.c  |    8 ++------
 3 files changed, 6 insertions(+), 20 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/eeprom_4k.c b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
index 47cc950..bf64d67 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
@@ -248,8 +248,7 @@ static u32 ath9k_hw_4k_get_eeprom(struct ath_hw *ah,
 }
 
 static void ath9k_hw_set_4k_power_cal_table(struct ath_hw *ah,
-				  struct ath9k_channel *chan,
-				  int16_t *pTxPowerIndexOffset)
+				  struct ath9k_channel *chan)
 {
 	struct ath_common *common = ath9k_hw_common(ah);
 	struct ar5416_eeprom_4k *pEepData = &ah->eeprom.map4k;
@@ -356,8 +355,6 @@ static void ath9k_hw_set_4k_power_cal_table(struct ath_hw *ah,
 			REGWRITE_BUFFER_FLUSH(ah);
 		}
 	}
-
-	*pTxPowerIndexOffset = 0;
 }
 
 static void ath9k_hw_set_4k_power_per_rate_table(struct ath_hw *ah,
@@ -580,7 +577,6 @@ static void ath9k_hw_4k_set_txpower(struct ath_hw *ah,
 	struct ar5416_eeprom_4k *pEepData = &ah->eeprom.map4k;
 	struct modal_eep_4k_header *pModal = &pEepData->modalHeader;
 	int16_t ratesArray[Ar5416RateSize];
-	int16_t txPowerIndexOffset = 0;
 	u8 ht40PowerIncForPdadc = 2;
 	int i;
 
@@ -597,11 +593,10 @@ static void ath9k_hw_4k_set_txpower(struct ath_hw *ah,
 					     twiceMaxRegulatoryPower,
 					     powerLimit);
 
-	ath9k_hw_set_4k_power_cal_table(ah, chan, &txPowerIndexOffset);
+	ath9k_hw_set_4k_power_cal_table(ah, chan);
 
 	regulatory->max_power_level = 0;
 	for (i = 0; i < ARRAY_SIZE(ratesArray); i++) {
-		ratesArray[i] =	(int16_t)(txPowerIndexOffset + ratesArray[i]);
 		if (ratesArray[i] > MAX_RATE_POWER)
 			ratesArray[i] = MAX_RATE_POWER;
 
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_9287.c b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
index d6f6b19..a65d2a5 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
@@ -307,8 +307,7 @@ static void ar9287_eeprom_olpc_set_pdadcs(struct ath_hw *ah,
 }
 
 static void ath9k_hw_set_ar9287_power_cal_table(struct ath_hw *ah,
-						struct ath9k_channel *chan,
-						int16_t *pTxPowerIndexOffset)
+						struct ath9k_channel *chan)
 {
 	struct cal_data_per_freq_ar9287 *pRawDataset;
 	struct cal_data_op_loop_ar9287 *pRawDatasetOpenLoop;
@@ -444,8 +443,6 @@ static void ath9k_hw_set_ar9287_power_cal_table(struct ath_hw *ah,
 			REGWRITE_BUFFER_FLUSH(ah);
 		}
 	}
-
-	*pTxPowerIndexOffset = 0;
 }
 
 static void ath9k_hw_set_ar9287_power_per_rate_table(struct ath_hw *ah,
@@ -720,7 +717,6 @@ static void ath9k_hw_ar9287_set_txpower(struct ath_hw *ah,
 	struct ar9287_eeprom *pEepData = &ah->eeprom.map9287;
 	struct modal_eep_ar9287_header *pModal = &pEepData->modalHeader;
 	int16_t ratesArray[Ar5416RateSize];
-	int16_t txPowerIndexOffset = 0;
 	u8 ht40PowerIncForPdadc = 2;
 	int i;
 
@@ -736,11 +732,10 @@ static void ath9k_hw_ar9287_set_txpower(struct ath_hw *ah,
 						 twiceMaxRegulatoryPower,
 						 powerLimit);
 
-	ath9k_hw_set_ar9287_power_cal_table(ah, chan, &txPowerIndexOffset);
+	ath9k_hw_set_ar9287_power_cal_table(ah, chan);
 
 	regulatory->max_power_level = 0;
 	for (i = 0; i < ARRAY_SIZE(ratesArray); i++) {
-		ratesArray[i] = (int16_t)(txPowerIndexOffset + ratesArray[i]);
 		if (ratesArray[i] > MAX_RATE_POWER)
 			ratesArray[i] = MAX_RATE_POWER;
 
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_def.c b/drivers/net/wireless/ath/ath9k/eeprom_def.c
index b9540a9..b665837 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c
@@ -693,8 +693,7 @@ static void ath9k_adjust_pdadc_values(struct ath_hw *ah,
 }
 
 static void ath9k_hw_set_def_power_cal_table(struct ath_hw *ah,
-				  struct ath9k_channel *chan,
-				  int16_t *pTxPowerIndexOffset)
+				  struct ath9k_channel *chan)
 {
 #define SM_PD_GAIN(x) SM(0x38, AR_PHY_TPCRG5_PD_GAIN_BOUNDARY_##x)
 #define SM_PDGAIN_B(x, y) \
@@ -855,7 +854,6 @@ static void ath9k_hw_set_def_power_cal_table(struct ath_hw *ah,
 		}
 	}
 
-	*pTxPowerIndexOffset = 0;
 #undef SM_PD_GAIN
 #undef SM_PDGAIN_B
 }
@@ -1143,7 +1141,6 @@ static void ath9k_hw_def_set_txpower(struct ath_hw *ah,
 	struct modal_eep_header *pModal =
 		&(pEepData->modalHeader[IS_CHAN_2GHZ(chan)]);
 	int16_t ratesArray[Ar5416RateSize];
-	int16_t txPowerIndexOffset = 0;
 	u8 ht40PowerIncForPdadc = 2;
 	int i, cck_ofdm_delta = 0;
 
@@ -1160,11 +1157,10 @@ static void ath9k_hw_def_set_txpower(struct ath_hw *ah,
 					       twiceMaxRegulatoryPower,
 					       powerLimit);
 
-	ath9k_hw_set_def_power_cal_table(ah, chan, &txPowerIndexOffset);
+	ath9k_hw_set_def_power_cal_table(ah, chan);
 
 	regulatory->max_power_level = 0;
 	for (i = 0; i < ARRAY_SIZE(ratesArray); i++) {
-		ratesArray[i] =	(int16_t)(txPowerIndexOffset + ratesArray[i]);
 		if (ratesArray[i] > MAX_RATE_POWER)
 			ratesArray[i] = MAX_RATE_POWER;
 		if (ratesArray[i] > regulatory->max_power_level)
-- 
1.7.3.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/4] ath9k_hw: fix calculated runtime tx power limit
  2011-07-27 13:01 ` [PATCH 2/4] ath9k_hw: remove the tx power index offset Felix Fietkau
@ 2011-07-27 13:01   ` Felix Fietkau
  2011-07-27 13:01     ` [PATCH 4/4] ath9k_hw: do not limit initial tx power to 20 dbm Felix Fietkau
  0 siblings, 1 reply; 7+ messages in thread
From: Felix Fietkau @ 2011-07-27 13:01 UTC (permalink / raw)
  To: linux-wireless; +Cc: linville, lrodriguez

Use the previously calculated maximum of all rates instead of just the one
from the lowest rate of the selected PHY mode.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
---
 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c |   20 +-------------------
 drivers/net/wireless/ath/ath9k/eeprom_4k.c     |    9 ---------
 drivers/net/wireless/ath/ath9k/eeprom_9287.c   |    7 -------
 drivers/net/wireless/ath/ath9k/eeprom_def.c    |   11 -----------
 4 files changed, 1 insertions(+), 46 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
index d109c25..184abb6 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
@@ -4922,25 +4922,7 @@ static void ath9k_hw_ar9300_set_txpower(struct ath_hw *ah,
 			"TPC[%02d] 0x%08x\n", i, targetPowerValT2[i]);
 	}
 
-	/*
-	 * This is the TX power we send back to driver core,
-	 * and it can use to pass to userspace to display our
-	 * currently configured TX power setting.
-	 *
-	 * Since power is rate dependent, use one of the indices
-	 * from the AR9300_Rates enum to select an entry from
-	 * targetPowerValT2[] to report. Currently returns the
-	 * power for HT40 MCS 0, HT20 MCS 0, or OFDM 6 Mbps
-	 * as CCK power is less interesting (?).
-	 */
-	i = ALL_TARGET_LEGACY_6_24; /* legacy */
-	if (IS_CHAN_HT40(chan))
-		i = ALL_TARGET_HT40_0_8_16; /* ht40 */
-	else if (IS_CHAN_HT20(chan))
-		i = ALL_TARGET_HT20_0_8_16; /* ht20 */
-
-	ah->txpower_limit = targetPowerValT2[i];
-	regulatory->max_power_level = targetPowerValT2[i];
+	ah->txpower_limit = regulatory->max_power_level;
 
 	/* Write target power array to registers */
 	ar9003_hw_tx_power_regwrite(ah, targetPowerValT2);
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_4k.c b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
index bf64d67..abf40d3 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
@@ -607,15 +607,6 @@ static void ath9k_hw_4k_set_txpower(struct ath_hw *ah,
 	if (test)
 	    return;
 
-	/* Update regulatory */
-	i = rate6mb;
-	if (IS_CHAN_HT40(chan))
-		i = rateHt40_0;
-	else if (IS_CHAN_HT20(chan))
-		i = rateHt20_0;
-
-	regulatory->max_power_level = ratesArray[i];
-
 	if (AR_SREV_9280_20_OR_LATER(ah)) {
 		for (i = 0; i < Ar5416RateSize; i++)
 			ratesArray[i] -= AR5416_PWR_TABLE_OFFSET_DB * 2;
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_9287.c b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
index a65d2a5..604312c 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
@@ -746,13 +746,6 @@ static void ath9k_hw_ar9287_set_txpower(struct ath_hw *ah,
 	if (test)
 		return;
 
-	if (IS_CHAN_2GHZ(chan))
-		i = rate1l;
-	else
-		i = rate6mb;
-
-	regulatory->max_power_level = ratesArray[i];
-
 	if (AR_SREV_9280_20_OR_LATER(ah)) {
 		for (i = 0; i < Ar5416RateSize; i++)
 			ratesArray[i] -= AR9287_PWR_TABLE_OFFSET_DB * 2;
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_def.c b/drivers/net/wireless/ath/ath9k/eeprom_def.c
index b665837..85057e0 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c
@@ -1167,17 +1167,6 @@ static void ath9k_hw_def_set_txpower(struct ath_hw *ah,
 			regulatory->max_power_level = ratesArray[i];
 	}
 
-	if (!test) {
-		i = rate6mb;
-
-		if (IS_CHAN_HT40(chan))
-			i = rateHt40_0;
-		else if (IS_CHAN_HT20(chan))
-			i = rateHt20_0;
-
-		regulatory->max_power_level = ratesArray[i];
-	}
-
 	switch(ar5416_get_ntxchains(ah->txchainmask)) {
 	case 1:
 		break;
-- 
1.7.3.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/4] ath9k_hw: do not limit initial tx power to 20 dbm
  2011-07-27 13:01   ` [PATCH 3/4] ath9k_hw: fix calculated runtime tx power limit Felix Fietkau
@ 2011-07-27 13:01     ` Felix Fietkau
  2012-10-17 22:44       ` Ambrus Oláh
  0 siblings, 1 reply; 7+ messages in thread
From: Felix Fietkau @ 2011-07-27 13:01 UTC (permalink / raw)
  To: linux-wireless; +Cc: linville, lrodriguez

When testing for tx power, bypass the default limits.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
---
 drivers/net/wireless/ath/ath9k/hw.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 8006ce0..a2e5763 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -2432,15 +2432,18 @@ void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test)
 	struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
 	struct ath9k_channel *chan = ah->curchan;
 	struct ieee80211_channel *channel = chan->chan;
+	int reg_pwr = min_t(int, MAX_RATE_POWER, regulatory->power_limit);
+	int chan_pwr = channel->max_power * 2;
+
+	if (test)
+		reg_pwr = chan_pwr = MAX_RATE_POWER;
 
 	regulatory->power_limit = min(limit, (u32) MAX_RATE_POWER);
 
 	ah->eep_ops->set_txpower(ah, chan,
 				 ath9k_regd_get_ctl(regulatory, chan),
 				 channel->max_antenna_gain * 2,
-				 channel->max_power * 2,
-				 min((u32) MAX_RATE_POWER,
-				 (u32) regulatory->power_limit), test);
+				 chan_pwr, reg_pwr, test);
 }
 EXPORT_SYMBOL(ath9k_hw_set_txpowerlimit);
 
-- 
1.7.3.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] ath9k_hw: do not limit initial tx power to 20 dbm
  2011-07-27 13:01     ` [PATCH 4/4] ath9k_hw: do not limit initial tx power to 20 dbm Felix Fietkau
@ 2012-10-17 22:44       ` Ambrus Oláh
  2012-10-19  5:21         ` Mohammed Shafi
  0 siblings, 1 reply; 7+ messages in thread
From: Ambrus Oláh @ 2012-10-17 22:44 UTC (permalink / raw)
  To: linux-wireless

Felix Fietkau <nbd@...> writes:

> 
> When testing for tx power, bypass the default limits.
> 
> Signed-off-by: Felix Fietkau <nbd@...>
> ---
>  drivers/net/wireless/ath/ath9k/hw.c |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath9k/hw.c
b/drivers/net/wireless/ath/ath9k/hw.c
> index 8006ce0..a2e5763 100644
> --- a/drivers/net/wireless/ath/ath9k/hw.c
> +++ b/drivers/net/wireless/ath/ath9k/hw.c
> @@ -2432,15 +2432,18 @@ void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32
limit, bool test)
>  	struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
>  	struct ath9k_channel *chan = ah->curchan;
>  	struct ieee80211_channel *channel = chan->chan;
> +	int reg_pwr = min_t(int, MAX_RATE_POWER, regulatory->power_limit);
> +	int chan_pwr = channel->max_power * 2;
> +
> +	if (test)
> +		reg_pwr = chan_pwr = MAX_RATE_POWER;
> 
>  	regulatory->power_limit = min(limit, (u32) MAX_RATE_POWER);
> 
>  	ah->eep_ops->set_txpower(ah, chan,
>  				 ath9k_regd_get_ctl(regulatory, chan),
>  				 channel->max_antenna_gain * 2,
> -				 channel->max_power * 2,
> -				 min((u32) MAX_RATE_POWER,
> -				 (u32) regulatory->power_limit), test);
> +				 chan_pwr, reg_pwr, test);
>  }
>  EXPORT_SYMBOL(ath9k_hw_set_txpowerlimit);
> 


Dear Mr. Fietkau,

I have tried to apply your patch on
http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.3/compat-wireless-3.3-2-n.tar.bz2

I get the following error:

patch -p1 < ath9k_txpower.patch
patching file drivers/net/wireless/ath/ath9k/hw.c
Hunk #1 FAILED at 2432.
patch unexpectedly ends in middle of line
1 out of 1 hunk FAILED -- saving rejects to file
drivers/net/wireless/ath/ath9k/hw.c.rej
patch unexpectedly ends in middle of line

Could you support me with a patch tuned to the above compat-wireless?

Yours sincerelly,

Ambrus Oláh


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 4/4] ath9k_hw: do not limit initial tx power to 20 dbm
  2012-10-17 22:44       ` Ambrus Oláh
@ 2012-10-19  5:21         ` Mohammed Shafi
  2012-10-21 12:32           ` aolah76
  0 siblings, 1 reply; 7+ messages in thread
From: Mohammed Shafi @ 2012-10-19  5:21 UTC (permalink / raw)
  To: Ambrus Oláh; +Cc: linux-wireless

On Thu, Oct 18, 2012 at 4:14 AM, Ambrus Oláh <aolah76@freemail.hu> wrote:
> Felix Fietkau <nbd@...> writes:
>
>>
>> When testing for tx power, bypass the default limits.
>>
>> Signed-off-by: Felix Fietkau <nbd@...>
>> ---
>>  drivers/net/wireless/ath/ath9k/hw.c |    9 ++++++---
>>  1 files changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/hw.c
> b/drivers/net/wireless/ath/ath9k/hw.c
>> index 8006ce0..a2e5763 100644
>> --- a/drivers/net/wireless/ath/ath9k/hw.c
>> +++ b/drivers/net/wireless/ath/ath9k/hw.c
>> @@ -2432,15 +2432,18 @@ void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32
> limit, bool test)
>>       struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
>>       struct ath9k_channel *chan = ah->curchan;
>>       struct ieee80211_channel *channel = chan->chan;
>> +     int reg_pwr = min_t(int, MAX_RATE_POWER, regulatory->power_limit);
>> +     int chan_pwr = channel->max_power * 2;
>> +
>> +     if (test)
>> +             reg_pwr = chan_pwr = MAX_RATE_POWER;
>>
>>       regulatory->power_limit = min(limit, (u32) MAX_RATE_POWER);
>>
>>       ah->eep_ops->set_txpower(ah, chan,
>>                                ath9k_regd_get_ctl(regulatory, chan),
>>                                channel->max_antenna_gain * 2,
>> -                              channel->max_power * 2,
>> -                              min((u32) MAX_RATE_POWER,
>> -                              (u32) regulatory->power_limit), test);
>> +                              chan_pwr, reg_pwr, test);
>>  }
>>  EXPORT_SYMBOL(ath9k_hw_set_txpowerlimit);
>>
>
>
> Dear Mr. Fietkau,
>
> I have tried to apply your patch on
> http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.3/compat-wireless-3.3-2-n.tar.bz2
>
> I get the following error:
>
> patch -p1 < ath9k_txpower.patch
> patching file drivers/net/wireless/ath/ath9k/hw.c
> Hunk #1 FAILED at 2432.
> patch unexpectedly ends in middle of line
> 1 out of 1 hunk FAILED -- saving rejects to file
> drivers/net/wireless/ath/ath9k/hw.c.rej
> patch unexpectedly ends in middle of line
>
> Could you support me with a patch tuned to the above compat-wireless?

try applying over the latest
http://linuxwireless.org/download/compat-wireless-2.6/compat-wireless-2012-10-03.tar.bz2

ideally these patches are based on wireless-testing tree and you goto apply
into it, and do kerenel/module compilation.

http://wireless.kernel.org/en/developers/Documentation/git-guide#Cloning_latest_wireless-testing


>
> Yours sincerelly,
>
> Ambrus Oláh
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
thanks,
shafi

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH 4/4] ath9k_hw: do not limit initial tx power to 20 dbm
  2012-10-19  5:21         ` Mohammed Shafi
@ 2012-10-21 12:32           ` aolah76
  0 siblings, 0 replies; 7+ messages in thread
From: aolah76 @ 2012-10-21 12:32 UTC (permalink / raw)
  To: 'Mohammed Shafi'; +Cc: linux-wireless

[-- Attachment #1: Type: text/plain, Size: 4296 bytes --]

 

-----Original Message-----
From: Mohammed Shafi [mailto:shafi.wireless@gmail.com] 
Sent: Friday, October 19, 2012 7:21 AM
To: Ambrus Oláh
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH 4/4] ath9k_hw: do not limit initial tx power to 20 dbm

On Thu, Oct 18, 2012 at 4:14 AM, Ambrus Oláh <aolah76@freemail.hu> wrote:
> Felix Fietkau <nbd@...> writes:
>
>>
>> When testing for tx power, bypass the default limits.
>>
>> Signed-off-by: Felix Fietkau <nbd@...>
>> ---
>>  drivers/net/wireless/ath/ath9k/hw.c |    9 ++++++---
>>  1 files changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/hw.c
> b/drivers/net/wireless/ath/ath9k/hw.c
>> index 8006ce0..a2e5763 100644
>> --- a/drivers/net/wireless/ath/ath9k/hw.c
>> +++ b/drivers/net/wireless/ath/ath9k/hw.c
>> @@ -2432,15 +2432,18 @@ void ath9k_hw_set_txpowerlimit(struct ath_hw 
>> *ah, u32
> limit, bool test)
>>       struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
>>       struct ath9k_channel *chan = ah->curchan;
>>       struct ieee80211_channel *channel = chan->chan;
>> +     int reg_pwr = min_t(int, MAX_RATE_POWER, regulatory->power_limit);
>> +     int chan_pwr = channel->max_power * 2;
>> +
>> +     if (test)
>> +             reg_pwr = chan_pwr = MAX_RATE_POWER;
>>
>>       regulatory->power_limit = min(limit, (u32) MAX_RATE_POWER);
>>
>>       ah->eep_ops->set_txpower(ah, chan,
>>                                ath9k_regd_get_ctl(regulatory, chan),
>>                                channel->max_antenna_gain * 2,
>> -                              channel->max_power * 2,
>> -                              min((u32) MAX_RATE_POWER,
>> -                              (u32) regulatory->power_limit), test);
>> +                              chan_pwr, reg_pwr, test);
>>  }
>>  EXPORT_SYMBOL(ath9k_hw_set_txpowerlimit);
>>
>
>
> Dear Mr. Fietkau,
>
> I have tried to apply your patch on
> http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.3/compat-w
> ireless-3.3-2-n.tar.bz2
>
> I get the following error:
>
> patch -p1 < ath9k_txpower.patch
> patching file drivers/net/wireless/ath/ath9k/hw.c
> Hunk #1 FAILED at 2432.
> patch unexpectedly ends in middle of line
> 1 out of 1 hunk FAILED -- saving rejects to file 
> drivers/net/wireless/ath/ath9k/hw.c.rej
> patch unexpectedly ends in middle of line
>
> Could you support me with a patch tuned to the above compat-wireless?

try applying over the latest
http://linuxwireless.org/download/compat-wireless-2.6/compat-wireless-2012-1
0-03.tar.bz2

ideally these patches are based on wireless-testing tree and you goto apply
into it, and do kerenel/module compilation.

http://wireless.kernel.org/en/developers/Documentation/git-guide#Cloning_lat
est_wireless-testing


>
> Yours sincerelly,
>
> Ambrus Oláh
>
> --
> To unsubscribe from this list: send the line "unsubscribe 
> linux-wireless" in the body of a message to majordomo@vger.kernel.org 
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



--
thanks,
Shafi

Dear Mr. Shafi,

I have tested the patch above on
http://linuxwireless.org/download/compat-wireless-2.6/compat-wireless-2012-1
0-03.tar.bz2 with the following results:

~/compat-wireless-2012-10-03# patch -p1 < ath9k_txpower.patch
patching file drivers/net/wireless/ath/ath9k/hw.c
Hunk #1 FAILED at 2432.
patch unexpectedly ends in middle of line
1 out of 1 hunk FAILED -- saving rejects to file
drivers/net/wireless/ath/ath9k/hw.c.rej
patch unexpectedly ends in middle of line

I have also tried to test the patch with the latest compat-wireless source
found at:
http://linuxwireless.org/download/compat-wireless-2.6/compat-wireless-2012-1
0-20.tar.bz2

I get the same error:

~/compat-wireless-2012-10-20# patch -p1 < ath9k_txpower.patch
patching file drivers/net/wireless/ath/ath9k/hw.c
Hunk #1 FAILED at 2432.
patch unexpectedly ends in middle of line
1 out of 1 hunk FAILED -- saving rejects to file
drivers/net/wireless/ath/ath9k/hw.c.rej
patch unexpectedly ends in middle of line

Could you examine the attached patch file why it is comlaining twice about
"patch unexpectedly ends in middle of line" ?

Yours sincerelly,

Ambrus Oláh

[-- Attachment #2: ath9k_txpower.patch --]
[-- Type: application/octet-stream, Size: 895 bytes --]

--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -2432,15 +2432,18 @@ void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test)
 	struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
 	struct ath9k_channel *chan = ah->curchan;
 	struct ieee80211_channel *channel = chan->chan;
+	int reg_pwr = min_t(int, MAX_RATE_POWER, regulatory->power_limit);
+	int chan_pwr = channel->max_power * 2;
+
+	if (test)
+		reg_pwr = chan_pwr = MAX_RATE_POWER;

 	regulatory->power_limit = min(limit, (u32) MAX_RATE_POWER);

 	ah->eep_ops->set_txpower(ah, chan,
 				 ath9k_regd_get_ctl(regulatory, chan),
 				 channel->max_antenna_gain * 2,
-				 channel->max_power * 2,
-				 min((u32) MAX_RATE_POWER,
-				 (u32) regulatory->power_limit), test);
+				 chan_pwr, reg_pwr, test);
 }
 EXPORT_SYMBOL(ath9k_hw_set_txpowerlimit);

--

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-10-21 12:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-27 13:01 [PATCH 1/4] ath9k: initialize tx chainmask before testing channel tx power values Felix Fietkau
2011-07-27 13:01 ` [PATCH 2/4] ath9k_hw: remove the tx power index offset Felix Fietkau
2011-07-27 13:01   ` [PATCH 3/4] ath9k_hw: fix calculated runtime tx power limit Felix Fietkau
2011-07-27 13:01     ` [PATCH 4/4] ath9k_hw: do not limit initial tx power to 20 dbm Felix Fietkau
2012-10-17 22:44       ` Ambrus Oláh
2012-10-19  5:21         ` Mohammed Shafi
2012-10-21 12:32           ` aolah76

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).