iMX31 and 88W8686 SDIO module
Dan Williams
dcbw at redhat.com
Wed Apr 30 13:40:48 EDT 2008
On Wed, 2008-04-30 at 13:29 -0400, Dan Williams wrote:
> On Tue, 2008-04-29 at 12:05 +0200, Holger Schurig wrote:
> > > libertas cmd: GET_HW_SPEC: firmware release 9.70.3p18
> > > libertas cmd: GET_HW_SPEC: MAC addr 00:19:88:05:39:58
> > > libertas cmd: GET_HW_SPEC: hardware interface 0x2, hardware
> > > spec 0x0011
> >
> > Ahh, nice. As a side note: my firmware has 5.0.16p0. The firmware
> > for the USB dongle is also at 5.x.x.x. Your firmware with
> > 9.x.x.px seems quite far away in it's numbering scheme.
> >
> >
> > > libertas host: DNLD_CMD: command 0x0022, size 26, jiffies
> > > 16367
> > > libertas DNLD_CMD: 22 00 1a 00 04 00 00 00 02 00 00 00 00 00
> > > 00 00
> > > libertas DNLD_CMD: 00 00 00 00 00 00 00 00 00 00
> >
> > This is equivalent to the kernel libertas driver, we just have a
> > different sequence number (which is OK).
> >
> > cmd: DNLD_CMD: command 0x0022, seq 3, size 26
> > DNLD_CMD: 22 00 1a 00 03 00 00 00 02 00 00 00 00 00 00 00
> > DNLD_CMD: 00 00 00 00 00 00 00 00 00 00
> >
> > According to the kernel libertas driver, ("grep 0022 *.h") this
> > is CMD_802_11_DATA_RATE. The driver uses it to get all available
> > data rates.
>
> The v8 and v9 drivers probably drop this because their hardware supports
> all common rates. The v9 moblin driver just returns a static table of
> supported rates.
>
> > However, the firmware spec that was published on the mailing list
> > by accident (and greatly help Marvell to get a wide adoption of
> > it's hardware by the Linux community!) doesn't document command
> > 0x0022. Maybe your firmware, which has a much higher version
> > than mine, doesn't support this command anymore. It even says
> > so, error code 0x0002 is "Command not supported".
>
> I think there's a divergence at firmware v5.1 here. It looks like
> firmware versions < 5.1 use DATA_RATE.
>
> But 5.1 and later, while they support DATA_RATE, have transitioned
Clarification; 5.1 supports DATA_RATE, but anything > 5.1 probably does
not.
> to CMD_TX_RATE_QUERY for getting the rate (SIOCGIWRATE)
> and CMD_802_11_RATE_ADAPT_RATESET for setting the rate scaling table
> (SIOCSIWRATE). Both are described in the 5.1 spec and also implemented
> in the moblin driver.
>
> We'll probably have to have some firmware checking logic in the driver
> to take the appropriate path.
>
> Dan
>
> >
> > I have two suggestions:
> >
> > * Try to get a full moblin image and search there
> > in /lib/firmware for the firmware that suits the driver.
> >
> > * or ditch lbs_get_data_rate() and implement your own, maybe by
> > providing a fixed list. And for lbs_set_data_rate(), you could
> > just "return -ENOPERM" or whatever for now. It's only ever
> > called if the user runs "iwconfig eth1 rate XXX" anyway. The
> > real solution (and one that you could contribute back the linux
> > community) would be a check for the firmware version and act
> > accordingly.
> >
> > We might even think about getting rid of lbs_get_data_rate()
> > generally, independend from the firmware version. After all,
> > firmware capability bit mask from CMD_GET_HW_SPEC tells us if
> > the device is 802.11b, .11g or .11a or a combination thereof. So
> > we can deduce the valid data rates from the capability bits.
> >
> > If you provide such a patch, I'm happy to test this on CF and an
> > older USB firmware.
> >
> > _______________________________________________
> > libertas-dev mailing list
> > libertas-dev at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/libertas-dev
>
>
> _______________________________________________
> libertas-dev mailing list
> libertas-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/libertas-dev
More information about the libertas-dev
mailing list