2007-09-12 21:04:24

by Dave Kilroy

[permalink] [raw]
Subject: [PATCH 00/05] orinoco: Agere/Lucent firmware download

Implements firmware download to RAM for Lucent-Agere firmware.
Firmware download is a requirement to implement WPA on these cards.

The patchset is against v2.6.23-rc5 from Linus' git tree. The complete
patch is available at <http://www.virtualsoup.org/files/orinoco_fw_dl.patch>

Programs to generate the necessary firmware are available at
<http://www.virtualsoup.org/files/orinoco_dump_fw.tar.bz2>. They
require either the wl_lkm_714/8 sources or a windows driver. See
README.dump_fw for more information.

The following firmwares download and run on my Dell TrueMobile 1150:
7.65, 8.10, 8.42, 8.58

The following firmwares download, but are not compatible with the
current orinoco_cs driver:
9.40, 9.42, 9.48

All my testing done on a pentium3 Dell C600. FW 9.48 download also
confirmed on a powerbook using a modified airport driver compiled
with a static copy of the firmware

An earlier version of this patch was posted to the orinoco-devel
list. This version has been cleaned up and updated for big endian
architectures.


Regards,

Dave Kilroy.



2007-09-14 18:48:06

by Dave Kilroy

[permalink] [raw]
Subject: Re: [PATCH 00/05] orinoco: Agere/Lucent firmware download

Dave wrote:
> Pavel Roskin wrote:
>> On Wed, 2007-09-12 at 22:09 +0100, Dave wrote:
>>> Implements firmware download to RAM for Lucent-Agere firmware.
>>> Firmware download is a requirement to implement WPA on these cards.
>>
>> Please use sparse to check endianess and other issues. You can use this
>> command once sparse is in PATH:
>>
>> make C=2 CF="-Wall -D__CHECK_ENDIAN__"

Either that was painless, or I did it wrong. Using sparse 3.0 the only warnings were in orinoco.c, related to the use of ARRAY_SIZE. Errors are false positives.

$ make O=../build C=2 CF="-Wall -D__CHECK_ENDIAN__" > ../sparse.log 2>&1

<snip>
CHECK /usr/src/linux-current/linux-2.6/drivers/net/irda/sir_dongle.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:1391:27: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:2542:35: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:2771:24: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:2773:18: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:3118:19: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:3123:29: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:3357:18: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:3393:2: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:3421:20: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:3426:13: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:4007:38: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:4278:18: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:4279:17: error: cannot size expression
/usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c:4280:22: error: cannot size expression
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/hermes.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/hermes_dld.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco_cs.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco_plx.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco_pci.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco_tmd.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco_nortel.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/spectrum_cs.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/zd1201.c
<snip>

Regards,

Dave.


2007-09-14 17:53:53

by Dave Kilroy

[permalink] [raw]
Subject: Re: [PATCH 00/05] orinoco: Agere/Lucent firmware download

Pavel Roskin wrote:
> On Wed, 2007-09-12 at 22:09 +0100, Dave wrote:
>> Implements firmware download to RAM for Lucent-Agere firmware.
>> Firmware download is a requirement to implement WPA on these cards.

Hi Pavel,

Thanks for the tips - not sure I was e-mailing the right lists/people.

>> The following firmwares download and run on my Dell TrueMobile 1150:
>> 7.65, 8.10, 8.42, 8.58
>
> What some users may want to run is 6.06 or 6.16, as the 7.xx and 8.xx
> firmwares have stability issues with the monitor mode.

RAM only firmware (ie. Variant 2) is not available prior to firmware 7.52, so unfortunately this patch won't help those users. See driver readme for Summer 2001 release (driver ~v7.06) for the first announcements of variant 2.

>> The following firmwares download, but are not compatible with the
>> current orinoco_cs driver:
>> 9.40, 9.42, 9.48
>
> That's great news anyway. We may see Hermes II supported eventually.

Those are Hermes I firmwares. Hermes II versions of the same era are ~2.26, and I haven't tried to download these to my Hermes I card :). Also Hermes II download is slightly different.

> Please use sparse to check endianess and other issues. You can use this
> command once sparse is in PATH:
>
> make C=2 CF="-Wall -D__CHECK_ENDIAN__"

