==============================================================================
Agere Systems Inc.                                                   July 2004
Readme for Linux Driver Source for Wavelan                   Version: 7.22-abg
==============================================================================

This text file includes update information, installation instructions,
limitations to the current version of the product, and suggestions to solve
known issues or problems.


TABLE OF CONTENTS.

1.  DESCRIPTION
2.  SYSTEM REQUIREMENTS
3.  NEW IN THIS RELEASE
4.  INSTALLATION NOTES
5.  TECHNICAL CONSTRAINTS
6.  KNOWN ISSUES
7.  TECHNICAL SUPPORT

------------------------------------------------------------------------------
1.  DESCRIPTION

    With this package, you can build and install a Wireless driver for a
    specific Linux kernel.

    The driver in this package supports the network interface cards based on:
     - WL60010, a.k.a. Hermes-II
     - WL60040, a.k.a. Hermes-II.5

    Although derived from the Hermes-I/II Linux driver, this release ONLY
    Supports Hermes-II/II.5 chipsets.  Hermes-I is no longer supported.

    The software is distributed in a compressed source file archive:
     - wl_lkm_7_22_abg.tar.gz

    Because this release supports more than one Hermes CPU and bus
    architecture, a naming convention is used for the resulting binaries that
    can be built from this source code. Driver binaries are named as follows:

    wlags49_<hermes_type>_<bus_arch>.o

    where 'wlags49' denotes an Agere WaveLan Linux build,

    <hermes_type> is: 'h2' for Hermes-II, 'h25' for Hermes-II.5

    <bus_arch> is: 'cs' for Card Services (PCMCIA, Compact Flash), PCI for
    PCI or MiniPCI.

    For example, a driver built for Hermes-II Card Services (PCMCIA/Compact
    Flash) is named wlags49_h2_cs.o, whereas a driver built for Hermes-II
    MiniPCI is named wlags49_h2_pci.o.
    The following software is included with this distribution:

    General information:
    * README.wlags49              This file
    * LICENSE.wlags49             License
    * wlags49.mk                  Top level Makefile
    * Build                       Script to build driver
    * Install                     Script to install driver

    Driver source:
    * wireless/                   MSF source
    * hcf/                        HCF and F/W source
    * wireless/wlags49_cs.mk      Driver Makefile, PC Card
    * wireless/wlags49_pci.mk     Driver Makefile, PCI
    * include/hcf/debug.h         Driver debug support
    * include/hcf/hcfcfg.h        Header to configure HCF
    * include/wireless/*.h        Driver source headers

    Driver online manual page:
    * man/wlags49.4               Driver manual page

    PCMCIA configuration update:
    * etc/wlags49.conf            Add-on config file
    * etc/wlags49.mk              config update Makefile
    * etc/wlags49.patch           config update patch file

    The driver is build up of 2 modules:
     - a higher module called Module Specific Functions (MSF), which contains
       the functions of the driver that are network driver interface and
       Operating System specific.
     - a lower module called Hardware Control Functions (HCF), which contains
       the functions to interface to the Network Interface Card (NIC).  The HCF
       provides for all WaveLAN NIC types one standard interface to the MSF.
       This I/F is called the Wireless Connection Interface (WCI) and is the
       subject of a separate document (025726).

    The HCF directory contains firmware images to allow the card to operate in
    either station (STA) or Access Point (AP) mode. In the build process, the
    files fw_h2.c and fw_h25.c are used for Hermes-II and Hermes-II.5
    respectively. The firmware images in this release are identified as:
	 - HII Station F/W:      fw_h2.c.sta
	 - HII.5 Station F/W:    fw_h25.c.sta
	 - HII AccesPoint F/W:   fw_h2.c.ap
	 - HII.5 AccesPoint F/W: fw_h25.c.ap
	To build a STA or AP mode driver, the suffix .sta or .ap must be removed.
	The files as distributed by this release build STA drivers by default.

------------------------------------------------------------------------------
2.  SYSTEM REQUIREMENTS

2.1 Operating System

    This software can be compiled and installed with Linux kernel versions
    2.4.x. Although this driver should compile for other CPUs as well, as of
    the date of this release, no CPU architectures other than x86 have been
    verified.

    wl_lkm_7_22_abg is tested with the following Linux Distributions:
    * Red Hat version 9.0
    * Suse    version 9.0

    If you're building for PC Card or Compact Flash, you need the Card Services
    from David Hinds.

    wl_lkm_7_22_abg is tested with:
    * pcmcia-cs-3.2.7.tar.gz

2.2 Free Disk Space

    To compile the software you need to have the full set of Linux kernel
    source files installed, as well as a sane build environment which includes
    all tools necessary for compiling and linking code. Depending on the exact
    version of the kernel, you need approximately 150 MB of free disk space.
    Once compiled, the driver uses about 150-200 KB.  Please note, this size is
    approximate and can vary depending on which version of the driver is built.
    In addition, adding debug tracing support increases this size.

------------------------------------------------------------------------------
3.  NEW IN THIS RELEASE

Version 7.22 abg - July 28, 2004

------------------------------------------------------------------------------
4.  INSTALLATION NOTES

    The driver files for the Linux driver are not "ready" for direct
    installation onto any Linux computer.  To build and install the driver you
    need some expertise on the Linux operating system in general and the type
    and version installed of the kernel installed on your computer.  With this
    knowledge you can use the driver source files provided to build your own
    Linux driver for your specific computer and kernel.

4.1 Before you start

    1) Determine the type and version of the Linux kernel of your computer and
    check whether it meets the system requirements listed in section 2 of this
    README.

    2) If you're building for PC Card or Compact Flash, read the Linux
    PCMCIA-HOWTO by David Hinds. This document is probably provided on the
    CD-ROM of your Linux distribution. You can download the latest version
    from:

        http://pcmcia-cs.sourceforge.net

   Please read the section titled "Prerequisites and kernel setup" of the
   PCMCIA-HOWTO.

4.2 Build the driver for PC Card / Compact Flash

    1) Obtain a copy of the Linux PCMCIA package from a CD-ROM of your Linux
    distribution or download the latest version.
    For your convenience, the Agere Systems Wireless CD-ROM contains a copy of
    the PCMCIA package in sub-directory: Xtras/Linux/PCMCIA

    2) To unpack the Linux PCMCIA package, copy it to the current working
    directory and type:
       % tar xzvf pcmcia-cs-x.y.z.tar.gz
       % mv pcmcia-cs-x.y.z pcmcia-cs

    Note: If you use the archive supplied on the CDROM, use archive name
    "pc3_2_1.tgz" instead of "pcmcia-cs-3.2.7.tar.gz".

    Note: even though PCMCIA code exists in the kernel source tree, the PCMCIA
    Card Services package needs to be unpacked locally to build drivers based
    on it.

    3) Extract the wlags49 distribution archive on top of the Linux PCMCIA
    package.
       % cd pcmcia-cs
       % tar xzvf ../wl_lkm_7_22_abg.tar.gz

    4) To build and install the driver, follow the procedure below:
       % ./Configure

    Answer the presented questions. Usually the default answers are OK and
    pressing "Enter" is enough.
    On newer RedHat systems, however, you should specify "/usr/src/linux-2.4"
    as the Linux source directory instead of the default "/usr/src/linux".

    For more detailed information on configuration, building and installing,
    see the PCMCIA-HOWTO.

    To build the default drivers, which support Hermes-II in station mode, run
    the Build script:
       % ./Build

    This script determines whether your system uses in-kernel PCMCIA and either
    builds the full PCMCIA package or just the driver.

    Before installing the driver with the Install script, you must become
    'root':
       % su
       ..
       % ./Install

    This script determines whether your system uses in-kernel PCMCIA and either
    installs the full PCMCIA package or just the driver.

    5) If it becomes necessary to clean the build, issue the following
    commands:
       % make clean
       % make -C lib clean

4.3 Build the driver for PCI

    1) Extract the wlags49 to the current working directory.
       % tar xzvf wl_lkm_7_22.tar.gz

    Note: there is no need to unpack the driver source into a PCMCIA build
    directory.

    2) To build the PCI driver:
       % make -f wlags49.mk wlags49_h2_pci
       or
       % make -f wlags49.mk wlags49_h25_pci

    3) Install the driver.
       % insmod ./wireless/wlags49_h25.o

    4) If it becomes necessary to clean the build.
       % make -f wlags49.mk pci_clean

4.4 Configure your Wireless PC Card

    There are 3 ways to configure the driver
    - module parameters (/etc/pcmcia/config.opts)
    - wireless extension (/etc/pcmcia/wireless.opts)
    - Agere configuration file (/etc/agere/iwconfig-eth#)


4.4.1 Configure through /etc/pcmcia/config.opts

    To use this method, make sure that /etc/pcmcia/wireless.opts file is either
    absent or contains blank parameter values as shown below.

    *,*,*,00:60:1D:*|*,*,*,00:02:2D:*)
        INFO=""
        ESSID=""
        MODE=""
        KEY=""
    ;;

    1) To configure the Wireless PC Card, please refer to:
       * The online manual page (wlags49.4)
         % man wlags49
       * The network adapter sections of the PCMCIA documentation.
         % more PCMCIA-HOWTO

    2) Use an editor to configure the module parameters:
       # vi /etc/pcmcia/config.opts

       a) To connect your computer to a wireless infrastructure that includes
       access points such as the AP-1000 or AP-500, you need to identify the
       network name of the wireless infrastructure.

       For example if your infrastructure uses the network name "My Network",
       edit the config.opts file to include the following:

       module "<driver_name>" opts "network_name=My\ Network"

       Notice that the space character needs to be escaped with a backslash.

       b) To connect your computer to a Residential Gateway RG-1000, you need
       to know the RG ID (=network_name) and the encryption key.  You can find
       the RG ID on a small label on the rear of the unit.

       For example if your RG-1000 has ID 225ccf and you did not change the
       encryption key yet, edit the config.opts file to include the following:

       module "<driver_name>" opts "network_name=\"225ccf\" key_1=\"25ccf\"
       enable_encryption=Y"

       If you changed your encryption key, you should specify this key as key_1
       on the parameter line.

       c) To connect your computer to a peer-to-peer network, in an environment
       without access points, the IBSS mode is recommended.

       For example to connect to a peer-to-peer network called "My Network",
       enter the following in the config.opts file:

       module "<driver_name>" opts "create_ibss=Y network_name=My\ Network"

       d) Optionally you can also include a "Station Name" value that can be
       used to indentify your computer on the wireless network.

       For example if you wish to name your computer "Wave1" when connecting it
       to a wireless infrastructure,  edit the config.opts file to include the
       following:

       module "<driver_name>" opts "network_name=Ocean station_name=Wave1"

       e) To connect your computer to an Ad-Hoc workgroup of wireless
       computers, enter the following in the config.opts file:

       module "<driver_name>" opts "port_type=3"

       Note that the "Ad-Hoc Demo Mode" is not the recommended mode for a
       peer-to-peer network.  The configuration of this  non-interoperable mode
       is only explained here for special applications (e.g. research, or
       compatibility with other / previous WaveLAN/IEEE products).

       The IBSS mode described in c) is the preferred and interoperable mode
       for creating a peer-to-peer network.

    3) Use an editor to modify the network options for your adapter.
       # vi /etc/pcmcia/network.opts

       The parameters need to be correct for the connected network. Check with
       your system administrator for the correct network information.  Refer to
       the PCMCIA-HOWTO for more configuration information.

       For example:
            *,*,*,*)
                IF_PORT=""
                BOOTP="n"
                IPADDR="10.0.0.5"
                NETMASK="255.255.255.0"
                NETWORK="10.0.0.0"
                BROADCAST="10.0.0.255"
                GATEWAY="10.0.0.1"
                DOMAIN="domain.org"
                DNS_1="dns1.domain.org"
                ;;

       RedHat and Suse do not use the network.opts to configure the driver.
       Instead RedHat uses a GUI-based tool called 'neat' ('net.cfg' in older
       versions) and SuSE Linux uses 'YaST'. These tools creates scripts, like
       ifcfg-eth0, in the directory /etc/sysconfig/network-scripts. Using the
       default GNOME menu, you can start netcfg from: Programs->System->Network
       Configuration.

    4) Restart the PCMCIA services.
       # /etc/rc.d/rc.pcmcia restart
         or
       # /etc/rc.d/init.d/pcmcia restart


    For a more detailed description about the various configuration options and
    definitions, please consult the Wireless documentation.

4.4.2 Configure through /etc/pcmcia/wireless.opts

    This driver has support for the "Wireless Extensions".  This interface
    allows the "Wireless Tools" to get statistics from the driver and allows to
    change the configuration of the driver on the fly.

    The latest versions of the PCMCIA package contain scripts that use the
    wireless extension to configure the driver as an alternative to the
    configuration through module parameters as described in section 4.4.1.
    Read the /etc/pcmcia/wireless.opts file for the theory of operation.  When
    the driver is configured, go to section 4.4.1 step 3 to configure the
    network parameters.

    For more information, refer to the following WEB pages:
    http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Linux.Wireless.Extensions.html
    http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html

4.4.3 Configure through /etc/agere/iwconfig-eth#

    In addition to using either the module options or the wireless extensions
    methods to configure a wireless device, this version of the software also
    supports an Agere specific implementation. This was done because:
    * Module options configures multiple devices the same.
    * Wireless extensions parameters do not cover all of the available options
      in the driver.

    For each wireless ethernet device (identified by eth<n>, where n is a
    positive integer), a file /etc/agere/iwconfig-eth<n> can be created which
    contains configuration information for a wireless device. For example, the
    file /etc/agere/iwconfig-eth1 is the config file for eth1. This file should
    contain Key/Value pairs in the format:

    <Key>=<Value>

    where <Key> is the parameter to configure and <Value> is the value to
    assign it. For example, if the config file /etc/agere/iwconfig-eth1
    described above contains the following:

    DesiredSSID=some_network
    EnableEncryption=Y
    Key1=net01
    TxKey=1

    this configures eth1 to associate to the ESSID 'some_network' with
    encryption on, where the the first encryption key is 'net01' and the key to
    use for encryption is Key 1.

    Note that this only works on Agere hardware which uses this driver. For
    other wireless drivers, or non-wireless devices, this file can be present,
    but has no effect.

    Please refer to the man page for more information on this configuration
    file and the parameters that can be set.


4.5 Configuring your Wireless PCI card

    Note that the above method of configuring the card using
    /etc/pcmcia/config.opts is only valid for PCMCIA/CF cards. For [mini]PCI
    and CardBus cards, refer to your system's documentation on modules.conf to
    load the driver with the proper options for a given wireless ethernet
    interface. In addition, network configuration tools like 'netcfg', 'neat',
    or 'YaST' (see Section 4.4.1, Step 3) can be used to configure the miniPCI
    card. Lastly, the Agere configuration file described in Section 4.4.3 may
    also be used for [mini]PCI and CardBus devices.

4.6 Troubleshooting

    When the Wireless PC Card is inserted, the card manager emit beeps in
    different tones to indicate success or failure of particular configuration
    steps.
      a) Two high beeps
         - The card was identified and configured successfully.
      b) One high beep followed by a low beep
         - The card was identified, but could not be configured.
         - Examine the system log (dmesg) for PCMCIA error or warning messages.
      c) One low beep
         - The card could not be identified.
         - Execute "cardctl ident" to display the adapter PnP information.
           Verify the PnP information matches an entry in the PCMCIA
           configuration file (/etc/pcmcia/config).
         - Examine the system log (dmesg) for PCMCIA error or warning messages.

    The Wireless PC Card has two LEDs that indicate the state of the adapter
    and network.
      * Power LED (toward the middle of the adapter)
    	- This LED indicates power has been applied, and the card is
    	  functional. In normal operation mode with Card Power Management
    	  disabled, it is steady-on. With Card Power Management enabled, it
    	  blinks rapidly (several times per second).
      * Transmit/Receive LED (closer to the edge of the adapter)
        - This LED flashes when it detects transmit or receive packets.

      * Both LEDs blink at the same time every 10 seconds.
    	- The adapter was unable to make contact with the named wireless
    	  network. Verify the network_name, in the config.opts file matches the
    	  network name of the access point.
      * LEDs indicate normal operation with the Power LED
    	steady-on or blinking rapidly and Transmit/Receive LED flashing, but no
    	traffic.
    	- If the network is operating in normal mode (ie.  port_type = 0 or not
    	  specified), and a network_name has been specified, verify the
    	  workstation network parameters (ifconfig, route, etc.) are correct
    	  for the wireless network.
    	- If the network is operating in Ad-Hoc (peer-to-peer) mode (ie.
    	  port_type = 3), the adapter needs another workstation/adapter to
    	  communicate with.  Verify the network parameters on both of the
    	  workstations (ifconfig, route, etc.) are correct.

    Refer to the online manual page for additional configuration, feature and
    support information.
       % man wlags49
         or
       % man 4 wlags49
         or
       % nroff -man wlags49.4 | more

4.7 Identifying the software

    This section explains how to identify the version of this software once it
    is unpacked or installed.

    The Linux Driver Source/Library distribution consist of two main
    components, the driver source and the HCF module.

    * To quickly identify the version of the source, type:
      % grep DRV.*VERSION include/wireless/wl_version.h
      #define DRV_MAJOR_VERSION   7
      #define DRV_MINOR_VERSION   22

    * To identify the revision of the HCF library contained in the driver,
      type:
      % grep HCF.Revision hcf/hcf.c
      #define HCF_VERSION  TEXT( "HCF$Revision: 1.8 $" )

    To identify a compiled wlags49 driver, go to the directory where the driver
    is located. Card Services drivers (wlags49_h2_cs.o and wlags49_h25_cs.o)
    are located in:
    /lib/modules/<kernel-version>/pcmcia

    PCI drivers (wlags49_h2.o) are located in:
    /lib/modules/<kernel-version>/kernel/drivers/net

    * To retrieve the version of the source used to compile the driver, type:
      % strings <driver_name>.o | grep Agere
      <driver_name> v7.22-abg-Beta for PCMCIA
      <driver_name> v7.22-abg-Beta for PCI

    * Likewise, to retrieve the revision of the HCF used to compile the driver,
      type:
      % strings <driver_name>.o | grep Revision
      HCF$Revision: 5.15

    At startup the wlags49 driver reports its version in the system log file
    (/var/log/messages).

------------------------------------------------------------------------------
5.  TECHNICAL CONSTRAINTS

    At the time of release of this software, the following constraints are
    identified:

5.1 Using the ISA adapter

    Description: To allow operation in desktop computers Agere also provides an
    optional ISA bus to PC Card adapter (also referred to as "swapbox").

    This ISA Adapter can be configured for two different I/O Address values:
      * 3E2 (factory-set default)
      * 3E0

    Impact: By default the i82365 module of the Linux pcmcia package only
    probes at 3E0.

    Actions:
    1) Read the manual page on the probing of the i82365 module, by typing the
    command:
        man i82365

    2) Apply one of the two following options:
       a) Change the I/O address strapping of the ISA adapter by replacing the
          jumper on the ISA adapter.  The correct jumper setting is pictured in
          the electronic "Wireless ISA Adapter, Getting Started Guide" provided
          on the Wireless Software CD-ROM. This guide is provided in Adobe's
          Acrobat PDF format.

       b) Alternatively, you can load the i82365 module with the
          "extra_sockets" parameter set to 1.

          On a RedHat 5.x thru 7.x, system, put this in the file
          "/etc/sysconfig/pcmcia":
             PCMCIA=yes
             PCIC=i82365
             PCIC_OPTS="extra_sockets=1"
             CORE_OPTS=
             CARDMGR_OPTS=

          For other Linux distributions, you are advised to consult the
          "PCMCIA-HOWTO" notes for information about changing the I/O Address
          probing.

5.2 Using the PCI Adapter

    Description: To allow operation in desktop computers Agere also provides an
    optional PCI bus to PC Card adapter (also referred to as "swapbox").

    For correct interrupt assignment, the system should support PCIBIOS 2.2.
    It is recommended to use PCMCIA package version 3.2.7 or higher.

    The default configuration of the interrupt routing method of the PCI
    Adapter's TI CardBus Controller is incorrect.

    Actions:
    1) Read the manual page on the "Options specific for TI CardBus
    Controllers" of the i82365 module, by typing the command:
        man i82365

    2) Load the i82365 module with the "irq_mode" parameter set to 0.
       On a RedHat 5.x thru 7.x system, put this in the file
       "/etc/sysconfig/pcmcia":
           PCMCIA=yes
           PCIC=i82365
           PCIC_OPTS="irq_mode=0"
           CORE_OPTS=
           CARDMGR_OPTS=

   For the location of the PCMCIA scripts on other Linux distributions, you
   are advised to consult the "PCMCIA-HOWTO", "Notes about specific Linux
   distributions".

------------------------------------------------------------------------------
6.  KNOWN ISSUES

    This is the current list of known issues for this release, and will be
    addressed in the near future:

    1. This driver release contains a version of Hermes-II.5 firmware which
    REQUIRES calibrated cards. If there is no calibration data present in the
    PDA of the hardware, the firmware does not operate.

    2. WDS is not yet supported.

    3. DMA is not yet supported.

    4. WPA is not yet supported.

    5. 32-bits I/O is not yet supported.

    6. The current Build script also builds the PCI drivers.

    7. The current Install script also copies the PCI drivers to the lib
    directory.

	8. If F/W files are required from outside this release, the entry points
	inside these F/W files have to be renamed from "ap" and "station" to
	"fw_image" and they have to be renamed to fw_h2.c and fw_h25.c for
	Hermes-II and Hermes-II.5.

------------------------------------------------------------------------------
7.  TECHNICAL SUPPORT

7.1 Finding Information

    On the Agere Systems Web Site you can find the most recent device drivers,
    software updates and user documentation.

    World Wide Web:    http://www.agere.com

7.2 Contact Technical Support

    If you encounter problems when installing or using this product, or would
    like information about our other "Wireless" products, please contact your
    local Authorized "Wireless" Reseller or Agere Systems sales office.

    Addresses and telephone numbers of the Agere Systems sales offices are
    listed on our Agere Systems web site.

    When contacting Technical Support, please use the Problem Report Form and
    send it to us by Fax or E-Mail.  The Problem Report Form 'REPORT.TXT'
    (Plain text format) is included on the disk. Alternatively, you can
    download the Problem Report Form from the Agere Systems web site.

    Include Product Name, Serial Number and software version number with each
    request to help the Support Group helping you.

==============================================================================
                          END OF FILE