summaryrefslogtreecommitdiff
path: root/recipes/wlags-modules
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/wlags-modules
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/wlags-modules')
-rw-r--r--recipes/wlags-modules/files/Makefile81
-rw-r--r--recipes/wlags-modules/files/bugs.patch76
-rw-r--r--recipes/wlags-modules/files/fixes.patch110
-rw-r--r--recipes/wlags-modules/files/includes.patch450
-rw-r--r--recipes/wlags-modules/files/kernel-pcmcia.patch90
-rw-r--r--recipes/wlags-modules/files/wlags_h1.conf6
-rw-r--r--recipes/wlags-modules/files/wlags_h2.conf6
-rw-r--r--recipes/wlags-modules/kernel-module-wlags49-h1-cs_718.bb7
-rw-r--r--recipes/wlags-modules/kernel-module-wlags49-h2-cs_718.bb7
-rw-r--r--recipes/wlags-modules/wlags-modules_718.inc67
10 files changed, 900 insertions, 0 deletions
diff --git a/recipes/wlags-modules/files/Makefile b/recipes/wlags-modules/files/Makefile
new file mode 100644
index 0000000000..9cd1358984
--- /dev/null
+++ b/recipes/wlags-modules/files/Makefile
@@ -0,0 +1,81 @@
+EXTRA_CFLAGS := -DBUS_PCMCIA -DWVLAN_49 -DHCF_MEM_IO -DHAS_WIRELESS_EXTENSIONS -DUSE_UIL -DUSE_WPA
+EXTRA_CFLAGS += -DDBG=1 -DDBG_LVL=2
+
+# Station:
+EXTRA_CFLAGS += -DSTA_ONLY
+
+# Access-Point:
+#EXTRA_CFLAGS += -DAP_ONLY -DUSE_WDS
+
+# Station & Access-Point:
+#EXTRA_CFLAGS += -DUSE_WDS
+
+# Je nach Station, AP oder St+Ap müssen verschiedene Firmware-Versionen einkompiliert werden:
+ifneq ($(findstring STA_ONLY,$(EXTRA_CFLAGS)),)
+sta_ap-objs := sta_h$(COMPILE_HERMES).o
+else
+ifneq ($(findstring AP_ONLY,$(EXTRA_CFLAGS)),)
+sta_ap-objs := ap_h$(COMPILE_HERMES).o
+else
+sta_ap-objs := sta_h$(COMPILE_HERMES).o
+sta-ap-objs += ap_h$(COMPILE_HERMELS).o
+endif
+endif
+
+
+#######################################
+
+ifeq ($(COMPILE_HERMES),1)
+
+EXTRA_CFLAGS := $(EXTRA_CFLAGS) -DHERMES1
+
+list-multi := wlags49_h1_cs.o
+
+wlags49_h1_cs-objs := wl_cs.o wl_main.o wl_netdev.o wl_priv.o wl_util.o wl_wext.o \
+ hcf.o mmd.o dhf.o $(sta_ap-objs)
+
+obj-m := wlags49_h1_cs.o
+
+wlags49_h1_cs.o: $(wlags49_h1_cs-objs)
+ $(LD) $(LD_RFLAG) -r -o $@ $(wlags49_h1_cs-objs)
+
+endif
+
+#######################################
+
+ifeq ($(COMPILE_HERMES),2)
+
+EXTRA_CFLAGS := $(EXTRA_CFLAGS) -DHERMES2 -DUSE_RTS
+
+list-multi := wlags49_h2_cs.o
+
+wlags49_h2_cs-objs := wl_cs.o wl_main.o wl_netdev.o wl_priv.o wl_util.o wl_wext.o wl_enc.o \
+ hcf.o mmd.o dhf.o $(sta_ap-objs)
+
+obj-m := wlags49_h2_cs.o
+
+wlags49_h2_cs.o: $(wlags49_h2_cs-objs)
+ $(LD) $(LD_RFLAG) -r -o $@ $(wlags49_h2_cs-objs)
+
+endif
+
+#######################################
+
+ifeq ($(COMPILE_HERMES),25)
+
+EXTRA_CFLAGS := $(EXTRA_CFLAGS) -DHERMES25 -DUSE_RTS
+
+list-multi := wlags49_h25_cs.o
+
+wlags49_h25_cs-objs := wl_cs.o wl_main.o wl_netdev.o wl_priv.o wl_util.o wl_wext.o \
+ hcf.o mmd.o dhf.o $(sta_ap-objs)
+
+obj-m := wlags49_h25_cs.o
+
+wlags49_h25_cs.o: $(wlags49_h25_cs-objs)
+ $(LD) $(LD_RFLAG) -r -o $@ $(wlags49_h25_cs-objs)
+
+endif
+
+
+include $(TOPDIR)/Rules.make
diff --git a/recipes/wlags-modules/files/bugs.patch b/recipes/wlags-modules/files/bugs.patch
new file mode 100644
index 0000000000..12fcceaa05
--- /dev/null
+++ b/recipes/wlags-modules/files/bugs.patch
@@ -0,0 +1,76 @@
+This are some fixes for real bugs that I had with the driver in my
+environment.
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- wlags/wl_wext.c~bugs
++++ wlags/wl_wext.c
+@@ -3811,9 +3811,11 @@
+ /* NOTE: Format of MAC address (using colons to seperate bytes) may cause
+ a problem in future versions of the supplicant, if they ever
+ actually parse these parameters */
++#if DBG
+ sprintf( msg, "MLME-MICHAELMICFAILURE.indication(keyid=%d %scast addr="
+ "%s)", key_idx, addr1[0] & 0x01 ? "broad" : "uni",
+ DbgHwAddr( addr2 ));
++#endif
+ wrqu.data.length = strlen( msg );
+ wireless_send_event( dev, IWEVCUSTOM, &wrqu, msg );
+ #endif /* WIRELESS_EXT > 14 */
+--- wlags/mmd.c~bugs
++++ wlags/mmd.c
+@@ -233,7 +233,17 @@
+ i = 0;
+ }
+ #endif // HCF_ASSERT
+- return i > 3 && supp->len == sizeof(CFG_SUP_RANGE_STRCT)/sizeof(hcf_16) - 1 ?
+- (CFG_RANGE_SPEC_STRCT*)actq : NULL; /* 8 */
++/*
++ * Originally there was this code here:
++ *
++ * return i > 3 && supp->len == sizeof(CFG_SUP_RANGE_STRCT)/sizeof(hcf_16) - 1 ?
++ * (CFG_RANGE_SPEC_STRCT*)actq : NULL;
++ *
++ * Unfortunately, the sizeof() boogy was not working correctly on the Intel PXA2550 cpu.
++ * sizeof(CFG_SUP_RANGE_STRCT)==16 there. So I had to uncomment this.
++ * Holger Schurig <hs4233@mail.mn-solutions.de>
++ */
++
++ return i > 3 ? (CFG_RANGE_SPEC_STRCT*)actq : NULL; /* 8 */
+ } // mmd_check_comp
+
+--- wlags/dhf.c~bugs
++++ wlags/dhf.c
+@@ -554,7 +554,6 @@
+ {
+ plugrecord *plugrecordp = fw->pdaplug;
+ int rc = HCF_SUCCESS;
+-int plugrc = HCF_SUCCESS;
+ CFG_PROG_STRCT *ltvp;
+ hcf_32 code; // Code to plug
+ hcf_16 *pdap; // pointer to matching code found in pda
+@@ -565,7 +564,22 @@
+ while( ( rc == HCF_SUCCESS ) && ( code = plugrecordp->code ) != 0 ) {
+ pdap = apply_plug_rules(&cfg_prod_data[2], (hcf_16)(code & CODEMASK) );
+ if ( pdap ) {
++#if 0
++/*
++ * For plug record code=0x00000150, I get
++ *
++ * (CNV_LITTLE_TO_INT(*pdap) - 1) * 2 == 4
++ * and
++ * plugrecordp->len == 2
++ *
++ * Therefore the download failed. Therefore, I disable this check.
++ * Holger Schurig, hs4233@mail.mn-solutions.de
++ */
++
+ if ( (CNV_LITTLE_TO_INT(*pdap) - 1) * 2 != plugrecordp->len ) {
++#else
++ if (0) {
++#endif
+ //!! Be aware of the difference with primary plug records:
+ //!! as opposed to plug_pri_records '!=' rather than '>'
+ //!! production data plug records must fit exactly at their location
diff --git a/recipes/wlags-modules/files/fixes.patch b/recipes/wlags-modules/files/fixes.patch
new file mode 100644
index 0000000000..32036f8e58
--- /dev/null
+++ b/recipes/wlags-modules/files/fixes.patch
@@ -0,0 +1,110 @@
+This are misc fixes to warnings.
+
+Somehow I have the feeling that Agere never used -Wall or is still using
+ancient compilers (e.g. gcc-2.95.x) so that they don't see those warnings.
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- wlags/wl_main.c~fixes
++++ wlags/wl_main.c
+@@ -81,6 +81,7 @@
+ ******************************************************************************/
+ #include "wl_version.h"
+
++#include <linux/init.h>
+ #include <linux/module.h>
+ #include <linux/types.h>
+ #include <linux/kernel.h>
+@@ -1122,7 +1123,6 @@
+ VALID_PARAM( PARM_PM_ENABLED <= WVLAN_PM_STATE_STANDARD );
+ VALID_PARAM( !PARM_CREATE_IBSS || strchr( "NnYy", PARM_CREATE_IBSS[0] ) != NULL );
+ VALID_PARAM( !PARM_RX_MULTICAST || strchr( "NnYy", PARM_RX_MULTICAST[0] ) != NULL );
+- VALID_PARAM(( PARM_MAX_SLEEP <= PARM_MAX_MAX_PM_SLEEP ));
+ VALID_PARAM(( PARM_AUTHENTICATION <= PARM_MAX_AUTHENTICATION ));
+ VALID_PARAM(( PARM_OWN_ATIM_WINDOW <= PARM_MAX_OWN_ATIM_WINDOW ));
+ VALID_PARAM(( PARM_PM_HOLDOVER_DURATION <= PARM_MAX_PM_HOLDOVER_DURATION ));
+@@ -1513,6 +1513,7 @@
+ WL_WDS_NETDEV_REGISTER( lp );
+
+
++#ifdef USE_OLD_PARMS
+ /* Reset the DownloadFirmware variable in the private struct. If the
+ config file is not used, this will not matter; if it is used, it
+ will be reparsed in wl_open(). This is done because logic in wl_open
+@@ -1520,6 +1521,7 @@
+ the file here; however, this parsing is needed to register WDS ports
+ in AP mode, if they are configured */
+ lp->DownloadFirmware = download_firmware;
++#endif
+
+
+ #ifdef USE_RTS
+@@ -1539,10 +1541,12 @@
+ DBG_TRACE( DbgInfo, "%s: Wireless, io_addr %#03lx, irq %d, ""mac_address ",
+ dev->name, dev->base_addr, dev->irq );
+
++#if 0
+ for( i = 0; i < ETH_ALEN; i++ )
+ {
+ printk( "%02X%c", dev->dev_addr[i], (( i < ( ETH_ALEN-1 )) ? ':' : '\n' ));
+ }
++#endif
+
+
+ DBG_LEAVE( DbgInfo );
+@@ -4078,6 +4082,7 @@
+
+ break;
+
++#if DBG
+ case CFG_LINK_STAT:
+ DBG_TRACE( DbgInfo, "CFG_LINK_STAT\n" );
+
+@@ -4254,6 +4259,7 @@
+ default:
+ DBG_TRACE( DbgInfo, "CFG_TALLIES\n" );
+ break;
++#endif
+ }
+
+
+--- wlags/hcf.c~fixes
++++ wlags/hcf.c
+@@ -181,11 +181,14 @@
+
+ COMP_ROLE_SUPL,
+ COMP_ID_DUI,
+- { DUI_COMPAT_VAR,
++ {
++ {
++ DUI_COMPAT_VAR,
+ DUI_COMPAT_BOT,
+ DUI_COMPAT_TOP
++ }
+ }
+-} ;
++};
+
+ struct CFG_RANGE3_STRCT BASED cfg_drv_act_ranges_pri = {
+ sizeof(cfg_drv_act_ranges_pri)/sizeof(hcf_16) - 1, //length of RID
+@@ -3603,7 +3606,7 @@
+
+ if ( (ifbp->IFB_CardStat & (CARD_STAT_INCOMP_PRI|CARD_STAT_INCOMP_FW) ) == 0 && /* 20*/
+ ( (CFG_RID_CFG_MIN <= ltvp->typ && ltvp->typ <= CFG_RID_CFG_MAX ) ||
+- (0xFFE0 <= ltvp->typ && ltvp->typ <= 0xFFFF ) )) {
++ (0xFFE0 <= ltvp->typ) )) {
+
+ #if HCF_ASSERT
+ if ( ltvp->typ != CFG_DEFAULT_KEYS && ltvp->typ != CFG_ADD_TKIP_DEFAULT_KEY && \
+--- wlags/wl_enc.c~fixes
++++ wlags/wl_enc.c
+@@ -78,6 +78,7 @@
+ /*******************************************************************************
+ * include files
+ ******************************************************************************/
++#include <asm/uaccess.h>
+ #include "wl_version.h"
+
+ #include "debug.h"
diff --git a/recipes/wlags-modules/files/includes.patch b/recipes/wlags-modules/files/includes.patch
new file mode 100644
index 0000000000..16a5645531
--- /dev/null
+++ b/recipes/wlags-modules/files/includes.patch
@@ -0,0 +1,450 @@
+I keep all files in a flat directory. This patch changes the #include lines
+accordingly.
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- wlags/wl_main.c~includes
++++ wlags/wl_main.c
+@@ -79,7 +79,7 @@
+ /*******************************************************************************
+ * include files
+ ******************************************************************************/
+-#include <wireless/wl_version.h>
++#include "wl_version.h"
+
+ #include <linux/module.h>
+ #include <linux/types.h>
+@@ -104,29 +104,29 @@
+ #include <linux/if_arp.h>
+ #include <linux/ioport.h>
+
+-#include <hcf/debug.h>
++#include "debug.h"
+
+-#include <hcf.h>
+-#include <dhf.h>
+-#include <hcfdef.h>
++#include "hcf.h"
++#include "dhf.h"
++#include "hcfdef.h"
+
+-#include <wireless/wl_if.h>
+-#include <wireless/wl_internal.h>
+-#include <wireless/wl_util.h>
+-#include <wireless/wl_main.h>
+-#include <wireless/wl_netdev.h>
+-#include <wireless/wl_wext.h>
++#include "wl_if.h"
++#include "wl_internal.h"
++#include "wl_util.h"
++#include "wl_main.h"
++#include "wl_netdev.h"
++#include "wl_wext.h"
+
+ #ifdef USE_PROFILE
+-#include <wireless/wl_profile.h>
++#include "wl_profile.h"
+ #endif /* USE_PROFILE */
+
+ #ifdef BUS_PCMCIA
+-#include <wireless/wl_cs.h>
++#include "wl_cs.h"
+ #endif /* BUS_PCMCIA */
+
+ #ifdef BUS_PCI
+-#include <wireless/wl_pci.h>
++#include "wl_pci.h"
+ #endif /* BUS_PCI */
+
+
+--- wlags/wl_cs.c~includes
++++ wlags/wl_cs.c
+@@ -79,7 +79,7 @@
+ /*******************************************************************************
+ * include files
+ ******************************************************************************/
+-#include <wireless/wl_version.h>
++#include "wl_version.h"
+
+ #include <linux/kernel.h>
+ #include <linux/sched.h>
+@@ -108,18 +108,18 @@
+ #include <pcmcia/cisreg.h>
+ #include <pcmcia/ciscode.h>
+ #include <pcmcia/ds.h>
+-#include <hcf/debug.h>
++#include "debug.h"
+
+-#include <hcf.h>
+-#include <dhf.h>
+-#include <hcfdef.h>
++#include "hcf.h"
++#include "dhf.h"
++#include "hcfdef.h"
+
+-#include <wireless/wl_if.h>
+-#include <wireless/wl_internal.h>
+-#include <wireless/wl_util.h>
+-#include <wireless/wl_main.h>
+-#include <wireless/wl_netdev.h>
+-#include <wireless/wl_cs.h>
++#include "wl_if.h"
++#include "wl_internal.h"
++#include "wl_util.h"
++#include "wl_main.h"
++#include "wl_netdev.h"
++#include "wl_cs.h"
+
+
+
+--- wlags/wl_enc.c~includes
++++ wlags/wl_enc.c
+@@ -78,12 +78,12 @@
+ /*******************************************************************************
+ * include files
+ ******************************************************************************/
+-#include <wireless/wl_version.h>
++#include "wl_version.h"
+
+-#include <hcf/debug.h>
+-#include <hcf.h>
++#include "debug.h"
++#include "hcf.h"
+
+-#include <wireless/wl_enc.h>
++#include "wl_enc.h"
+
+
+
+--- wlags/wl_netdev.c~includes
++++ wlags/wl_netdev.c
+@@ -79,7 +79,7 @@
+ /*******************************************************************************
+ * include files
+ ******************************************************************************/
+-#include <wireless/wl_version.h>
++#include "wl_version.h"
+
+ #include <linux/module.h>
+ #include <linux/types.h>
+@@ -104,30 +104,30 @@
+ #include <linux/if_arp.h>
+ #include <linux/ioport.h>
+
+-#include <hcf/debug.h>
++#include "debug.h"
+
+-#include <hcf.h>
+-#include <dhf.h>
+-#include <hcfdef.h>
++#include "hcf.h"
++#include "dhf.h"
++#include "hcfdef.h"
+
+-#include <wireless/wl_if.h>
+-#include <wireless/wl_internal.h>
+-#include <wireless/wl_util.h>
+-#include <wireless/wl_priv.h>
+-#include <wireless/wl_main.h>
+-#include <wireless/wl_netdev.h>
+-#include <wireless/wl_wext.h>
++#include "wl_if.h"
++#include "wl_internal.h"
++#include "wl_util.h"
++#include "wl_priv.h"
++#include "wl_main.h"
++#include "wl_netdev.h"
++#include "wl_wext.h"
+
+ #ifdef USE_PROFILE
+-#include <wireless/wl_profile.h>
++#include "wl_profile.h"
+ #endif /* USE_PROFILE */
+
+ #ifdef BUS_PCMCIA
+-#include <wireless/wl_cs.h>
++#include "wl_cs.h"
+ #endif /* BUS_PCMCIA */
+
+ #ifdef BUS_PCI
+-#include <wireless/wl_pci.h>
++#include "wl_pci.h"
+ #endif /* BUS_PCI */
+
+
+--- wlags/wl_priv.c~includes
++++ wlags/wl_priv.c
+@@ -78,24 +78,24 @@
+ /*******************************************************************************
+ * include files
+ ******************************************************************************/
+-#include <wireless/wl_version.h>
++#include "wl_version.h"
+
+ #include <linux/if_arp.h>
+ #include <linux/ioport.h>
+ #include <linux/delay.h>
+ #include <asm/uaccess.h>
+
+-#include <hcf/debug.h>
+-#include <hcf.h>
+-#include <hcfdef.h>
++#include "debug.h"
++#include "hcf.h"
++#include "hcfdef.h"
+
+-#include <wireless/wl_if.h>
+-#include <wireless/wl_internal.h>
+-#include <wireless/wl_enc.h>
+-#include <wireless/wl_main.h>
+-#include <wireless/wl_priv.h>
+-#include <wireless/wl_util.h>
+-#include <wireless/wl_netdev.h>
++#include "wl_if.h"
++#include "wl_internal.h"
++#include "wl_enc.h"
++#include "wl_main.h"
++#include "wl_priv.h"
++#include "wl_util.h"
++#include "wl_netdev.h"
+
+
+
+--- wlags/wl_profile.c~includes
++++ wlags/wl_profile.c
+@@ -95,23 +95,23 @@
+ /*******************************************************************************
+ * include files
+ ******************************************************************************/
+-#include <wireless/wl_version.h>
++#include "wl_version.h"
+
+ #include <linux/netdevice.h>
+ #include <linux/etherdevice.h>
+ #include <linux/unistd.h>
+ #include <asm/uaccess.h>
+
+-#include <hcf/debug.h>
+-#include <hcf.h>
+-#include <hcfdef.h>
++#include "debug.h"
++#include "hcf.h"
++#include "hcfdef.h"
+
+-#include <wireless/wl_if.h>
+-#include <wireless/wl_internal.h>
+-#include <wireless/wl_util.h>
+-#include <wireless/wl_enc.h>
+-#include <wireless/wl_main.h>
+-#include <wireless/wl_profile.h>
++#include "wl_if.h"
++#include "wl_internal.h"
++#include "wl_util.h"
++#include "wl_enc.h"
++#include "wl_main.h"
++#include "wl_profile.h"
+
+
+
+--- wlags/wl_util.c~includes
++++ wlags/wl_util.c
+@@ -78,7 +78,7 @@
+ /*******************************************************************************
+ * include files
+ ******************************************************************************/
+-#include <wireless/wl_version.h>
++#include "wl_version.h"
+
+ #include <linux/kernel.h>
+ #include <linux/sched.h>
+@@ -99,13 +99,13 @@
+ #include <linux/if_arp.h>
+ #include <linux/ioport.h>
+
+-#include <hcf/debug.h>
+-#include <hcf.h>
+-#include <hcfdef.h>
++#include "debug.h"
++#include "hcf.h"
++#include "hcfdef.h"
+
+-#include <wireless/wl_if.h>
+-#include <wireless/wl_internal.h>
+-#include <wireless/wl_util.h>
++#include "wl_if.h"
++#include "wl_internal.h"
++#include "wl_util.h"
+
+
+
+--- wlags/wl_wext.c~includes
++++ wlags/wl_wext.c
+@@ -74,22 +74,22 @@
+ /*******************************************************************************
+ * include files
+ ******************************************************************************/
+-#include <wireless/wl_version.h>
++#include "wl_version.h"
+
+ #include <linux/if_arp.h>
+ #include <linux/ioport.h>
+ #include <linux/delay.h>
+ #include <asm/uaccess.h>
+
+-#include <hcf/debug.h>
+-#include <hcf.h>
+-#include <hcfdef.h>
++#include "debug.h"
++#include "hcf.h"
++#include "hcfdef.h"
+
+-#include <wireless/wl_if.h>
+-#include <wireless/wl_internal.h>
+-#include <wireless/wl_util.h>
+-#include <wireless/wl_main.h>
+-#include <wireless/wl_wext.h>
++#include "wl_if.h"
++#include "wl_internal.h"
++#include "wl_util.h"
++#include "wl_main.h"
++#include "wl_wext.h"
+
+
+
+@@ -212,7 +212,7 @@
+ break;
+
+
+- case SIOCSIWSPY: // Set the spy list
++ case SIOCSIWSPY: // Set the spy list
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCGIWNAME\n" );
+ ret = wireless_set_spy_addrs( wrq, lp );
+@@ -220,7 +220,7 @@
+ break;
+
+
+- case SIOCGIWSPY: // Get the spy list
++ case SIOCGIWSPY: // Get the spy list
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCSIWSPY\n" );
+ ret = wireless_get_spy_addrs( wrq, lp );
+@@ -239,6 +239,7 @@
+
+
+ #if (HCF_TYPE) & HCF_TYPE_STA
++
+ case SIOCGIWAP: // Get the MAC Address of current AP
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCGIWAP\n" );
+@@ -248,7 +249,6 @@
+
+ #endif //HCF_STA
+
+-
+ case SIOCGIWAPLIST:
+
+ /* NOTE: SIOCGIWAPLIST has been deprecated by SIOCSIWSCAN/SIOCGIWSCAN.
+@@ -267,7 +267,7 @@
+ break;
+
+
+- case SIOCSIWSENS: // Set the desired AP density
++ case SIOCSIWSENS: // Set the desired AP density
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCSIWSENS\n" );
+ ret = wireless_set_sensitivity( wrq, lp );
+@@ -275,7 +275,7 @@
+ break;
+
+
+- case SIOCGIWSENS: // Get the current AP density
++ case SIOCGIWSENS: // Get the current AP density
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCGIWSENS\n" );
+ wireless_get_sensitivity( wrq, lp );
+@@ -287,7 +287,7 @@
+
+ #if WIRELESS_EXT > 5
+
+- case SIOCSIWESSID: // Set the desired network name (ESSID)
++ case SIOCSIWESSID: // Set the desired network name (ESSID)
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCSIWESSID\n" );
+ ret = wireless_set_essid( wrq, lp );
+@@ -295,7 +295,7 @@
+ break;
+
+
+- case SIOCGIWESSID: // Get the current network name (ESSID)
++ case SIOCGIWESSID: // Get the current network name (ESSID)
+
+ DBG_TRACE(DbgInfo, "IOCTL: SIOCGIWESSID\n");
+ ret = wireless_get_essid( wrq, lp );
+@@ -307,7 +307,7 @@
+
+ #if WIRELESS_EXT > 7
+
+- case SIOCSIWNICKN: // Set desired station nickname
++ case SIOCSIWNICKN: // Set desired station nickname
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCSIWNICKN\n" );
+ ret = wireless_set_nickname( wrq, lp );
+@@ -315,7 +315,7 @@
+ break;
+
+
+- case SIOCGIWNICKN: // Get current station nickname
++ case SIOCGIWNICKN: // Get current station nickname
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCGIWNICKN\n" );
+ ret = wireless_get_nickname( wrq, lp );
+@@ -323,7 +323,7 @@
+ break;
+
+
+- case SIOCSIWRTS: // Set the desired RTS threshold
++ case SIOCSIWRTS: // Set the desired RTS threshold
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCSIWRTS\n" );
+ ret = wireless_set_rts_threshold( wrq, lp );
+@@ -331,7 +331,7 @@
+ break;
+
+
+- case SIOCGIWRTS: // Get the current RTS threshold
++ case SIOCGIWRTS: // Get the current RTS threshold
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCGIWRTS\n" );
+ wireless_get_rts_threshold( wrq, lp );
+@@ -382,7 +382,7 @@
+ break;
+
+
+- case SIOCGIWENCODE: // Get the encryption keys
++ case SIOCGIWENCODE: // Get the encryption keys
+
+ DBG_TRACE( DbgInfo, "IOCTL: SIOCGIWENCODE\n" );
+ ret = wireless_get_encode( wrq, lp );
+@@ -503,7 +503,7 @@
+
+ #endif // WIRELESS_EXT > 11
+
+- case SIOCGIWPRIV: // Get private ioctl interface info
++ case SIOCGIWPRIV: // Get private ioctl interface info
+
+ DBG_TRACE(DbgInfo, "IOCTL: SIOCGIWPRIV NOT SUPPORTED!!!\n");
+ ret = -EOPNOTSUPP;
+--- wlags/hcfcfg.h~includes
++++ wlags/hcfcfg.h
+@@ -764,7 +764,7 @@
+
+ #include <asm/io.h>
+ #include <linux/module.h>
+-#include <wireless/wl_version.h>
++#include "wl_version.h"
+
+ /* The following macro ensures that no symbols are exported, minimizing the chance of a symbol
+ collision in the kernel */
diff --git a/recipes/wlags-modules/files/kernel-pcmcia.patch b/recipes/wlags-modules/files/kernel-pcmcia.patch
new file mode 100644
index 0000000000..2a27344461
--- /dev/null
+++ b/recipes/wlags-modules/files/kernel-pcmcia.patch
@@ -0,0 +1,90 @@
+Compiling against PCMCIA-CS is obsolete since more than one year.
+Especially in Linux Kernel trees for embedded devices, the
+kernel-based PCMCIA are working, whereas pcmcia-cs has usual problems.
+
+This patch creates the necessary infrastructure to run the wlags
+driver with kernel-pcmcia.
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- wlags/wl_version.h~kernel-pcmcia
++++ wlags/wl_version.h
+@@ -161,23 +161,29 @@
+ the status of wireless extension support. Otherwise, including wireless
+ extension support will be switched on/off by the USE_WEXT condition */
+ #if defined BUS_PCMCIA
+-#include <pcmcia/config.h>
+-#include <pcmcia/k_compat.h>
++//#include <pcmcia/config.h>
++//#include <pcmcia/k_compat.h>
+ #elif defined BUS_PCI
+ #if USE_WEXT
+ #define HAS_WIRELESS_EXTENSIONS
+ #endif // USE_WEXT
++#endif // BUS_XXX
+
+
+ /* These are #defines you get "for free" with PCMCIA that I needed to add for
+ PCI to build */
++#ifndef NEW_MULTICAST
+ #define NEW_MULTICAST
++#endif
++#ifndef ALLOC_SKB
+ #define ALLOC_SKB(len) dev_alloc_skb(len+2)
++#endif
++#ifndef GET_PACKET
+ #define GET_PACKET(dev, skb, count)\
+ skb_reserve((skb), 2); \
+ BLOCK_INPUT(skb_put((skb), (count)), (count)); \
+ (skb)->protocol = eth_type_trans((skb), (dev))
+-#endif // BUS_XXX
++#endif
+
+
+
+--- wlags/wl_internal.h~kernel-pcmcia
++++ wlags/wl_internal.h
+@@ -85,8 +85,8 @@
+ * include files
+ ******************************************************************************/
+ #ifdef BUS_PCMCIA
+-#include <pcmcia/config.h>
+-#include <pcmcia/k_compat.h>
++//#include <pcmcia/config.h>
++//#include <pcmcia/k_compat.h>
+ #include <pcmcia/version.h>
+ #include <pcmcia/cs_types.h>
+ #include <pcmcia/cs.h>
+--- wlags/wl_netdev.c~kernel-pcmcia
++++ wlags/wl_netdev.c
+@@ -1447,7 +1447,7 @@
+ dev->set_multicast_list = &wl_multicast;
+
+ #ifdef BUS_PCMCIA
+- init_dev_name( dev, ( (struct wl_private *)dev->priv)->node );
++//HS init_dev_name( dev, ( (struct wl_private *)dev->priv)->node );
+ #endif // BUS_PCMCIA
+
+ dev->init = &wl_init;
+--- wlags/wl_cs.c~kernel-pcmcia
++++ wlags/wl_cs.c
+@@ -497,7 +497,7 @@
+ /* Perform device-specific removal */
+ wl_remove( dev );
+
+- link->release.expires = RUN_AT( HZ/20 );
++ link->release.expires = jiffies + ( HZ/20 );
+ add_timer( &( link->release ));
+ }
+
+@@ -786,7 +786,7 @@
+
+ if( link->state & DEV_STALE_CONFIG )
+ {
+- link->release.expires = RUN_AT( HZ/20 );
++ link->release.expires = jiffies + ( HZ/20 );
+ link->state |= DEV_RELEASE_PENDING;
+
+ add_timer( &link->release );
diff --git a/recipes/wlags-modules/files/wlags_h1.conf b/recipes/wlags-modules/files/wlags_h1.conf
new file mode 100644
index 0000000000..e5669e7f01
--- /dev/null
+++ b/recipes/wlags-modules/files/wlags_h1.conf
@@ -0,0 +1,6 @@
+device "wlags49_h1_cs"
+ class "network" module "wlags49_h1_cs"
+
+card "Agere Systems Hermes 1 based Wireless Adapter"
+ manfid 0x0156, 0x0002
+ bind "wlags49_h1_cs"
diff --git a/recipes/wlags-modules/files/wlags_h2.conf b/recipes/wlags-modules/files/wlags_h2.conf
new file mode 100644
index 0000000000..24e461ceaf
--- /dev/null
+++ b/recipes/wlags-modules/files/wlags_h2.conf
@@ -0,0 +1,6 @@
+device "wlags49_h2_cs"
+ class "network" module "wlags49_h2_cs"
+
+card "Agere Systems Hermes 2 based Wireless Adapter"
+ manfid 0x0156, 0x0003
+ bind "wlags49_h2_cs"
diff --git a/recipes/wlags-modules/kernel-module-wlags49-h1-cs_718.bb b/recipes/wlags-modules/kernel-module-wlags49-h1-cs_718.bb
new file mode 100644
index 0000000000..8a39503073
--- /dev/null
+++ b/recipes/wlags-modules/kernel-module-wlags49-h1-cs_718.bb
@@ -0,0 +1,7 @@
+COMPILE_HERMES = "1"
+DESCRIPTION = "A driver from Agera (a card manufacturer) for wireless LAN cards based on Hermes ${COMPILE_HERMES} cards."
+PR = "r1"
+
+inherit module
+
+require wlags-modules_${PV}.inc
diff --git a/recipes/wlags-modules/kernel-module-wlags49-h2-cs_718.bb b/recipes/wlags-modules/kernel-module-wlags49-h2-cs_718.bb
new file mode 100644
index 0000000000..0906d05eb0
--- /dev/null
+++ b/recipes/wlags-modules/kernel-module-wlags49-h2-cs_718.bb
@@ -0,0 +1,7 @@
+COMPILE_HERMES = "2"
+DESCRIPTION = "A driver from Agera (a card manufacturer) for wireless LAN cards based on Hermes ${COMPILE_HERMES} cards."
+PR = "r1"
+
+inherit module
+
+require wlags-modules_${PV}.inc
diff --git a/recipes/wlags-modules/wlags-modules_718.inc b/recipes/wlags-modules/wlags-modules_718.inc
new file mode 100644
index 0000000000..c3f49872d6
--- /dev/null
+++ b/recipes/wlags-modules/wlags-modules_718.inc
@@ -0,0 +1,67 @@
+DESCRIPTION = "A driver from Agera (a card manufacturer) for wireless LAN cards based on Hermes cards."
+HOMEPAGE = "http://www.agere.com/mobility/wireless_lan_drivers.html"
+SECTION = "kernel/modules"
+PRIORITY = "optional"
+DEPENDS = "virtual/kernel"
+LICENSE = "BSD"
+PR = "r1"
+
+TARFILE = "wl_lkm_${PV}_release.tar.gz"
+
+
+#
+# The original wlags tar file is a bit messy:
+# * it doesn't contain it's own subdirectory
+# * the files are formatted for Windows/DOS (with CR/LF)
+# * they assume that the pcmcia-cs source code is there
+# * they don't use the kernel makefile approach
+#
+# Because of this, I create the IPK in a little unusual way:
+# * I "flatten" the structure to be able to use the kernel makefile concept
+# * the patches I have are for the flattened structure
+# * then I do the usual compile/install/package dance
+#
+
+SRC_URI = "ftp://ftp.elmeg.de/artem/ClientCards/11b/linux/${TARFILE} \
+ file://Makefile \
+ file://includes.patch \
+ file://kernel-pcmcia.patch \
+ file://bugs.patch \
+ file://fixes.patch \
+ file://wlags_h${COMPILE_HERMES}.conf"
+S = "${WORKDIR}/${PN}"
+
+do_configure() {
+ cp ../{hcf,firmware,include/hcf,include/wireless}/*.h .
+ cp ../{hcf,firmware,wireless}/*.c .
+ cp ../etc/wlags49.conf .
+ perl -pi -e 'r:\r::g' *.h *.c
+
+ patch -p1 <${WORKDIR}/includes.patch
+ patch -p1 <${WORKDIR}/kernel-pcmcia.patch
+ patch -p1 <${WORKDIR}/bugs.patch
+ patch -p1 <${WORKDIR}/fixes.patch
+ cp ${WORKDIR}/Makefile .
+}
+
+
+do_compile() {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ make -C ${STAGING_KERNEL_DIR} \
+ modules \
+ SUBDIRS="${S}" \
+ CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
+ COMPILE_HERMES=${COMPILE_HERMES}
+}
+
+
+do_install() {
+ install -d ${D}${sysconfdir}/pcmcia
+ install -m 0644 ${WORKDIR}/wlags_h${COMPILE_HERMES}.conf ${D}${sysconfdir}/pcmcia/
+
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/net/wireless
+ ls
+ install -m 0644 wlags49_h${COMPILE_HERMES}_cs${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/net/wireless
+}
+
+FILES = "/lib/modules/${KERNEL_VERSION}/net/wireless/*${KERNEL_OBJECT_SUFFIX} /${sysconfdir}"