summaryrefslogtreecommitdiffstats
path: root/package/madwifi
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2006-10-13 20:51:49 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2006-10-13 20:51:49 +0000
commitf52d66ff00b24111f87c274d3d7085ef2e1d27b1 (patch)
treed993cf48b4d89166701fe2f33976389d7634235d /package/madwifi
parent725611a466f2edf12f809d22339b22223af4afe7 (diff)
parent0c0df9eb082d5ff83d0f22f6e00bf580729fb49d (diff)
finally move buildroot-ng to trunk
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5059 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/madwifi')
-rw-r--r--package/madwifi/Makefile133
-rw-r--r--package/madwifi/files/madwifi.init4
-rw-r--r--package/madwifi/files/madwifi.modules10
-rw-r--r--package/madwifi/patches/100-kernel_cflags.patch42
-rw-r--r--package/madwifi/patches/101-no_werror.patch11
-rw-r--r--package/madwifi/patches/102-multicall_binary.patch369
-rw-r--r--package/madwifi/patches/103-disable_rfkill.patch12
-rw-r--r--package/madwifi/patches/104-apmode_by_default.patch12
8 files changed, 593 insertions, 0 deletions
diff --git a/package/madwifi/Makefile b/package/madwifi/Makefile
new file mode 100644
index 000000000..a4180063f
--- /dev/null
+++ b/package/madwifi/Makefile
@@ -0,0 +1,133 @@
+#
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+# $Id$
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=madwifi
+PKG_VERSION:=0.9.2
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=@SF/$(PKG_NAME)
+PKG_MD5SUM:=a75baacbe07085ddc5cb28e1fb43edbb
+PKG_CAT:=bzcat
+
+PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/kmod-madwifi
+ SECTION:=kernel
+ CATEGORY:=Kernel drivers
+ DEFAULT:=y if LINUX_2_6_BRCM || LINUX_2_6_ARUBA || LINUX_2_4_AR531X || LINUX_2_6_XSCALE, m if ALL
+ TITLE:=Driver for Atheros wireless chipsets
+ DESCRIPTION:=\
+ This package contains a driver for Atheros 802.11a/b/g chipsets.
+ URL:=http://madwifi.org/
+ VERSION:=$(LINUX_VERSION)+$(PKG_VERSION)-$(BOARD)-$(PKG_RELEASE)
+endef
+
+RATE_CONTROL:=sample
+
+ifeq ($(ARCH),mips)
+ HAL_TARGET:=mips-be-elf
+endif
+ifeq ($(ARCH),mipsel)
+ HAL_TARGET:=mips-le-elf
+endif
+ifeq ($(ARCH),i386)
+ HAL_TARGET:=i386-elf
+endif
+ifeq ($(ARCH),armeb)
+ HAL_TARGET:=xscale-be-elf
+endif
+ifeq ($(ARCH),powerpc)
+ HAL_TARGET:=powerpc-be-elf
+endif
+
+BUS:=PCI
+ifneq ($(CONFIG_LINUX_2_4_AR531X),)
+ BUS:=AHB
+endif
+ifneq ($(CONFIG_LINUX_2_6_ARUBA),)
+ BUS:=PCI AHB # no suitable HAL for AHB yet.
+endif
+
+BUS_MODULES:=
+ifeq ($(findstring AHB,$(BUS)),AHB)
+ BUS_MODULES+=$(PKG_BUILD_DIR)/ath/ath_ahb.$(LINUX_KMOD_SUFFIX)
+endif
+ifeq ($(findstring PCI,$(BUS)),PCI)
+ BUS_MODULES+=$(PKG_BUILD_DIR)/ath/ath_pci.$(LINUX_KMOD_SUFFIX)
+endif
+
+MADWIFI_MAKEOPTS= -C $(PKG_BUILD_DIR) \
+ PATH="$(TARGET_PATH)" \
+ ARCH="$(LINUX_KARCH)" \
+ CROSS_COMPILE="$(TARGET_CROSS)" \
+ TARGET="$(HAL_TARGET)" \
+ TOOLPREFIX="$(KERNEL_CROSS)" \
+ TOOLPATH="$(KERNEL_CROSS)" \
+ KERNELPATH="$(LINUX_DIR)" \
+ LDOPTS=" " \
+ ATH_RATE="ath_rate/$(RATE_CONTROL)" \
+ DOMULTI=1
+
+ifeq ($(findstring AHB,$(BUS)),AHB)
+ define Build/Compile/ahb
+ $(MAKE) $(MADWIFI_MAKEOPTS) BUS="AHB" all
+ endef
+endif
+
+ifeq ($(findstring PCI,$(BUS)),PCI)
+ define Build/Compile/pci
+ $(MAKE) $(MADWIFI_MAKEOPTS) BUS="PCI" all
+ endef
+endif
+
+define Build/Compile
+ $(call Build/Compile/ahb)
+ $(call Build/Compile/pci)
+endef
+
+define Build/InstallDev
+ mkdir -p $(STAGING_DIR)/usr/include/madwifi
+ $(CP) $(PKG_BUILD_DIR)/include $(STAGING_DIR)/usr/include/madwifi/
+ mkdir -p $(STAGING_DIR)/usr/include/madwifi/net80211
+ $(CP) $(PKG_BUILD_DIR)/net80211/*.h $(STAGING_DIR)/usr/include/madwifi/net80211/
+endef
+
+define Build/UninstallDev
+ rm -rf $(STAGING_DIR)/usr/include/madwifi
+endef
+
+define Package/kmod-madwifi/install
+ mkdir -p $(1)/etc/modules.d
+ mkdir -p $(1)/etc/init.d
+ mkdir -p $(1)/lib/modules/$(LINUX_VERSION)
+ mkdir -p $(1)/usr/sbin
+ install -m0644 ./files/madwifi.modules $(1)/etc/modules.d/20-madwifi
+ echo ath_rate_$(RATE_CONTROL) >> $(1)/etc/modules.d/20-madwifi
+ifeq ($(findstring AHB,$(BUS)),AHB)
+ echo ath_ahb >> $(1)/etc/modules.d/20-madwifi
+endif
+ifeq ($(findstring PCI,$(BUS)),PCI)
+ echo ath_pci >> $(1)/etc/modules.d/20-madwifi
+endif
+ install -m0755 ./files/madwifi.init $(1)/etc/init.d/S20madwifi
+ $(CP) \
+ $(PKG_BUILD_DIR)/ath/ath_hal.$(LINUX_KMOD_SUFFIX) \
+ $(BUS_MODULES) \
+ $(PKG_BUILD_DIR)/ath_rate/$(RATE_CONTROL)/ath_rate_$(RATE_CONTROL).$(LINUX_KMOD_SUFFIX) \
+ $(PKG_BUILD_DIR)/net80211/wlan*.$(LINUX_KMOD_SUFFIX) \
+ $(1)/lib/modules/$(LINUX_VERSION)/
+ $(CP) $(PKG_BUILD_DIR)/tools/{madwifi_multi,80211debug,80211stats,athchans,athctrl,athdebug,athkey,athstats,wlanconfig} $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,kmod-madwifi))
diff --git a/package/madwifi/files/madwifi.init b/package/madwifi/files/madwifi.init
new file mode 100644
index 000000000..73eb11017
--- /dev/null
+++ b/package/madwifi/files/madwifi.init
@@ -0,0 +1,4 @@
+#!/bin/sh /etc/rc.common
+start() {
+ iwpriv ath0 mode 3
+}
diff --git a/package/madwifi/files/madwifi.modules b/package/madwifi/files/madwifi.modules
new file mode 100644
index 000000000..515c1e9aa
--- /dev/null
+++ b/package/madwifi/files/madwifi.modules
@@ -0,0 +1,10 @@
+wlan
+wlan_scan_ap
+wlan_scan_sta
+ath_hal
+ath_rate_sample
+wlan_acl
+wlan_ccmp
+wlan_tkip
+wlan_wep
+wlan_xauth
diff --git a/package/madwifi/patches/100-kernel_cflags.patch b/package/madwifi/patches/100-kernel_cflags.patch
new file mode 100644
index 000000000..39ac1437e
--- /dev/null
+++ b/package/madwifi/patches/100-kernel_cflags.patch
@@ -0,0 +1,42 @@
+diff -ur madwifi.old/hal/public/mips-be-elf.inc madwifi.dev/hal/public/mips-be-elf.inc
+--- madwifi.old/hal/public/mips-be-elf.inc 2006-05-27 04:48:16.000000000 +0200
++++ madwifi.dev/hal/public/mips-be-elf.inc 2006-08-29 18:17:44.000000000 +0200
+@@ -71,5 +71,5 @@
+
+ LDOPTS= -EB
+ COPTS+= -DAH_BYTE_ORDER=AH_BIG_ENDIAN
+-COPTS+= -G 0 -EB -mno-abicalls -fno-pic -mips2 -Wa,--trap \
++COPTS+= -G 0 -mno-abicalls -fno-pic -mips32 -Wa,--trap \
+ -fno-strict-aliasing -fno-common -fomit-frame-pointer -mlong-calls
+diff -ur madwifi.old/hal/public/mips-le-elf.inc madwifi.dev/hal/public/mips-le-elf.inc
+--- madwifi.old/hal/public/mips-le-elf.inc 2006-05-27 04:48:16.000000000 +0200
++++ madwifi.dev/hal/public/mips-le-elf.inc 2006-08-29 18:17:57.000000000 +0200
+@@ -68,5 +68,5 @@
+
+ LDOPTS= -EL
+ COPTS+= -DAH_BYTE_ORDER=AH_LITTLE_ENDIAN
+-COPTS+= -G 0 -EL -mno-abicalls -fno-pic -mips2 -Wa,--trap \
++COPTS+= -G 0 -mno-abicalls -fno-pic -mips32 -Wa,--trap \
+ -fno-strict-aliasing -fno-common -fomit-frame-pointer -mlong-calls
+diff -ur madwifi.old/hal/public/xscale-be-elf.inc madwifi.dev/hal/public/xscale-be-elf.inc
+--- madwifi.old/hal/public/xscale-be-elf.inc 2006-05-27 04:48:16.000000000 +0200
++++ madwifi.dev/hal/public/xscale-be-elf.inc 2006-08-29 18:01:39.000000000 +0200
+@@ -77,5 +77,5 @@
+
+ LDOPTS= -EB
+ COPTS+= -DAH_BYTE_ORDER=AH_BIG_ENDIAN
+-COPTS+= -march=armv4 -mbig-endian -fno-strict-aliasing -fno-common -mapcs-32 \
++COPTS+= -march=armv5te -mtune=xscale -mbig-endian -fno-strict-aliasing -fno-common \
+ -mtune=xscale -mshort-load-bytes -msoft-float -mfp=2
+diff -ur madwifi.old/Makefile madwifi.dev/Makefile
+--- madwifi.old/Makefile 2006-07-14 07:15:56.000000000 +0200
++++ madwifi.dev/Makefile 2006-08-29 18:01:39.000000000 +0200
+@@ -54,7 +54,7 @@
+
+ all: modules tools
+
+-modules: configcheck svnversion.h
++modules: svnversion.h
+ ifdef LINUX24
+ for i in $(DIRS_MODULES); do \
+ $(MAKE) -C $$i || exit 1; \
diff --git a/package/madwifi/patches/101-no_werror.patch b/package/madwifi/patches/101-no_werror.patch
new file mode 100644
index 000000000..d71021eb0
--- /dev/null
+++ b/package/madwifi/patches/101-no_werror.patch
@@ -0,0 +1,11 @@
+--- madwifi.old/Makefile.inc 2006-07-14 07:15:56.000000000 +0200
++++ madwifi.dev/Makefile.inc 2006-08-30 05:20:27.000000000 +0200
+@@ -181,7 +181,7 @@
+ #
+ TOOLS= $(DEPTH)/tools
+
+-COPTS+= -Werror
++# COPTS+= -Werror
+ INCS= -include $(obj)/$(DEPTH)/include/compat.h -I$(obj)/$(DEPTH)/include
+
+ ifeq ($(strip $(BUS)),AHB)
diff --git a/package/madwifi/patches/102-multicall_binary.patch b/package/madwifi/patches/102-multicall_binary.patch
new file mode 100644
index 000000000..8fa65676d
--- /dev/null
+++ b/package/madwifi/patches/102-multicall_binary.patch
@@ -0,0 +1,369 @@
+diff -urN madwifi-0.9.2.old/tools/80211debug.c madwifi-0.9.2.dev/tools/80211debug.c
+--- madwifi-0.9.2.old/tools/80211debug.c 2006-03-10 14:23:50.000000000 +0100
++++ madwifi-0.9.2.dev/tools/80211debug.c 2006-08-29 17:49:50.000000000 +0200
+@@ -49,6 +49,10 @@
+ #include <getopt.h>
+ #include <err.h>
+
++#ifdef DOMULTI
++#include "do_multi.h"
++#endif
++
+ #define N(a) (sizeof(a)/sizeof(a[0]))
+
+ const char *progname;
+@@ -180,9 +184,19 @@
+ }
+ #endif /* __linux__ */
+
++#ifdef DOMULTI
++
++int
++a80211debug_init(int argc, char *argv[])
++{
++
++#else
++
+ int
+ main(int argc, char *argv[])
+ {
++
++#endif
+ const char *ifname = "ath0";
+ const char *cp, *tp;
+ const char *sep;
+diff -urN madwifi-0.9.2.old/tools/80211stats.c madwifi-0.9.2.dev/tools/80211stats.c
+--- madwifi-0.9.2.old/tools/80211stats.c 2006-05-27 08:21:18.000000000 +0200
++++ madwifi-0.9.2.dev/tools/80211stats.c 2006-08-29 17:49:50.000000000 +0200
+@@ -58,6 +58,10 @@
+ #include "net80211/ieee80211_crypto.h"
+ #include "net80211/ieee80211_ioctl.h"
+
++#ifdef DOMULTI
++#include "do_multi.h"
++#endif
++
+ #ifndef SIOCG80211STATS
+ #define SIOCG80211STATS (SIOCDEVPRIVATE + 2)
+ #endif
+@@ -241,9 +245,19 @@
+ #undef STAT
+ }
+
++#ifdef DOMULTI
++
++int
++a80211stats_init(int argc, char *argv[])
++{
++
++#else
++
+ int
+ main(int argc, char *argv[])
+ {
++
++#endif
+ int c, len;
+ struct ieee80211req_sta_info *si;
+ u_int8_t buf[24*1024], *cp;
+diff -urN madwifi-0.9.2.old/tools/athchans.c madwifi-0.9.2.dev/tools/athchans.c
+--- madwifi-0.9.2.old/tools/athchans.c 2006-02-01 21:07:11.000000000 +0100
++++ madwifi-0.9.2.dev/tools/athchans.c 2006-08-29 17:49:50.000000000 +0200
+@@ -57,6 +57,10 @@
+ #include "net80211/ieee80211_crypto.h"
+ #include "net80211/ieee80211_ioctl.h"
+
++#ifdef DOMULTI
++#include "do_multi.h"
++#endif
++
+ static int s = -1;
+ const char *progname;
+
+@@ -134,9 +138,20 @@
+ }
+
+ #define MAXCHAN ((int)(sizeof(struct ieee80211req_chanlist) * NBBY))
++
++#ifdef DOMULTI
++
++int
++athchans_init(int argc, char *argv[])
++{
++
++#else
++
+ int
+ main(int argc, char *argv[])
+ {
++
++#endif
+ const char *ifname = "wifi0";
+ struct ieee80211req_chanlist chanlist;
+ int c;
+diff -urN madwifi-0.9.2.old/tools/athctrl.c madwifi-0.9.2.dev/tools/athctrl.c
+--- madwifi-0.9.2.old/tools/athctrl.c 2006-02-03 13:03:03.000000000 +0100
++++ madwifi-0.9.2.dev/tools/athctrl.c 2006-08-29 17:49:50.000000000 +0200
+@@ -53,6 +53,10 @@
+
+ #include <net/if.h>
+
++#ifdef DOMULTI
++#include "do_multi.h"
++#endif
++
+ static int
+ setsysctrl(const char *dev, const char *control , u_long value)
+ {
+@@ -87,9 +91,19 @@
+ exit(1);
+ }
+
++#ifdef DOMULTI
++
++int
++athctrl_init(int argc, char *argv[])
++{
++
++#else
++
+ int
+ main(int argc, char *argv[])
+ {
++
++#endif
+ char device[IFNAMSIZ + 1];
+ int distance = -1;
+ int c;
+diff -urN madwifi-0.9.2.old/tools/athdebug.c madwifi-0.9.2.dev/tools/athdebug.c
+--- madwifi-0.9.2.old/tools/athdebug.c 2006-05-05 06:17:59.000000000 +0200
++++ madwifi-0.9.2.dev/tools/athdebug.c 2006-08-29 17:49:50.000000000 +0200
+@@ -52,6 +52,10 @@
+ #include <getopt.h>
+ #include <err.h>
+
++#ifdef DOMULTI
++#include "do_multi.h"
++#endif
++
+ #define N(a) (sizeof(a)/sizeof(a[0]))
+
+ const char *progname;
+@@ -179,9 +183,20 @@
+ }
+ #endif /* __linux__ */
+
++#ifdef DOMULTI
++
++int
++athdebug_init(int argc, char *argv[])
++{
++
++#else
++
+ int
+ main(int argc, char *argv[])
+ {
++
++#endif
++
+ #ifdef __linux__
+ const char *ifname = "wifi0";
+ #else
+diff -urN madwifi-0.9.2.old/tools/athkey.c madwifi-0.9.2.dev/tools/athkey.c
+--- madwifi-0.9.2.old/tools/athkey.c 2006-02-01 21:07:11.000000000 +0100
++++ madwifi-0.9.2.dev/tools/athkey.c 2006-08-29 17:49:50.000000000 +0200
+@@ -57,6 +57,10 @@
+ #include "net80211/ieee80211_crypto.h"
+ #include "net80211/ieee80211_ioctl.h"
+
++#ifdef DOMULTI
++#include "do_multi.h"
++#endif
++
+ static int s = -1;
+ const char *progname;
+
+@@ -207,9 +211,19 @@
+ exit(-1);
+ }
+
++#ifdef DOMULTI
++
++int
++athkey_init(int argc, char *argv[])
++{
++
++#else
++
+ int
+ main(int argc, char *argv[])
+ {
++
++#endif
+ const char *ifname = "wifi0";
+ struct ieee80211req_key setkey;
+ struct ieee80211req_del_key delkey;
+diff -urN madwifi-0.9.2.old/tools/athstats.c madwifi-0.9.2.dev/tools/athstats.c
+--- madwifi-0.9.2.old/tools/athstats.c 2006-05-05 06:20:50.000000000 +0200
++++ madwifi-0.9.2.dev/tools/athstats.c 2006-08-29 17:49:50.000000000 +0200
+@@ -64,6 +64,10 @@
+ #include "ah_desc.h"
+ #include "if_athioctl.h"
+
++#ifdef DOMULTI
++#include "do_multi.h"
++#endif
++
+ static const struct {
+ u_int phyerr;
+ const char* desc;
+@@ -227,9 +231,20 @@
+ signalled = 1;
+ }
+
++#ifdef DOMULTI
++
++int
++athstats_init(int argc, char *argv[])
++{
++
++#else
++
+ int
+ main(int argc, char *argv[])
+ {
++
++#endif
++
+ #ifdef __linux__
+ const char *ifname = "wifi0";
+ #else
+diff -urN madwifi-0.9.2.old/tools/do_multi.c madwifi-0.9.2.dev/tools/do_multi.c
+--- madwifi-0.9.2.old/tools/do_multi.c 1970-01-01 01:00:00.000000000 +0100
++++ madwifi-0.9.2.dev/tools/do_multi.c 2006-08-29 17:49:50.000000000 +0200
+@@ -0,0 +1,30 @@
++#include <string.h>
++#include "do_multi.h"
++
++int
++main(int argc, char *argv[])
++{
++ char *progname;
++ int ret = 0;
++
++ progname = basename(argv[0]);
++
++ if(strcmp(progname, "80211debug") == 0)
++ ret = a80211debug_init(argc, argv);
++ if(strcmp(progname, "80211stats") == 0)
++ ret = a80211stats_init(argc, argv);
++ if(strcmp(progname, "athchans") == 0)
++ ret = athchans_init(argc, argv);
++ if(strcmp(progname, "athctrl") == 0)
++ ret = athctrl_init(argc, argv);
++ if(strcmp(progname, "athdebug") == 0)
++ ret = athdebug_init(argc, argv);
++ if(strcmp(progname, "athkey") == 0)
++ ret = athkey_init(argc, argv);
++ if(strcmp(progname, "athstats") == 0)
++ ret = athstats_init(argc, argv);
++ if(strcmp(progname, "wlanconfig") == 0)
++ ret = wlanconfig_init(argc, argv);
++
++ return ret;
++}
+diff -urN madwifi-0.9.2.old/tools/do_multi.h madwifi-0.9.2.dev/tools/do_multi.h
+--- madwifi-0.9.2.old/tools/do_multi.h 1970-01-01 01:00:00.000000000 +0100
++++ madwifi-0.9.2.dev/tools/do_multi.h 2006-08-29 17:49:50.000000000 +0200
+@@ -0,0 +1,9 @@
++
++int a80211debug_init(int argc, char *argv[]);
++int a80211stats_init(int argc, char *argv[]);
++int athchans_init(int argc, char *argv[]);
++int athctrl_init(int argc, char *argv[]);
++int athdebug_init(int argc, char *argv[]);
++int athkey_init(int argc, char *argv[]);
++int athstats_init(int argc, char *argv[]);
++int wlanconfig_init(int argc, char *argv[]);
+diff -urN madwifi-0.9.2.old/tools/Makefile madwifi-0.9.2.dev/tools/Makefile
+--- madwifi-0.9.2.old/tools/Makefile 2006-07-14 07:15:56.000000000 +0200
++++ madwifi-0.9.2.dev/tools/Makefile 2006-08-29 17:49:50.000000000 +0200
+@@ -49,6 +49,12 @@
+
+ ALL= athstats 80211stats athkey athchans athctrl \
+ athdebug 80211debug wlanconfig
++
++ifdef DOMULTI
++OBJS= do_multi.o athstats.o 80211stats.o athkey.o athchans.o athctrl.o \
++ athdebug.o 80211debug.o wlanconfig.o
++ALL= ${OBJS} madwifi_multi
++endif
+
+ all: $(ALL)
+
+@@ -59,6 +65,30 @@
+
+ all: $(ALL)
+
++athstats.o: athstats.c
++ ${CC} -c -o athstats.o -DDOMULTI=1 ${ALL_CFLAGS} -I../ath athstats.c
++80211stats.o: 80211stats.c
++ ${CC} -c -o 80211stats.o -DDOMULTI=1 ${ALL_CFLAGS} 80211stats.c
++athkey.o: athkey.c
++ ${CC} -c -o athkey.o -DDOMULTI=1 ${ALL_CFLAGS} athkey.c
++athchans.o: athchans.c
++ ${CC} -c -o athchans.o -DDOMULTI=1 ${ALL_CFLAGS} athchans.c
++athctrl.o: athctrl.c
++ ${CC} -c -o athctrl.o -DDOMULTI=1 ${ALL_CFLAGS} athctrl.c
++athdebug.o: athdebug.c
++ ${CC} -c -o athdebug.o -DDOMULTI=1 ${ALL_CFLAGS} athdebug.c
++wlanconfig.o: wlanconfig.c
++ ${CC} -c -o wlanconfig.o -DDOMULTI=1 ${ALL_CFLAGS} wlanconfig.c
++80211debug.o: 80211debug.c
++ ${CC} -c -o 80211debug.o -DDOMULTI=1 ${ALL_CFLAGS} 80211debug.c
++do_multi.o: do_multi.c
++ ${CC} -c -o do_multi.o -DDOMULTI=1 ${ALL_CFLAGS} do_multi.c
++madwifi_multi:
++ ${CC} -o madwifi_multi ${LDFLAGS} ${OBJS}
++ for i in athstats 80211stats athkey athchans athctrl athdebug wlanconfig 80211debug; do \
++ ln -s -f madwifi_multi $$i; \
++ done
++
+ athstats: athstats.c
+ $(CC) -o athstats $(ALL_CFLAGS) -I../ath $(LDFLAGS) athstats.c
+ 80211stats: 80211stats.c
+diff -urN madwifi-0.9.2.old/tools/wlanconfig.c madwifi-0.9.2.dev/tools/wlanconfig.c
+--- madwifi-0.9.2.old/tools/wlanconfig.c 2006-05-14 09:17:29.000000000 +0200
++++ madwifi-0.9.2.dev/tools/wlanconfig.c 2006-08-29 17:49:50.000000000 +0200
+@@ -60,6 +60,10 @@
+ #include "net80211/ieee80211_crypto.h"
+ #include "net80211/ieee80211_ioctl.h"
+
++#ifdef DOMULTI
++#include "do_multi.h"
++#endif
++
+ /*
+ * These are taken from ieee80211_node.h
+ */
+@@ -96,9 +100,19 @@
+
+ int verbose = 0;
+
++#ifdef DOMULTI
++
++int
++wlanconfig_init(int argc, char *argv[])
++{
++
++#else
++
+ int
+ main(int argc, char *argv[])
+ {
++
++#endif
+ const char *ifname, *cmd;
+ unsigned char bnounit = 0;
+ char *if_base = NULL;
diff --git a/package/madwifi/patches/103-disable_rfkill.patch b/package/madwifi/patches/103-disable_rfkill.patch
new file mode 100644
index 000000000..80a45e31d
--- /dev/null
+++ b/package/madwifi/patches/103-disable_rfkill.patch
@@ -0,0 +1,12 @@
+diff -urN madwifi-0.9.2.old/ath/if_ath.c madwifi-0.9.2.dev/ath/if_ath.c
+--- madwifi-0.9.2.old/ath/if_ath.c 2006-07-08 08:47:19.000000000 +0200
++++ madwifi-0.9.2.dev/ath/if_ath.c 2006-08-29 17:49:50.000000000 +0200
+@@ -251,7 +251,7 @@
+ static int ath_outdoor = AH_FALSE; /* enable outdoor use */
+ static int ath_xchanmode = AH_TRUE; /* enable extended channels */
+ static char *autocreate = NULL;
+-static int rfkill = -1;
++static int rfkill = 0;
+ static int countrycode = -1;
+ static int outdoor = -1;
+ static int xchanmode = -1;
diff --git a/package/madwifi/patches/104-apmode_by_default.patch b/package/madwifi/patches/104-apmode_by_default.patch
new file mode 100644
index 000000000..fc5cb978b
--- /dev/null
+++ b/package/madwifi/patches/104-apmode_by_default.patch
@@ -0,0 +1,12 @@
+diff -urN madwifi-0.9.2.old/ath/if_ath.c madwifi-0.9.2.dev/ath/if_ath.c
+--- madwifi-0.9.2.old/ath/if_ath.c 2006-08-29 17:49:50.000000000 +0200
++++ madwifi-0.9.2.dev/ath/if_ath.c 2006-08-29 17:49:50.000000000 +0200
+@@ -387,7 +387,7 @@
+ struct ath_hal *ah;
+ HAL_STATUS status;
+ int error = 0, i;
+- int autocreatemode = IEEE80211_M_STA;
++ int autocreatemode = IEEE80211_M_HOSTAP;
+ u_int8_t csz;
+
+ sc->devid = devid;