I'll have a go at that shortly.

Thanks,

Dave.

2007-09-14 21:01:18

by Dave Kilroy

[permalink] [raw]
Subject: Re: [PATCH 00/05] orinoco: Agere/Lucent firmware download

Johannes Berg wrote:
> On Fri, 2007-09-14 at 19:48 +0100, Dave wrote:
>> Either that was painless, or I did it wrong. Using sparse 3.0 the only
>> warnings were in orinoco.c, related to the use of ARRAY_SIZE. Errors
>> are false positives.
>
> They're errors tho so sparse aborts and stops parsing the file at that
> point. A new git sparse can actually parse ARRAY_SIZE though, I can only
> recommend getting that.

Repeated with latest sparse from git. No warnings.

<snip>
CHECK /usr/src/linux-current/linux-2.6/drivers/net/irda/sir_dongle.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/hermes.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/hermes_dld.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco_cs.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco_plx.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco_pci.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco_tmd.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/orinoco_nortel.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/spectrum_cs.c
CHECK /usr/src/linux-current/linux-2.6/drivers/net/wireless/zd1201.c
<snip>

Regards,

Dave.

2007-09-14 21:12:30

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 00/05] orinoco: Agere/Lucent firmware download

On Fri, 2007-09-14 at 22:01 +0100, Dave wrote:
> Johannes Berg wrote:
> > On Fri, 2007-09-14 at 19:48 +0100, Dave wrote:
> >> Either that was painless, or I did it wrong. Using sparse 3.0 the only
> >> warnings were in orinoco.c, related to the use of ARRAY_SIZE. Errors
> >> are false positives.
> >
> > They're errors tho so sparse aborts and stops parsing the file at that
> > point. A new git sparse can actually parse ARRAY_SIZE though, I can only
> > recommend getting that.
>
> Repeated with latest sparse from git. No warnings.

:)

johannes


Attachments:
signature.asc (190.00 B)
This is a digitally signed message part

2007-09-14 19:05:30

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 00/05] orinoco: Agere/Lucent firmware download

On Fri, 2007-09-14 at 19:48 +0100, Dave wrote:

> Either that was painless, or I did it wrong. Using sparse 3.0 the only
> warnings were in orinoco.c, related to the use of ARRAY_SIZE. Errors
> are false positives.

They're errors tho so sparse aborts and stops parsing the file at that
point. A new git sparse can actually parse ARRAY_SIZE though, I can only
recommend getting that.

johannes


Attachments:
signature.asc (190.00 B)
This is a digitally signed message part

2007-09-14 05:05:21

by Pavel Roskin

[permalink] [raw]
Subject: Re: [PATCH 00/05] orinoco: Agere/Lucent firmware download

Hello, Dave!

On Wed, 2007-09-12 at 22:09 +0100, Dave wrote:
> Implements firmware download to RAM for Lucent-Agere firmware.
> Firmware download is a requirement to implement WPA on these cards.

I really appreciate your efforts.

Please avoid copying to David Gibson in the future, as he stepped down
as the maintainer.

Also, it may work better if you post your patches to orinoco-devel
first, and then to linux-wireless. Many people hesitate to reply to
messages cross-posted to several lists. orinoco-users doesn't need to
be involved at all.

I understand that it's a major change, and in needs to be tested
thoroughly. I don't have time to review the patches right now, but it
is on my TODO list.

> The following firmwares download and run on my Dell TrueMobile 1150:
> 7.65, 8.10, 8.42, 8.58

What some users may want to run is 6.06 or 6.16, as the 7.xx and 8.xx
firmwares have stability issues with the monitor mode.

> The following firmwares download, but are not compatible with the
> current orinoco_cs driver:
> 9.40, 9.42, 9.48

That's great news anyway. We may see Hermes II supported eventually.

> All my testing done on a pentium3 Dell C600. FW 9.48 download also
> confirmed on a powerbook using a modified airport driver compiled
> with a static copy of the firmware

Please use sparse to check endianess and other issues. You can use this
command once sparse is in PATH:

make C=2 CF="-Wall -D__CHECK_ENDIAN__"

--
Regards,
Pavel Roskin