2010-12-02 23:25:16

by Matteo Croce

[permalink] [raw]
Subject: [PATCH]: ath9k: fix bug in tx power

The ath9k driver subtracts 3 dBm to the txpower as with two radios the
signal power is doubled.
The resulting value is assigned in an u16 which overflows and makes
the card to work at full power.

Signed-off-by: Matteo Croce <[email protected]>

--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c 2010-12-02
22:39:58.982020001 +0100
+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c 2010-12-02
23:05:43.662020001 +0100
@@ -1065,15 +1065,19 @@
case 1:
break;
case 2:
- scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
+ if(scaledPower > REDUCE_SCALED_POWER_BY_TWO_CHAIN)
+ scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
+ else
+ scaledPower = 0;
break;
case 3:
- scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
+ if(scaledPower > REDUCE_SCALED_POWER_BY_THREE_CHAIN)
+ scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
+ else
+ scaledPower = 0;
break;
}

- scaledPower = max((u16)0, scaledPower);
-
if (IS_CHAN_2GHZ(chan)) {
numCtlModes = ARRAY_SIZE(ctlModesFor11g) -
SUB_NUM_CTL_MODES_AT_2G_40;


--
Matteo Croce
OpenWrt developer
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 KAMIKAZE (bleeding edge) ------------------
  * 10 oz Vodka       Shake well with ice and strain
  * 10 oz Triple sec  mixture into 10 shot glasses.
  * 10 oz lime juice  Salute!
 ---------------------------------------------------


2010-12-02 23:40:11

by Matteo Croce

[permalink] [raw]
Subject: Re: [PATCH]: ath9k: fix bug in tx power

The ath9k driver subtracts 3 dBm to the txpower as with two radios the
signal power is doubled.
The resulting value is assigned in an u16 which overflows and makes
the card work at full power.

Signed-off-by: Matteo Croce <[email protected]>

--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c 2010-12-02
22:39:58.982020001 +0100
+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c 2010-12-03
00:36:23.637799002 +0100
@@ -1065,15 +1065,19 @@
case 1:
break;
case 2:
- scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
+ if (scaledPower > REDUCE_SCALED_POWER_BY_TWO_CHAIN)
+ scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
+ else
+ scaledPower = 0;
break;
case 3:
- scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
+ if (scaledPower > REDUCE_SCALED_POWER_BY_THREE_CHAIN)
+ scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
+ else
+ scaledPower = 0;
break;
}

- scaledPower = max((u16)0, scaledPower);
-
if (IS_CHAN_2GHZ(chan)) {
numCtlModes = ARRAY_SIZE(ctlModesFor11g) -
SUB_NUM_CTL_MODES_AT_2G_40;

2010-12-02 23:32:12

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH]: ath9k: fix bug in tx power

On Thu, Dec 2, 2010 at 3:24 PM, Matteo Croce <[email protected]> wrote:
> The ath9k driver subtracts 3 dBm to the txpower as with two radios the
> signal power is doubled.
> The resulting value is assigned in an u16 which overflows and makes
> the card to work at full power.

Thanks for the patch Matteo, can you please reword a bit better and
resubmit by first using checkpatch.pl against the patch? The branch
should be separated by a space.

Luis

2010-12-03 01:25:29

by Matteo Croce

[permalink] [raw]
Subject: Re: [ath9k-devel] [PATCH]: ath9k: fix bug in tx power

The ath9k driver subtracts 3 dBm to the txpower as with two radios the
signal power is doubled.
The resulting value is assigned in an u16 which overflows and makes
the card work at full power.

Cc: [email protected]
Signed-off-by: Matteo Croce <[email protected]>

--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c 2010-12-02
22:39:58.982020001 +0100
+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c 2010-12-03
00:36:23.637799002 +0100
@@ -1065,15 +1065,19 @@
case 1:
break;
case 2:
- scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
+ if (scaledPower > REDUCE_SCALED_POWER_BY_TWO_CHAIN)
+ scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
+ else
+ scaledPower = 0;
break;
case 3:
- scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
+ if (scaledPower > REDUCE_SCALED_POWER_BY_THREE_CHAIN)
+ scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
+ else
+ scaledPower = 0;
break;
}

- scaledPower = max((u16)0, scaledPower);
-
if (IS_CHAN_2GHZ(chan)) {
numCtlModes = ARRAY_SIZE(ctlModesFor11g) -
SUB_NUM_CTL_MODES_AT_2G_40;

2010-12-02 23:51:57

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [ath9k-devel] [PATCH]: ath9k: fix bug in tx power

On Thu, Dec 02, 2010 at 03:39:49PM -0800, Matteo Croce wrote:
> The ath9k driver subtracts 3 dBm to the txpower as with two radios the
> signal power is doubled.
> The resulting value is assigned in an u16 which overflows and makes
> the card work at full power.

Sorry can you also add:

Cc: [email protected]

Right above your Signed-off-by, this is a regulatory fix,
thanks.

Luis
>
> Signed-off-by: Matteo Croce <[email protected]>
>
> --- a/drivers/net/wireless/ath/ath9k/eeprom_def.c 2010-12-02
> 22:39:58.982020001 +0100
> +++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c 2010-12-03
> 00:36:23.637799002 +0100
> @@ -1065,15 +1065,19 @@
> case 1:
> break;
> case 2:
> - scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
> + if (scaledPower > REDUCE_SCALED_POWER_BY_TWO_CHAIN)
> + scaledPower -= REDUCE_SCALED_POWER_BY_TWO_CHAIN;
> + else
> + scaledPower = 0;
> break;
> case 3:
> - scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
> + if (scaledPower > REDUCE_SCALED_POWER_BY_THREE_CHAIN)
> + scaledPower -= REDUCE_SCALED_POWER_BY_THREE_CHAIN;
> + else
> + scaledPower = 0;
> break;
> }
>
> - scaledPower = max((u16)0, scaledPower);
> -
> if (IS_CHAN_2GHZ(chan)) {
> numCtlModes = ARRAY_SIZE(ctlModesFor11g) -
> SUB_NUM_CTL_MODES_AT_2G_40;
> _______________________________________________
> ath9k-devel mailing list
> [email protected]
> https://lists.ath9k.org/mailman/listinfo/ath9k-devel