summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenk de Groot <henk.de.groot@hetnet.nl>2009-09-27 11:12:52 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2009-12-11 12:23:10 -0800
commit68c0bdff7ac903421f224e080499c51cd5287f97 (patch)
tree5f5f46e0a2d077c4d039a67d128a15a388dac91f
parent349f535cbd14308f1934d9b20c4c214cb49c9001 (diff)
Staging: wlags49_h2: add Agere driver for HERMES II and HERMES II.5 chipsets
WLAN driver for cards using the HERMES II and HERMES II.5 chipset Based on Agere Systems Linux LKM Wireless Driver Source Code, Version 7.22; complies with Open Source BSD License. The software is a modified version of wl_lkm_722_abg.tar.gz from the Agere Systems website, addapted for Ubuntu 9.04 and modified to fit in the current Linux kernel (2.6.31). 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 $ Signed-off-by: Henk de Groot <pe1dnn@amsat.org> Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/staging/Kconfig4
-rw-r--r--drivers/staging/Makefile2
-rw-r--r--drivers/staging/wlags49_h2/Kconfig8
-rw-r--r--drivers/staging/wlags49_h2/Makefile81
-rw-r--r--drivers/staging/wlags49_h2/README.ubuntu180
-rw-r--r--drivers/staging/wlags49_h2/README.wlags49641
-rw-r--r--drivers/staging/wlags49_h2/WARNING.txt3
-rw-r--r--drivers/staging/wlags49_h2/ap_h2.c3337
-rw-r--r--drivers/staging/wlags49_h2/ap_h25.c4094
-rw-r--r--drivers/staging/wlags49_h2/debug.h229
-rw-r--r--drivers/staging/wlags49_h2/dhf.c390
-rw-r--r--drivers/staging/wlags49_h2/dhf.h226
-rw-r--r--drivers/staging/wlags49_h2/dhfcfg.h175
-rw-r--r--drivers/staging/wlags49_h2/hcf.c4881
-rw-r--r--drivers/staging/wlags49_h2/hcf.h405
-rw-r--r--drivers/staging/wlags49_h2/hcfcfg.h2344
-rw-r--r--drivers/staging/wlags49_h2/hcfdef.h809
-rw-r--r--drivers/staging/wlags49_h2/man/wlags49.4734
-rw-r--r--drivers/staging/wlags49_h2/mdd.h1156
-rw-r--r--drivers/staging/wlags49_h2/mmd.c251
-rw-r--r--drivers/staging/wlags49_h2/mmd.h78
-rw-r--r--drivers/staging/wlags49_h2/sta_h2.c4480
-rw-r--r--drivers/staging/wlags49_h2/sta_h25.c5255
-rw-r--r--drivers/staging/wlags49_h2/wl_cs.c715
-rw-r--r--drivers/staging/wlags49_h2/wl_cs.h112
-rw-r--r--drivers/staging/wlags49_h2/wl_enc.c248
-rw-r--r--drivers/staging/wlags49_h2/wl_enc.h135
-rw-r--r--drivers/staging/wlags49_h2/wl_if.h232
-rw-r--r--drivers/staging/wlags49_h2/wl_internal.h1073
-rw-r--r--drivers/staging/wlags49_h2/wl_main.c3878
-rw-r--r--drivers/staging/wlags49_h2/wl_main.h155
-rw-r--r--drivers/staging/wlags49_h2/wl_netdev.c2085
-rw-r--r--drivers/staging/wlags49_h2/wl_netdev.h171
-rw-r--r--drivers/staging/wlags49_h2/wl_pci.c1596
-rw-r--r--drivers/staging/wlags49_h2/wl_pci.h126
-rw-r--r--drivers/staging/wlags49_h2/wl_priv.c2095
-rw-r--r--drivers/staging/wlags49_h2/wl_priv.h138
-rw-r--r--drivers/staging/wlags49_h2/wl_profile.c1128
-rw-r--r--drivers/staging/wlags49_h2/wl_profile.h104
-rw-r--r--drivers/staging/wlags49_h2/wl_sysfs.c135
-rw-r--r--drivers/staging/wlags49_h2/wl_sysfs.h7
-rw-r--r--drivers/staging/wlags49_h2/wl_util.c1604
-rw-r--r--drivers/staging/wlags49_h2/wl_util.h119
-rw-r--r--drivers/staging/wlags49_h2/wl_version.h193
-rw-r--r--drivers/staging/wlags49_h2/wl_wext.c4138
-rw-r--r--drivers/staging/wlags49_h2/wl_wext.h113
-rw-r--r--drivers/staging/wlags49_h25/Kconfig8
-rw-r--r--drivers/staging/wlags49_h25/Makefile81
-rw-r--r--drivers/staging/wlags49_h25/README.txt30
-rw-r--r--drivers/staging/wlags49_h25/ap_h25.c2
-rw-r--r--drivers/staging/wlags49_h25/debug.h2
-rw-r--r--drivers/staging/wlags49_h25/dhf.c2
-rw-r--r--drivers/staging/wlags49_h25/dhf.h2
-rw-r--r--drivers/staging/wlags49_h25/dhfcfg.h2
-rw-r--r--drivers/staging/wlags49_h25/hcf.c2
-rw-r--r--drivers/staging/wlags49_h25/hcf.h2
-rw-r--r--drivers/staging/wlags49_h25/hcfcfg.h2
-rw-r--r--drivers/staging/wlags49_h25/hcfdef.h2
-rw-r--r--drivers/staging/wlags49_h25/mdd.h2
-rw-r--r--drivers/staging/wlags49_h25/mmd.c2
-rw-r--r--drivers/staging/wlags49_h25/mmd.h2
-rw-r--r--drivers/staging/wlags49_h25/sta_h25.c2
-rw-r--r--drivers/staging/wlags49_h25/wl_cs.c2
-rw-r--r--drivers/staging/wlags49_h25/wl_cs.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_enc.c2
-rw-r--r--drivers/staging/wlags49_h25/wl_enc.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_if.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_internal.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_main.c2
-rw-r--r--drivers/staging/wlags49_h25/wl_main.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_netdev.c2
-rw-r--r--drivers/staging/wlags49_h25/wl_netdev.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_priv.c2
-rw-r--r--drivers/staging/wlags49_h25/wl_priv.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_profile.c2
-rw-r--r--drivers/staging/wlags49_h25/wl_profile.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_sysfs.c2
-rw-r--r--drivers/staging/wlags49_h25/wl_sysfs.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_util.c2
-rw-r--r--drivers/staging/wlags49_h25/wl_util.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_version.h2
-rw-r--r--drivers/staging/wlags49_h25/wl_wext.c2
-rw-r--r--drivers/staging/wlags49_h25/wl_wext.h2
83 files changed, 50250 insertions, 0 deletions
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index f012304e22a8..56b275073cee 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -125,6 +125,10 @@ source "drivers/staging/iio/Kconfig"
source "drivers/staging/ramzswap/Kconfig"
+source "drivers/staging/wlags49_h2/Kconfig"
+
+source "drivers/staging/wlags49_h25/Kconfig"
+
source "drivers/staging/strip/Kconfig"
source "drivers/staging/arlan/Kconfig"
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 0c0dd53e5027..9852d449a047 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -44,6 +44,8 @@ obj-$(CONFIG_RAR_REGISTER) += rar/
obj-$(CONFIG_DX_SEP) += sep/
obj-$(CONFIG_IIO) += iio/
obj-$(CONFIG_RAMZSWAP) += ramzswap/
+obj-$(CONFIG_WLAGS49_H2) += wlags49_h2/
+obj-$(CONFIG_WLAGS49_H25) += wlags49_h25/
obj-$(CONFIG_STRIP) += strip/
obj-$(CONFIG_ARLAN) += arlan/
obj-$(CONFIG_WAVELAN) += wavelan/
diff --git a/drivers/staging/wlags49_h2/Kconfig b/drivers/staging/wlags49_h2/Kconfig
new file mode 100644
index 000000000000..f9978fc40d4b
--- /dev/null
+++ b/drivers/staging/wlags49_h2/Kconfig
@@ -0,0 +1,8 @@
+config WLAGS49_H2
+ tristate "Agere Systems HERMES II Wireless PC Card Model 0110"
+ depends on WLAN_80211 && WIRELESS_EXT
+ ---help---
+ Driver for wireless cards using Agere's HERMES II chipset
+ which are identified with Manufacture ID: 0156,0003
+ The software is a modified version of wl_lkm_722_abg.tar.gz
+ from the Agere Systems website, addapted for Ubuntu 9.04.
diff --git a/drivers/staging/wlags49_h2/Makefile b/drivers/staging/wlags49_h2/Makefile
new file mode 100644
index 000000000000..25d0a8a9ce30
--- /dev/null
+++ b/drivers/staging/wlags49_h2/Makefile
@@ -0,0 +1,81 @@
+#
+# Makefile for wlags49_h2_cs.ko and wlags49_h25_cs.ko
+#
+# Default build for Hermes-II base cards (possibly identified with
+# "manfid: 0x0156, 0x0003" in "pccardctl ident" output), comment
+# -DHERMES25 below
+#
+# If you want to build for Hermes-II.5 base cards (possibly identified with
+# "manfid: 0x0156, 0x0004" in "pccardctl ident" output), uncomment
+# -DHERMES25 below
+#
+# If you want to build AP support (untested), comment out -DSTA_ONLY
+
+INSTALLDIR := /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless
+EXTRA_CFLAGS += -I$(KERNELDIR)/include
+EXTRA_CFLAGS += -I$(src) \
+ -DBUS_PCMCIA \
+ -DUSE_WPA \
+ -DUSE_WEXT \
+ -DSTA_ONLY \
+ -DWVLAN_49 \
+# -DHERMES25 \
+# -DDBG \
+# -DDBG_LVL=5 \
+# -DUSE_UIL \
+# -DUSE_PROFILE \
+
+ifeq ($(findstring HERMES25,$(EXTRA_CFLAGS)),)
+WLNAME := wlags49_h2_cs
+$(WLNAME)-y := sta_h2.o
+ifeq ($(findstring STA_ONLY,$(EXTRA_CFLAGS)),)
+$(WLNAME)-y += ap_h2.o
+endif
+else
+WLNAME=wlags49_h25_cs
+$(WLNAME)-y := sta_h25.o
+ifeq ($(findstring STA_ONLY,$(EXTRA_CFLAGS)),)
+$(WLNAME)-y += ap_h25.o
+endif
+endif
+
+# If KERNELRELEASE is defined, we've been invoked from the
+# kernel build system and can use its language.
+ifneq ($(KERNELRELEASE),)
+
+obj-m += $(WLNAME).o
+
+$(WLNAME)-y += wl_profile.o \
+ wl_wext.o \
+ wl_priv.o \
+ wl_main.o \
+ wl_enc.o \
+ wl_util.o \
+ wl_netdev.o \
+ wl_cs.o \
+ mmd.o \
+ hcf.o \
+ dhf.o
+
+$(WLNAME)-$(CONFIG_SYSFS) += wl_sysfs.o
+
+# Otherwise we were called directly from the command
+# line; invoke the kernel build system.
+else
+ KERNELDIR ?= /lib/modules/$(shell uname -r)/build
+ PWD := $(shell pwd)
+
+default:
+ $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
+endif
+
+clean:
+ rm -fr *.o *.ko *.mod.c *.mod.o .*.*.cmd Module.symvers \
+ Module.markers modules.order .tmp_versions
+
+install: default
+ -rmmod $(WLNAME)
+ install -d $(INSTALLDIR)
+ install -m 0644 -o root -g root $(WLNAME).ko $(INSTALLDIR)
+ /sbin/depmod -aq
+
diff --git a/drivers/staging/wlags49_h2/README.ubuntu b/drivers/staging/wlags49_h2/README.ubuntu
new file mode 100644
index 000000000000..47beaec86e4a
--- /dev/null
+++ b/drivers/staging/wlags49_h2/README.ubuntu
@@ -0,0 +1,180 @@
+=======================================================================
+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 traditonal 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. Eventhough 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 ---
+
diff --git a/drivers/staging/wlags49_h2/README.wlags49 b/drivers/staging/wlags49_h2/README.wlags49
new file mode 100644
index 000000000000..7586fd09adc9
--- /dev/null
+++ b/drivers/staging/wlags49_h2/README.wlags49
@@ -0,0 +1,641 @@
+==============================================================================
+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