Re: [RFC PATCH] wifi: rt2x00: use VCO_IC 0x2 for RF3053 on 2.4 GHz
From: Jie Feng
Date: Tue Oct 13 2026 - 09:28:03 EST
On Tue, 13 Oct 2026 at 18:23, Stanislaw Gruszka <stf_xl@xxxxx> wrote:
>
> Hi
>
> On Mon, Oct 12, 2026 at 09:37:27PM +0800, Ho Jie Feng wrote:
> > Using the 0x1, the VCO calibration result is 0x7f on channels 6
> > and below. Using 0x2 fixes it.
> >
> > Hardware: Netgear WNDA4100 (USB 0846:9013, RT3593 rev 0402, RF3053)
> >
> > Signed-off-by: Ho Jie Feng <hjf3108@xxxxxxxxx>
> > ---
> > RFC for this since I am not sure if it is a generic fix, since the
> > vendor driver also doesn't use VCO_IC=0x2.
> > Is this also a known issue?
>
> Could you elaborate what is the issue and what you mean by
> "VCO calibration result is 0x7f" ?'
I had accidentally left the description out, sorry about that.
The adapter doesn't work on the lower channels in 2.4GHz,
channels 8 and below. This looked like an issue with
the PLL or something after debugging.
By tuning to channels 1-12 and using the debugfs to dump the
RFCSR registers, RFCSR4 is always 0x7f on the failing channels
consistently. Since there is code to switch RFCSR6 based on
channel, I tried the same as the 5GHz code to switch RFCSR6=0x2
for lower channels and it worked on all the channels surprisingly.
Due to the behaviour of RFCSR4, I think it is a VCO calibration
result since it seems to change after enabling the calibration.
I could not find any mention of this issue elsewhere, and suspect
either this hardware has very few Linux users or my hardware
is special in some way, so I can't guarantee that setting
it to 0x2 will work with another device even if it is the
same WNDA4100 model and chipset, so some testing would
be appreciated.
> Regards
> Stanislaw
>
> > Testing on different hardware would be appreciated.
> >
> > drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> > index 2e2e382b62475..4a44a0222210d 100644
> > --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> > +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> > @@ -2979,7 +2979,7 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
> >
> > rfcsr = rt2800_rfcsr_read(rt2x00dev, 6);
> > if (rf->channel >= 1 && rf->channel <= 14)
> > - rt2x00_set_field8(&rfcsr, RFCSR6_VCO_IC, 1);
> > + rt2x00_set_field8(&rfcsr, RFCSR6_VCO_IC, 2);
> > else if (rf->channel >= 36 && rf->channel <= 64)
> > rt2x00_set_field8(&rfcsr, RFCSR6_VCO_IC, 2);
> > else if (rf->channel >= 100 && rf->channel <= 128)
> >
> > base-commit: af32da41b0327b9c6a37856ba82b6760d6c8d10e
> > --
> > 2.55.0
> >