Search Linux Wireless

Re: Firmware files for Ralink RT28x0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux