2018-12-27 14:05:55

by Tom Psyborg

[permalink] [raw]
Subject: [PATCH 1/2] rt2x00: reduce tx power to nominal level on RT6352

Current implementation of RT6352 support provides too high tx power
at least on iPA/eLNA devices. Reduce amplification of variable gain
amplifier by 6dB to match board target power of 17dBm.
Transmited signal strength with this patch is similar to that of
stock firmware or pandorabox firmware. Throughput measured with iperf
improves. Device tested: Xiaomi Miwifi Mini.

Signed-off-by: Tomislav Požega <[email protected]>
---
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
index 0e95555..7f813f6 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
@@ -5477,7 +5477,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000);
rt2800_register_write(rt2x00dev, MIMO_PS_CFG, 0x00000002);
rt2800_register_write(rt2x00dev, TX_PIN_CFG, 0x00150F0F);
- rt2800_register_write(rt2x00dev, TX_ALC_VGA3, 0x06060606);
+ rt2800_register_write(rt2x00dev, TX_ALC_VGA3, 0x00000000);
rt2800_register_write(rt2x00dev, TX0_BB_GAIN_ATTEN, 0x0);
rt2800_register_write(rt2x00dev, TX1_BB_GAIN_ATTEN, 0x0);
rt2800_register_write(rt2x00dev, TX0_RF_GAIN_ATTEN, 0x6C6C666C);
--
1.7.0.4



2018-12-27 14:05:55

by Tom Psyborg

[permalink] [raw]
Subject: [PATCH 2/2] rt2x00: define RF5592 in init_eeprom routine

This patch fixes following crash on Linksys EA2750 during 5GHz wifi
init:

[ 7.955153] rt2800pci 0000:01:00.0: card - bus=0x1, slot = 0x0 irq=4
[ 7.962259] rt2800pci 0000:01:00.0: loaded eeprom from mtd device "Factory"
[ 7.969435] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 5592, rev 0222 detected
[ 7.977348] ieee80211 phy0: rt2800_init_eeprom: Error - Invalid RF chipset 0x0000 detected
[ 7.985793] ieee80211 phy0: rt2x00lib_probe_dev: Error - Failed to allocate device
[ 7.993569] CPU 0 Unable to handle kernel paging request at virtual address 00000024, epc == 800c8f54, ra == 80249ff8
[ 8.004408] Oops[#1]:

Signed-off-by: Tomislav Požega <[email protected]>
---
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
index 7f813f6..86770e8 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
@@ -8839,6 +8839,8 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
rf = RF3322;
else if (rt2x00_rt(rt2x00dev, RT5350))
rf = RF5350;
+ else if (rt2x00_rt(rt2x00dev, RT5592))
+ rf = RF5592;
else
rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE);

--
1.7.0.4


2019-01-02 08:38:19

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [PATCH 2/2] rt2x00: define RF5592 in init_eeprom routine

On Thu, Dec 27, 2018 at 03:05:26PM +0100, Tomislav Požega wrote:
> This patch fixes following crash on Linksys EA2750 during 5GHz wifi
> init:
>
> [ 7.955153] rt2800pci 0000:01:00.0: card - bus=0x1, slot = 0x0 irq=4
> [ 7.962259] rt2800pci 0000:01:00.0: loaded eeprom from mtd device "Factory"
> [ 7.969435] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 5592, rev 0222 detected
> [ 7.977348] ieee80211 phy0: rt2800_init_eeprom: Error - Invalid RF chipset 0x0000 detected
> [ 7.985793] ieee80211 phy0: rt2x00lib_probe_dev: Error - Failed to allocate device
> [ 7.993569] CPU 0 Unable to handle kernel paging request at virtual address 00000024, epc == 800c8f54, ra == 80249ff8
> [ 8.004408] Oops[#1]:
>
> Signed-off-by: Tomislav Požega <[email protected]>
> ---
> drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> index 7f813f6..86770e8 100644
> --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> @@ -8839,6 +8839,8 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
> rf = RF3322;
> else if (rt2x00_rt(rt2x00dev, RT5350))
> rf = RF5350;
> + else if (rt2x00_rt(rt2x00dev, RT5592))
> + rf = RF5592;

This looks like workaround for the crash and AFICT it is not needed
on upstream code. This most likely is a issue with below openwrt patch:

https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob;f=package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch;h=a98b49c541f5f76e73751c2fd2e5b85559854b87;hb=HEAD

which for some unknown reason set:

rt2x00dev->eeprom_file = &mtd_fw;

which then crash on rt2x00lib_free_eeprom_file() -> release_firmware();

Regards
Stanislaw


2019-02-01 12:05:37

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 1/2] rt2x00: reduce tx power to nominal level on RT6352

