linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards
@ 2013-04-15  3:29 minimumlaw
  2013-04-15  7:34 ` Gertjan van Wingerde
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: minimumlaw @ 2013-04-15  3:29 UTC (permalink / raw)
  To: linux-wireless; +Cc: Alex A. Mihaylov, stable

From: "Alex A. Mihaylov" <minimumlaw@rambler.ru>

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.

Tested on Canyon CNP-WF518N1 usb Wi-Fi dongle and Jorjin WN8020 usb
embedded Wi-Fi module.

Signed-off-by: Alex A. Mihaylov <minimumlaw@rambler.ru>
Cc: stable@vger.kernel.org
---
 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


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

* Re: [PATCH v2] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards
  2013-04-15  3:29 [PATCH v2] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards minimumlaw
@ 2013-04-15  7:34 ` Gertjan van Wingerde
  2013-04-15  8:18   ` Alex Mihaylov
  2013-04-15 16:00 ` Gertjan van Wingerde
  2013-04-16 10:29 ` Stanislaw Gruszka
  2 siblings, 1 reply; 6+ messages in thread
From: Gertjan van Wingerde @ 2013-04-15  7:34 UTC (permalink / raw)
  To: minimumlaw; +Cc: linux-wireless@vger.kernel.org, stable

On Mon, Apr 15, 2013 at 5:29 AM,  <minimumlaw@rambler.ru> wrote:
> From: "Alex A. Mihaylov" <minimumlaw@rambler.ru>
>
> 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.
>
> Tested on Canyon CNP-WF518N1 usb Wi-Fi dongle and Jorjin WN8020 usb
> embedded Wi-Fi module.
>
> Signed-off-by: Alex A. Mihaylov <minimumlaw@rambler.ru>
> Cc: stable@vger.kernel.org
> ---
>  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);
>         }
>

Could you explain how you have come to this patch?
Is this behavior of the Ralink provided driver that you replicated
here, or have you come to this approach in an other way?

---
Gertjan

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

* RE: Re: [PATCH v2] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards
  2013-04-15  7:34 ` Gertjan van Wingerde
@ 2013-04-15  8:18   ` Alex Mihaylov
  2013-04-15 15:59     ` Gertjan van Wingerde
  0 siblings, 1 reply; 6+ messages in thread
From: Alex Mihaylov @ 2013-04-15  8:18 UTC (permalink / raw)
  To: Gertjan van Wingerde; +Cc: stable, linux-wireless


Good day!
> > From: "Alex A. Mihaylov" <minimumlaw@rambler.ru>
> > 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.

> > Signed-off-by: Alex A. Mihaylov <minimumlaw@rambler.ru>
> > diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
 
> Could you explain how you have come to this patch?
> Is this behavior of the Ralink provided driver that you replicated
> here, or have you come to this approach in an other way?

Yes, vendor driver have this code in chips/rt3070.c (function NICInitRT3070RFRegisters) and chips/rt30xx.c (function RT30xxLoadRFNormalModeSetup) files.
Look like this:
[skipped]
if (pAd->TxMixerGain24G >= 2)
{
      RFValue &= (~0x7);  /* clean bit [2:0]*/
      RFValue |= pAd->TxMixerGain24G;
}
RT30xxWriteRFRegister(pAd, RF_R17, RFValue);
[skipped]
and have differents only in constants (2 in rt30xx.c and one in tr3070.c). TxPower i messaurment on power detector, connected directly to module.

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

* Re: Re: [PATCH v2] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards
  2013-04-15  8:18   ` Alex Mihaylov
@ 2013-04-15 15:59     ` Gertjan van Wingerde
  0 siblings, 0 replies; 6+ messages in thread
From: Gertjan van Wingerde @ 2013-04-15 15:59 UTC (permalink / raw)
  To: Alex Mihaylov; +Cc: stable, linux-wireless@vger.kernel.org

