Comment 30 for bug 408165

Revision history for this message
Sean McNamara (smcnam) wrote :

madbiologist: I tested 2.6.33-rc3, and indeed it appears that the USB ID has been added.

However, the RF chipset for this card is still not implemented in rt2x00. So this is basically the driver lying about what it supports.

When I try to load rt2800usb, I get

[ 23.229048] phy0 -> rt2800_init_eeprom: Error - Invalid RT chipset detected.
[ 23.229053] phy0 -> rt2x00lib_probe_dev: Error - Failed to allocate device.

I tried modifying rt2800lib.c to treat a RT3572 as a RT3070 (which is dangerous in itself) like this:

//line 1854, rt2800lib.c
} else if (rt2x00_check_rev(chip, 0xffff0000, 0x35720000)) {
                        rt2x00_set_chip_rt(rt2x00dev, RT3070);
                }

This got me a working pointer to the rt2x00dev, but none of the RF chip tests succeed:

if (!rt2x00_rf(&rt2x00dev->chip, RF2820) &&
            !rt2x00_rf(&rt2x00dev->chip, RF2850) &&
            !rt2x00_rf(&rt2x00dev->chip, RF2720) &&
            !rt2x00_rf(&rt2x00dev->chip, RF2750) &&
            !rt2x00_rf(&rt2x00dev->chip, RF3020) &&
            !rt2x00_rf(&rt2x00dev->chip, RF2020) &&
            !rt2x00_rf(&rt2x00dev->chip, RF3021) &&
            !rt2x00_rf(&rt2x00dev->chip, RF3022)) {
                ERROR(rt2x00dev, "Invalid RF chipset detected.\n");
                return -ENODEV;
        }

From my tests, it appears that:

1) Certainly, this driver is not ready to support 1737:0079, even though it now claims to.
2) It doesn't appear a trivial task to just bypass checks inside the driver to get it to work. Neither the RT (Ralink-Tech wireless core) nor RF (radio receiver) chipsets in the 1737:0079 are supported at all by this driver.

Interestingly though, the call

rt2x00_check_rev(chip, 0xffff0000, 0x35720000)

succeeds, so the existing driver infrastructure is able to positively determine that the RT chip is a 3572. The real question is, what else needs to be done to add support for the 3572?

Since I am no expert on this hardware, I am not going to proceed further. But the chance is pretty slim that the 3572 is so similar to the 3070 that the same driver code can simply be plugged in and expected to work by treating the 3572 as a 3070. They are distinct chipset models for a reason :)

IMHO this kernel patch that adds the USB ID is actually a bug. The driver doesn't support this chipset at all, so claiming that it does is just going to deceive users, and possibly interfere with legitimate drivers that might actually work with a 3572 chipset, such as the Ralink rt3572sta drivers on their website. It doesn't make sense to claim support for something until support for it is there, at least in an alpha state.