Tomislav Požega wrote:

> Current implementation of RT6352 support provides too high tx power
> at least on iPA/eLNA devices. Reduce amplification of variable gain
> amplifier by 6dB to match board target power of 17dBm.
> Transmited signal strength with this patch is similar to that of
> stock firmware or pandorabox firmware. Throughput measured with iperf
> improves. Device tested: Xiaomi Miwifi Mini.
>
> Signed-off-by: Tomislav Požega <[email protected]>

Patch applied to wireless-drivers-next.git, thanks.

c2e28ef7711f rt2x00: reduce tx power to nominal level on RT6352

--
https://patchwork.kernel.org/patch/10743705/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


2020-07-06 11:43:21

by Sebastian Gottschall

[permalink] [raw]
Subject: Re: [PATCH 2/2] rt2x00: define RF5592 in init_eeprom routine

you are wrong. this is not a workaround for the crash (this is just a
nice side effect). i had the same issue. the problem is that without
that patch the device RF is not properly detected.
since the device eeprom contains a rev 0. the same issue is present on
the Buffalo WHR-600D device

<6>rt2800pci 0000:01:00.0: loaded eeprom from mtd device "factory"
offset 8000
<6>ieee80211 phy1: rt2x00_set_rt: Info - RT chipset 5592, rev 0222 detected
<3>ieee80211 phy1: rt2800_init_eeprom: Error - Invalid RF chipset 0x0000
detected
<3>ieee80211 phy1: rt2x00lib_probe_dev: Error - Failed to allocate device


so this patch fixes the missdetection of the RF


Sebastian

Am 02.01.2019 um 09:37 schrieb Stanislaw Gruszka:
> On Thu, Dec 27, 2018 at 03:05:26PM +0100, Tomislav Požega wrote:
>> This patch fixes following crash on Linksys EA2750 during 5GHz wifi
>> init:
>>
>> [ 7.955153] rt2800pci 0000:01:00.0: card - bus=0x1, slot = 0x0 irq=4
>> [ 7.962259] rt2800pci 0000:01:00.0: loaded eeprom from mtd device "Factory"
>> [ 7.969435] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 5592, rev 0222 detected
>> [ 7.977348] ieee80211 phy0: rt2800_init_eeprom: Error - Invalid RF chipset 0x0000 detected
>> [ 7.985793] ieee80211 phy0: rt2x00lib_probe_dev: Error - Failed to allocate device
>> [ 7.993569] CPU 0 Unable to handle kernel paging request at virtual address 00000024, epc == 800c8f54, ra == 80249ff8
>> [ 8.004408] Oops[#1]:
>>
>> Signed-off-by: Tomislav Požega <[email protected]>
>> ---
>> drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++
>> 1 files changed, 2 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
>> index 7f813f6..86770e8 100644
>> --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
>> +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
>> @@ -8839,6 +8839,8 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
>> rf = RF3322;
>> else if (rt2x00_rt(rt2x00dev, RT5350))
>> rf = RF5350;
>> + else if (rt2x00_rt(rt2x00dev, RT5592))
>> + rf = RF5592;
> This looks like workaround for the crash and AFICT it is not needed
> on upstream code. This most likely is a issue with below openwrt patch:
>
> https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob;f=package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch;h=a98b49c541f5f76e73751c2fd2e5b85559854b87;hb=HEAD
>
> which for some unknown reason set:
>
> rt2x00dev->eeprom_file = &mtd_fw;
>
> which then crash on rt2x00lib_free_eeprom_file() -> release_firmware();
>
> Regards
> Stanislaw
>
>