=======================================================================
WLAN driver for cards using the HERMES II and HERMES II.5 chipset

HERMES II Card

PCMCIA Info: "Agere Systems" "Wireless PC Card Model 0110"
             Manufacture ID: 0156,0003

HERMES II.5 Card

PCMCIA Info: "Linksys" "WCF54G_Wireless-G_CompactFlash_Card"
             Manufacture ID: 0156,0004

Based on Agere Systems Linux LKM Wireless Driver Source Code,
Version 7.22; complies with Open Source BSD License.
=======================================================================

DESCRIPTION

The software is a modified version of wl_lkm_722_abg.tar.gz from the
Agere Systems website, addapted for Ubuntu 9.04.

Modified for kernel 2.6 by Henk de Groot <pe1dnn@amsat.org>
Based on 7.18 version by Andrey Borzenkov <arvidjaar@mail.ru> $Revision: 39 $

INSTALLATION

Unpack in a new directory.

Open a terminal screen.

Change directory to the source directory

Type command

make

and wait until it is finshed. Now you have build the module
wlags49_h2_cs; this module is meant for a HERMES II card.

The driver is tested with a Thomson SpeedTouch 110 Wireless PC Card.
For the test Station mode was used with WEP. The driver is supposed
to support WAP and as accesspoint that is NOT tested.

If you have a card using the HERMES II.5 chip you have to make
changes to the Makefile and uncomment -DHERMES25. This will build
driver wlags49_h25_cs.

Note: You can detemine the type with command "pccardctrl info"
        MANIFID: 0156,0002 = HERMES - not supported by this driver
        MANIFID: 0156,0003 = HERMES II   (Wireless B)
        MANIFID: 0156,0004 = HERMES II.5 (Wireless B/G)

After succesfull compile type command

sudo make install

to install the module.

Now the card should be recognized. It should be able to configure
and use the card with NetworkManager. Wpa_supplicant also works, as does
manual configuration using the iwconfig/iwlist programs.

Note: I only tested Station mode with WEP but if I didn't break anything
WPA and AP mode should also work; note however that WPA was experimental
in the original Agere driver!

Note: to compile as AP change the makefile and remove the line
-DSTA_ONLY \

(or comment it, but in that case make sure to move it after all the
 flags you want to use)

CHANGES

The HCF functions to control the card are virtually unchanged, the only
changes are meant to fix compiler warnings. The only real change is in
HCF_WAIT_WHILE which now has a udelay(2) added to give a small delay.

The linux driver files (wl_xxxx.c) are changed in the following ways:
- Addaptations of Andrey Borzenkov applied to 7.22 source
- Alterations to avoid most HCF_ASSERTs
-- Switching interrupts off and on in the HCF
-- Bugfixes, things that were aparently wrong like reporting link status
   change which checked a variable that was not changed in HCF anymore.
-- Used on WEP but setting keys via SIOCSIWENCODEEXT was not supported
-- Recovery actions added

The major problem was the order in which calls can be made. The original
looks like a traditional UNIX driver. To call an "ioctl" function you
have to "open" the device first to get a handle and after "close" no
"ioctl" function can be called anymore. With the 2.6 driver this all
changed; the former ioctl functions are now called before "open" and
after "close", which was not expected. One of the problems was enable/
disable of interrupts in the HCF. Interrupt handling starts at "open"
so if a former "ioctl" routinge is called before "open" or after "close"
then nothing should be done with interrupt switching in the HCF. Once
this was solved most HCF_ASSERTS went away.

The last point, recovery actions added, needs some clarification.
Starting the card works most of the time, but unfortunately not always.
At a few times recovery code was added; when the card starts to
misbehave or the communication between the HCF and the card is
out of sync and the HCF enters DEFUNCT mode everything is reset and
reinitialized. Note, hcf.c contains a lot of documentation. It takes
some time but slowly some things become clear. Also some unresolved
issues are mentioned in hcf.c, so there are still unknown bugs.

The card problems are almost in all cases when starting up and before
the first association with an AP, once the card is in operation it
seems to stay that way; when debugging no HCF_ASSERTS appear anymore.
Note: some HCF_ASSERTS still appear, in a number of cases it is a real
error, for example at card removal the missing card is detected.

LICENSE

The Agere Systems license applies. This is why I include the original
README.wlags49. The instructions in that file are bogus now. I also
include the man page. Even though setting parameters on the module
does not work anymore but it provides some information about all the
settings.

I have not have personal contact with Agere, but others have. Agere
agreed to make their software available under the BSD licence.
This driver is based on the 7.22 version.

The following was mailed by Agere to Andrey Borzenkov about this:

    --- Begin Message ---

        * From: TJ <tj@xxxxxxxxxxx>
        * Date: Mon, 05 Feb 2007 19:28:59 +0000

    Hi Andrey,

    I've got some good news for you/us/the world of Hermes :)

    I got a reply from the legal representative at Agere confirming that
    their source-code is BSD licensed, and I've included the contents of the
    email here.

    I hope this re-assures you so that your excellent work on the drivers
    can be made widely available for other hackers to work with.

    Regards,

    TJ.

    ---------
    On Mon, 2007-02-05 at 13:54 -0500, Pathare, Viren M (Viren) wrote:


    "I would like to confirm that the two drivers; Linux LKM Wireless Driver
    Source Code, Version 7.18 and Linux LKM Wireless Driver Source Code,
    Version 7.22 comply with Open Source BSD License. Therefore the source
    code can be distributed in unmodified or modified form consistent with
    the terms of the license.

    The Linux driver architecture was based on two modules, the MSF (Module
    specific functions) and the HCF (Hardware Control Functions). Included
    in the HCF is run-time firmware (binary format) which is downloaded into
    the RAM of the Hermes 1/2/2.5 WMAC.

    This hex coded firmware is not based on any open source software and
    hence it is not subject to any Open Source License. The firmware was
    developed by Agere and runs on the DISC processor embedded within the
    Hermes 1/2/2.5 Wireless MAC devices.

    Hope this helps.

    Sincerely,

    Viren Pathare
    Intellectual Property Licensing Manager
    Agere"



    --- End Message ---