On Mon, Apr 15, 2013 at 10:18 AM, Alex Mihaylov <minimumlaw@rambler.ru> wrote:
>
> Good day!
>
>> > From: "Alex A. Mihaylov" <minimumlaw@rambler.ru>
>> > 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.
>
>
>> > Signed-off-by: Alex A. Mihaylov <minimumlaw@rambler.ru>
>> > diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c
>> > b/drivers/net/wireless/rt2x00/rt2800lib.c
>
>
>> Could you explain how you have come to this patch?
>> Is this behavior of the Ralink provided driver that you replicated
>> here, or have you come to this approach in an other way?
>
>
> Yes, vendor driver have this code in chips/rt3070.c (function
> NICInitRT3070RFRegisters) and chips/rt30xx.c (function
> RT30xxLoadRFNormalModeSetup) files.
> Look like this:
> [skipped]
> if (pAd->TxMixerGain24G >= 2)
> {
>      RFValue &= (~0x7);  /* clean bit [2:0]*/
>      RFValue |= pAd->TxMixerGain24G;
> }
> RT30xxWriteRFRegister(pAd, RF_R17, RFValue);
> [skipped]
> and have differents only in constants (2 in rt30xx.c and one in tr3070.c).
> TxPower i messaurment on power detector, connected directly to module.

OK. Thanks for the explanation. I've found it myself there as well.
I'll ack the patch.

--
---
Gertjan

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

* Re: [PATCH v2] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards
  2013-04-15  3:29 [PATCH v2] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards minimumlaw
  2013-04-15  7:34 ` Gertjan van Wingerde
@ 2013-04-15 16:00 ` Gertjan van Wingerde
  2013-04-16 10:29 ` Stanislaw Gruszka
  2 siblings, 0 replies; 6+ messages in thread
From: Gertjan van Wingerde @ 2013-04-15 16:00 UTC (permalink / raw)
  To: Алексей Михайлов,
	John Linville
  Cc: linux-wireless@vger.kernel.org, stable

On Mon, Apr 15, 2013 at 5:29 AM,  <minimumlaw@rambler.ru> wrote:
> From: "Alex A. Mihaylov" <minimumlaw@rambler.ru>
>
> 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.
>
> Tested on Canyon CNP-WF518N1 usb Wi-Fi dongle and Jorjin WN8020 usb
> embedded Wi-Fi module.
>
> Signed-off-by: Alex A. Mihaylov <minimumlaw@rambler.ru>
> Cc: stable@vger.kernel.org

Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>

> ---
>  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
>
> --
> 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



--
---
Gertjan

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

* Re: [PATCH v2] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards
  2013-04-15  3:29 [PATCH v2] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards minimumlaw
  2013-04-15  7:34 ` Gertjan van Wingerde
  2013-04-15 16:00 ` Gertjan van Wingerde
@ 2013-04-16 10:29 ` Stanislaw Gruszka
  2 siblings, 0 replies; 6+ messages in thread
From: Stanislaw Gruszka @ 2013-04-16 10:29 UTC (permalink / raw)
  To: minimumlaw; +Cc: linux-wireless, stable

On Mon, Apr 15, 2013 at 07:29:35AM +0400, minimumlaw@rambler.ru wrote:
> From: "Alex A. Mihaylov" <minimumlaw@rambler.ru>
> 
> 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.
> 
> Tested on Canyon CNP-WF518N1 usb Wi-Fi dongle and Jorjin WN8020 usb
> embedded Wi-Fi module.
> 
> Signed-off-by: Alex A. Mihaylov <minimumlaw@rambler.ru>
> Cc: stable@vger.kernel.org

Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>


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

end of thread, other threads:[~2013-04-16 10:28 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-15  3:29 [PATCH v2] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards minimumlaw
2013-04-15  7:34 ` Gertjan van Wingerde
2013-04-15  8:18   ` Alex Mihaylov
2013-04-15 15:59     ` Gertjan van Wingerde
2013-04-15 16:00 ` Gertjan van Wingerde
2013-04-16 10:29 ` Stanislaw Gruszka

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).