2013-04-14 11:04:11

by Alex Mihaylov

[permalink] [raw]
Subject: [PATCH] Fix transmit power troubles on some Ralink RT30xx cards

From: "Alex A. Mihaylov" <[email protected]>

Some cards on Ralink RT30xx chipset not have correctly TX_MIXER_GAIN
value in them EEPROM/EFUSE. In this case, we must use default value,
but always used EEPROM/EFUSE value. As result we have tranmitt power
range from -10dBm to +6dBm instead 0dBm to +16dBm.

Correctly value in EEPROM/EFUSE is one or more for RT3070 and two or
more for other RT30xx chips.

Testen on Canyon CNP-WF518N1 usb Wi-Fi dongle and Jorjin WN8020 usb
embedded Wi-Fi module.
---
drivers/net/wireless/rt2x00/rt2800lib.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index a658b4b..92849e5 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -4436,6 +4436,8 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)

if (!rt2x00_rt(rt2x00dev, RT5390) &&
!rt2x00_rt(rt2x00dev, RT5392)) {
+ u8 min_gain = rt2x00_rt(rt2x00dev, RT3070) ? 1 : 2;
+
rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr);
rt2x00_set_field8(&rfcsr, RFCSR17_TX_LO1_EN, 0);
if (rt2x00_rt(rt2x00dev, RT3070) ||
@@ -4446,8 +4448,10 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
&rt2x00dev->cap_flags))
rt2x00_set_field8(&rfcsr, RFCSR17_R, 1);
}
- rt2x00_set_field8(&rfcsr, RFCSR17_TXMIXER_GAIN,
- drv_data->txmixer_gain_24g);
+ if (drv_data->txmixer_gain_24g >= min_gain) {
+ rt2x00_set_field8(&rfcsr, RFCSR17_TXMIXER_GAIN,
+ drv_data->txmixer_gain_24g);
+ }
rt2800_rfcsr_write(rt2x00dev, 17, rfcsr);
}

--
1.8.1.5



2013-04-14 13:32:54

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] Fix transmit power troubles on some Ralink RT30xx cards

On Sun, Apr 14, 2013 at 02:54:43PM +0400, [email protected] wrote:
> From: "Alex A. Mihaylov" <[email protected]>
>
> Some cards on Ralink RT30xx chipset not have correctly TX_MIXER_GAIN
> value in them EEPROM/EFUSE. In this case, we must use default value,
> but always used EEPROM/EFUSE value. As result we have tranmitt power
> range from -10dBm to +6dBm instead 0dBm to +16dBm.
>
> Correctly value in EEPROM/EFUSE is one or more for RT3070 and two or
> more for other RT30xx chips.
>
> Testen on Canyon CNP-WF518N1 usb Wi-Fi dongle and Jorjin WN8020 usb
> embedded Wi-Fi module.
> ---
> drivers/net/wireless/rt2x00/rt2800lib.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)


<formletter>

This is not the correct way to submit patches for inclusion in the
stable kernel tree. Please read Documentation/stable_kernel_rules.txt
for how to do this properly.

</formletter>

2013-04-15 17:08:43

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] Fix transmit power troubles on some Ralink RT30xx cards

[email protected] writes:

> From: "Alex A. Mihaylov" <[email protected]>
>
> Some cards on Ralink RT30xx chipset not have correctly TX_MIXER_GAIN
> value in them EEPROM/EFUSE. In this case, we must use default value,
> but always used EEPROM/EFUSE value. As result we have tranmitt power
> range from -10dBm to +6dBm instead 0dBm to +16dBm.
>
> Correctly value in EEPROM/EFUSE is one or more for RT3070 and two or
> more for other RT30xx chips.
>
> Testen on Canyon CNP-WF518N1 usb Wi-Fi dongle and Jorjin WN8020 usb
> embedded Wi-Fi module.
> ---
> drivers/net/wireless/rt2x00/rt2800lib.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)

The subject should have "rt2x00: " prefix.

--
Kalle Valo

2013-04-14 13:52:19

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [PATCH] Fix transmit power troubles on some Ralink RT30xx cards

On Sun, Apr 14, 2013 at 02:54:43PM +0400, [email protected] wrote:
> From: "Alex A. Mihaylov" <[email protected]>
>
> Some cards on Ralink RT30xx chipset not have correctly TX_MIXER_GAIN
> value in them EEPROM/EFUSE. In this case, we must use default value,
> but always used EEPROM/EFUSE value. As result we have tranmitt power
> range from -10dBm to +6dBm instead 0dBm to +16dBm.

Thanks for great work on debugging this!
> Correctly value in EEPROM/EFUSE is one or more for RT3070 and two or
> more for other RT30xx chips.
>
> Testen on Canyon CNP-WF518N1 usb Wi-Fi dongle and Jorjin WN8020 usb
> embedded Wi-Fi module.

Signed-off-by: "Alex A. Mihaylov" <[email protected]>
Cc: [email protected]

Acked-by: Stanislaw Gruszka <[email protected]>

> ---
> drivers/net/wireless/rt2x00/rt2800lib.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
> index a658b4b..92849e5 100644
> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
> @@ -4436,6 +4436,8 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
>
> if (!rt2x00_rt(rt2x00dev, RT5390) &&
> !rt2x00_rt(rt2x00dev, RT5392)) {
> + u8 min_gain = rt2x00_rt(rt2x00dev, RT3070) ? 1 : 2;
> +
> rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr);
> rt2x00_set_field8(&rfcsr, RFCSR17_TX_LO1_EN, 0);
> if (rt2x00_rt(rt2x00dev, RT3070) ||
> @@ -4446,8 +4448,10 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
> &rt2x00dev->cap_flags))
> rt2x00_set_field8(&rfcsr, RFCSR17_R, 1);
> }
> - rt2x00_set_field8(&rfcsr, RFCSR17_TXMIXER_GAIN,
> - drv_data->txmixer_gain_24g);
> + if (drv_data->txmixer_gain_24g >= min_gain) {
> + rt2x00_set_field8(&rfcsr, RFCSR17_TXMIXER_GAIN,
> + drv_data->txmixer_gain_24g);
> + }
> rt2800_rfcsr_write(rt2x00dev, 17, rfcsr);
> }
>
> --
> 1.8.1.5
>
>

2013-04-14 13:58:06

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] Fix transmit power troubles on some Ralink RT30xx cards

On Sun, Apr 14, 2013 at 03:53:16PM +0200, Stanislaw Gruszka wrote:
> On Sun, Apr 14, 2013 at 02:54:43PM +0400, [email protected] wrote:
> > From: "Alex A. Mihaylov" <[email protected]>
> >
> > Some cards on Ralink RT30xx chipset not have correctly TX_MIXER_GAIN
> > value in them EEPROM/EFUSE. In this case, we must use default value,
> > but always used EEPROM/EFUSE value. As result we have tranmitt power
> > range from -10dBm to +6dBm instead 0dBm to +16dBm.
>
> Thanks for great work on debugging this!
> > Correctly value in EEPROM/EFUSE is one or more for RT3070 and two or
> > more for other RT30xx chips.
> >
> > Testen on Canyon CNP-WF518N1 usb Wi-Fi dongle and Jorjin WN8020 usb
> > embedded Wi-Fi module.
>
> Signed-off-by: "Alex A. Mihaylov" <[email protected]>

You can not just add someone else's Signed-off-by: to a patch, please go
read Documentation/SubmittingPatches for what it is (hint, a legal
statement). Never do that. Ever.