Comment 219 for bug 496093

Revision history for this message
Chase Douglas (chasedouglas) wrote :

I think it's helpful to provide some background on this driver, and follow up with what I think is the best solution for now.

Linux drivers fall into two categories: the proper drivers tree and the staging drivers tree. They are both shipped as part of the upstream kernel, and drivers may be found in drivers/ and drivers/staging respectively. For example, Intel wireless drivers are part of the proper drivers tree in drivers/net/wireless/iwlwifi/, while these Realtek drivers are part of drivers/staging/{rt2860,rt2870}.

The difference between a proper driver and a staging driver is the quality of the code. Proper drivers are maintained by the Linux community as a whole, often with help from the vender (but not always). Intel is a great example of this. They employ developers to maintain their wireless, graphics, acpi, and other drivers who work among all the other Linux kernel developers. However, Realtek has a history of not working among upstream Linux kernel developers. They tend to "throw code over the wall", which is to say that they develop the code internally, shove it out the door, and never look back. The drivers are open source, so Greg Kroah-Hartman has worked to pull them into the staging tree. The hope is that the greater Linux developer community will be able to take the Realtek code and fix it up so that it becomes just as good as the proper drivers. If that happens, it will move into the proper drivers tree.

The problem is that Realtek still does not work with the upstream Linux community to help this process. Instead, they develop newer versions of the driver and "throw them over the wall" again. Much of the hard work developers have put in to clean up the previous code is either thrown away or painfully merged into the new code. However, it appears that quality assurance is not being met in these new driver updates from Realtek. New updates may fix previous bugs, but they introduce new bugs. If Realtek were more responsive to the community, we would likely have more stable drivers faster. Until that time, we'll always be caught in a cat and mouse game.

What do we do now? My belief is that the best we can do is leave the driver that exists in 10.04 LTS as is, but bring in a newer version from the 2.6.34 kernel into linux-backports-modules-wireless. This is the package I provided in comment #202. Although it does not fix all issues for everyone, it does help some people. We could backport the 2.6.33 driver, but there's evidence that this does not fix things for everyone either. I have read the changelog between 2.6.33 and 2.6.34, and it appears that 2.6.34 should be the same as 2.6.33 with a bunch of fixes applied.

If you are feeling adventurous, you can also try to change your wireless card. If it's a USB card, that's easiest :). If it's a mini-pci card, you can still change it, but you have to crack open your laptop to do so... Or you can get a USB dongle and use it instead. I'm not suggesting anyone do this, but it is an option. Intel and Atheros cards tend to work the best in Linux.