On Sun, 2011-04-10 at 18:35 +0200, Ivo Van Doorn wrote: > Hi, > > On Sun, Apr 10, 2011 at 5:56 PM, Ben Hutchings <ben@xxxxxxxxxxxxxxx> wrote: > > I notice that rt2800{pci,usb} each specify only one firmware image, > > regardless of the controller version. > > > > This is inconsistent with rt28{6,7}0sta and with the firmware images in > > linux-firmware. > > Well the rt2800pci/usb firmware behavior is consistent with the original > Ralink drivers (Not sure about the staging drivers, I only look to the drivers > on the Ralink website). Are you referring to the #ifdef BIN_IN_FILE code? This code is not enabled, so you should assume it is broken. I suspect that it was intended to ease firmware development. Ralink provides multiple drivers per bus type for RT28xx and later chips. For PCI devices they split between RT2860 and RT309x; for USB devices they split between RT2870 and RT307x (I think - the chip model numbers don't seem to be stated consistently). In addition, the USB drivers have two separate images packed together and they can select different images based on the controller version: #ifdef RTMP_MAC_USB if ((Version != 0x2860) && (Version != 0x2872) && (Version != 0x3070)) { // Use Firmware V2. //printk("KH:Use New Version,part2\n"); pFirmwareImage = (PUCHAR)&FirmwareImage[FIRMWAREIMAGEV1_LENGTH]; FileLength = FIRMWAREIMAGEV2_LENGTH; } else { //printk("KH:Use New Version,part1\n"); pFirmwareImage = FirmwareImage; FileLength = FIRMWAREIMAGEV1_LENGTH; } #endif // RTMP_MAC_USB // The firmware blobs in RT2870 version 2009-08-20 and RT3070 version 2009-05-25 are all marked as version 17 (or 0.17), but *they all have different contents*. I attempted to maintain the same version selection logic when converting the staging drivers to use the firmware loader, since I assumed there was a good reason for it. > As for the linux-firmware that contains some firmware files for rt30** chipsets, > but that are not used by rt2800pci/usb for the simple reason that the latest > version of the rt2860.bin and rt2870.bin files contain support for > those chipsets > as well. So I have heard. But do they still support the original chips correctly? > > If you think that a single image per bus type can cover all controllers, > > please identify those firmware images, test them on each hardware > > generation, and get them into linux-firmware. > > Updating the firmware files in the linux-firmware tree seems to be > close to impossible. Multiple attempts have been made to update the > firmware files for rt73usb, rt61pci, rt2800pci and rt2800usb, and every > attempt has been ignored. > Even when Ralink sent the update directly, and it seemed that the patches > were accepted, they were still not applied. This roughly matches my experience, except that I have been persistent enough to get my changes applied eventually. > So honestly, I think it might be easier to simply remove the Ralink firmware > files from the linux-firmware tree, as then at least the users won't accidently > use the outdated firmware files from that tree. linux-firmware is supposed to have all firmware files referenced by any version of Linux; therefore these files must not be removed. If just two files are sufficient then the other files could be replaced by symlinks to them. Ben. -- Ben Hutchings Once a job is fouled up, anything done to improve it makes it worse.
Attachment:
signature.asc
Description: This is a digitally signed message part