X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=package%2Fmadwifi%2Fpatches%2F446-single_module.patch;fp=package%2Fmadwifi%2Fpatches%2F446-single_module.patch;h=0000000000000000000000000000000000000000;hb=fafaa38ae55cab486f2b929a131fe433ce180224;hp=b2898ca7eb0da3ceb324ae0c9d39805729730742;hpb=6f752c725a5b592dff8c17f0fe4e905de22b8112;p=openwrt%2Fopenwrt.git diff --git a/package/madwifi/patches/446-single_module.patch b/package/madwifi/patches/446-single_module.patch deleted file mode 100644 index b2898ca7eb..0000000000 --- a/package/madwifi/patches/446-single_module.patch +++ /dev/null @@ -1,778 +0,0 @@ ---- a/ath/Makefile -+++ b/ath/Makefile -@@ -41,7 +41,6 @@ - # - - obj := $(firstword $(obj) $(SUBDIRS) .) --TOP = $(obj)/.. - - ifeq ($(strip $(BUS)),AHB) - BUSNAME=ahb -@@ -57,7 +56,24 @@ COPTS += -DDFS_DOMAIN_ETSI -DDFS_DOMAIN_ - include $(TOP)/Makefile.inc - - obj-m += ath_$(BUSNAME).o --ath_$(BUSNAME)-objs := if_ath.o if_ath_radar.o if_ath_$(BUSNAME).o -+ath_objs := if_ath.o if_ath_radar.o if_ath_$(BUSNAME).o -+ath_$(BUSNAME)-objs := $(ath_objs) -+ -+ifneq ($(SINGLE_MODULE),) -+include $(TOP)/net80211/Makefile -+include $(TOP)/ath_rate/sample/Makefile -+include $(TOP)/ath_rate/minstrel/Makefile -+RC_DECLARE=$(foreach R,$(ATH_RATE),extern void ath_rate_$(R)_init(void);extern void ath_rate_$(R)_exit(void);) -+RC_INIT=$(foreach R,$(ATH_RATE),ath_rate_$(R)_init();) -+RC_EXIT=$(foreach R,$(ATH_RATE),ath_rate_$(R)_exit();) -+ -+ath_$(BUSNAME)-objs += $(patsubst %,../net80211/%,$(wlan-objs) $(foreach var,wep tkip ccmp acl xauth scan_sta scan_ap,$(wlan_$(var)-objs))) $(foreach RC,$(ATH_RATE),$(patsubst %,../ath_rate/$(RC)/%,$(ath_rate_$(RC)-objs))) -+ifdef LINUX24 -+ ath_$(BUSNAME)-linkobjs := $(ath_objs) $(wlan-objs) $(foreach var,wep tkip ccmp acl xauth scan_sta scan_ap,$(wlan_$(var)-objs)) $(foreach RC,$(ATH_RATE),$(ath_rate_$(RC)-objs)) -+endif -+ -+EXTRA_CFLAGS += -DSINGLE_MODULE -DRC_INIT="$(RC_INIT)" -DRC_EXIT="$(RC_EXIT)" -DRC_DECLARE="$(RC_DECLARE)" -+endif - - INCS += -I$(TOP) -I$(ATH_HAL) -I$(HAL) -I$(WLAN) - -@@ -72,13 +88,8 @@ install: - test -d $(DESTDIR)/$(KMODPATH) || mkdir -p $(DESTDIR)/$(KMODPATH) - install -m 0644 ath_$(BUSNAME).$(KMODSUF) $(DESTDIR)/$(KMODPATH) - --clean: -- rm -f *~ *.o *.ko *.mod.c .*.cmd -- rm -f .depend .version .*.o.flags .*.o.d -- rm -rf .tmp_versions -- - ath_$(BUSNAME).o: $(ath_$(BUSNAME)-objs) -- $(LD) $(LDOPTS) -o ath_$(BUSNAME).$(KMODSUF) -r $(ath_$(BUSNAME)-objs) -+ $(LD) $(LDOPTS) -o ath_$(BUSNAME).$(KMODSUF) -r $(if $(ath_$(BUSNAME)-linkobjs),$(ath_$(BUSNAME)-linkobjs),$(ath_$(BUSNAME)-objs)) - - if_ath_hal.h: $(HAL)/ah.h - $(TOP)/scripts/if_ath_hal_generator.pl $< $@ ---- a/net80211/ieee80211_acl.c -+++ b/net80211/ieee80211_acl.c -@@ -281,16 +281,6 @@ acl_getpolicy(struct ieee80211vap *vap) - return as->as_policy; - } - --/* -- * Module glue. -- */ -- --MODULE_AUTHOR("Errno Consulting, Sam Leffler"); --MODULE_DESCRIPTION("802.11 wireless support: MAC-based ACL policy"); --#ifdef MODULE_LICENSE --MODULE_LICENSE("Dual BSD/GPL"); --#endif -- - static const struct ieee80211_aclator mac = { - .iac_name = "mac", - .iac_attach = acl_attach, -@@ -303,6 +293,18 @@ static const struct ieee80211_aclator ma - .iac_getpolicy = acl_getpolicy, - }; - -+#include "module.h" -+/* -+ * Module glue. -+ */ -+ -+MODULE_AUTHOR("Errno Consulting, Sam Leffler"); -+MODULE_DESCRIPTION("802.11 wireless support: MAC-based ACL policy"); -+#ifdef MODULE_LICENSE -+MODULE_LICENSE("Dual BSD/GPL"); -+#endif -+ -+ - static int __init - init_ieee80211_acl(void) - { ---- a/net80211/ieee80211_crypto_ccmp.c -+++ b/net80211/ieee80211_crypto_ccmp.c -@@ -686,6 +686,8 @@ ccmp_decrypt(struct ieee80211_key *key, - } - #undef CCMP_DECRYPT - -+#include "module.h" -+ - /* - * Module glue. - */ ---- a/net80211/ieee80211_crypto_tkip.c -+++ b/net80211/ieee80211_crypto_tkip.c -@@ -1046,6 +1046,8 @@ tkip_decrypt(struct tkip_ctx *ctx, struc - return 1; - } - -+#include "module.h" -+ - /* - * Module glue. - */ ---- a/net80211/ieee80211_crypto_wep.c -+++ b/net80211/ieee80211_crypto_wep.c -@@ -497,6 +497,8 @@ wep_decrypt(struct ieee80211_key *key, s - * Module glue. - */ - -+#include "module.h" -+ - MODULE_AUTHOR("Errno Consulting, Sam Leffler"); - MODULE_DESCRIPTION("802.11 wireless support: WEP cipher"); - #ifdef MODULE_LICENSE ---- a/net80211/ieee80211_linux.c -+++ b/net80211/ieee80211_linux.c -@@ -1015,6 +1015,10 @@ static struct notifier_block ieee80211_e - static char *version = RELEASE_VERSION; - static char *dev_info = "wlan"; - -+extern void ieee80211_auth_setup(void); -+ -+#include "module.h" -+ - MODULE_AUTHOR("Errno Consulting, Sam Leffler"); - MODULE_DESCRIPTION("802.11 wireless LAN protocol support"); - #ifdef MODULE_VERSION -@@ -1024,8 +1028,6 @@ MODULE_VERSION(RELEASE_VERSION); - MODULE_LICENSE("Dual BSD/GPL"); - #endif - --extern void ieee80211_auth_setup(void); -- - static int __init - init_wlan(void) - { ---- a/net80211/ieee80211_scan_ap.c -+++ b/net80211/ieee80211_scan_ap.c -@@ -763,15 +763,6 @@ action_tasklet(IEEE80211_TQUEUE_ARG data - (*ss->ss_ops->scan_default)(vap, &as->as_selbss); - } - --/* -- * Module glue. -- */ --MODULE_AUTHOR("Errno Consulting, Sam Leffler"); --MODULE_DESCRIPTION("802.11 wireless support: default ap scanner"); --#ifdef MODULE_LICENSE --MODULE_LICENSE("Dual BSD/GPL"); --#endif -- - static const struct ieee80211_scanner ap_default = { - .scan_name = "default", - .scan_attach = ap_attach, -@@ -789,6 +780,16 @@ static const struct ieee80211_scanner ap - .scan_default = ap_default_action, - }; - -+#include "module.h" -+ -+/* -+ * Module glue. -+ */ -+MODULE_AUTHOR("Errno Consulting, Sam Leffler"); -+MODULE_DESCRIPTION("802.11 wireless support: default ap scanner"); -+#ifdef MODULE_LICENSE -+MODULE_LICENSE("Dual BSD/GPL"); -+#endif - - static int __init - init_scanner_ap(void) ---- a/net80211/ieee80211_scan_sta.c -+++ b/net80211/ieee80211_scan_sta.c -@@ -1208,6 +1208,8 @@ action_tasklet(IEEE80211_TQUEUE_ARG data - ieee80211_start_scan(vap, ss->ss_flags, ss->ss_duration, ss->ss_nssid, ss->ss_ssid); - } - -+#include "module.h" -+ - /* - * Module glue. - */ -@@ -1217,6 +1219,7 @@ MODULE_DESCRIPTION("802.11 wireless supp - MODULE_LICENSE("Dual BSD/GPL"); - #endif - -+ - static int __init - init_scanner_sta(void) - { ---- a/net80211/ieee80211_xauth.c -+++ b/net80211/ieee80211_xauth.c -@@ -65,15 +65,6 @@ - #include - - /* -- * Module glue. -- */ --MODULE_AUTHOR("Errno Consulting, Sam Leffler"); --MODULE_DESCRIPTION("802.11 wireless support: external (user mode) authenticator"); --#ifdef MODULE_LICENSE --MODULE_LICENSE("Dual BSD/GPL"); --#endif -- --/* - * One module handles everything for now. May want - * to split things up for embedded applications. - */ -@@ -85,6 +76,18 @@ static const struct ieee80211_authentica - .ia_node_leave = NULL, - }; - -+#include "module.h" -+ -+/* -+ * Module glue. -+ */ -+MODULE_AUTHOR("Errno Consulting, Sam Leffler"); -+MODULE_DESCRIPTION("802.11 wireless support: external (user mode) authenticator"); -+#ifdef MODULE_LICENSE -+MODULE_LICENSE("Dual BSD/GPL"); -+#endif -+ -+ - static int __init - init_ieee80211_xauth(void) - { ---- a/net80211/Makefile -+++ b/net80211/Makefile -@@ -40,7 +40,11 @@ - # Makefile for the 802.11 WLAN modules. - # - obj := $(firstword $(obj) $(SUBDIRS) .) --TOP = $(obj)/.. -+ -+include $(TOP)/Makefile.inc -+ -+ifeq ($(SINGLE_MODULE),) -+ - # - # There is one authenticator mechanism: an in-kernel implementation - # (wlan_xauth). -@@ -59,29 +63,8 @@ MOD_INSTALL := wlan.o wlan_wep.o wlan_tk - - obj-m += $(MOD_INSTALL) - --wlan-objs := if_media.o \ -- ieee80211_skb.o \ -- ieee80211.o ieee80211_beacon.o ieee80211_crypto.o \ -- ieee80211_crypto_none.o ieee80211_input.o ieee80211_node.o \ -- ieee80211_output.o ieee80211_power.o ieee80211_proto.o \ -- ieee80211_scan.o ieee80211_wireless.o ieee80211_linux.o \ -- ieee80211_monitor.o ieee80211_rate.o --wlan_wep-objs := ieee80211_crypto_wep.o --wlan_tkip-objs := ieee80211_crypto_tkip.o --wlan_ccmp-objs := ieee80211_crypto_ccmp.o --wlan_acl-objs := ieee80211_acl.o --wlan_xauth-objs := ieee80211_xauth.o --wlan_scan_sta-objs :=ieee80211_scan_sta.o --wlan_scan_ap-objs := ieee80211_scan_ap.o -- --include $(TOP)/Makefile.inc -- - INCS += -I$(TOP) -I$(ATH_HAL) -I$(HAL) - --EXTRA_CFLAGS+=$(INCS) $(COPTS) -DOPT_AH_H=\"public/$(TARGET).opt_ah.h\" -- ---include $(TOPDIR)/Rules.make -- - all: - $(MAKE) -C $(KERNELPATH) SUBDIRS=$(shell pwd) modules - -@@ -108,8 +91,28 @@ install: - f=`basename $$i .o`; \ - install -m 0644 $$f.$(KMODSUF) $(DESTDIR)/$(KMODPATH); \ - done -+else -+all: -+endif -+ -+wlan-objs := if_media.o \ -+ ieee80211_skb.o \ -+ ieee80211.o ieee80211_beacon.o ieee80211_crypto.o \ -+ ieee80211_crypto_none.o ieee80211_input.o ieee80211_node.o \ -+ ieee80211_output.o ieee80211_power.o ieee80211_proto.o \ -+ ieee80211_scan.o ieee80211_wireless.o ieee80211_linux.o \ -+ ieee80211_monitor.o ieee80211_rate.o -+wlan_wep-objs := ieee80211_crypto_wep.o -+wlan_tkip-objs := ieee80211_crypto_tkip.o -+wlan_ccmp-objs := ieee80211_crypto_ccmp.o -+wlan_acl-objs := ieee80211_acl.o -+wlan_xauth-objs := ieee80211_xauth.o -+wlan_scan_sta-objs :=ieee80211_scan_sta.o -+wlan_scan_ap-objs := ieee80211_scan_ap.o -+ -+ -+EXTRA_CFLAGS+=$(INCS) $(COPTS) -DOPT_AH_H=\"public/$(TARGET).opt_ah.h\" -+ -+-include $(TOPDIR)/Rules.make -+ - --clean: -- -rm -f *~ *.o *.ko *.mod.c -- -rm -f .depend .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd -- -rm -rf .tmp_versions ---- /dev/null -+++ b/net80211/module.h -@@ -0,0 +1,19 @@ -+#ifdef SINGLE_MODULE -+ -+#undef static -+#define static -+#undef module_init -+#undef module_exit -+#define module_init(...) -+#define module_exit(...) -+ -+#undef MODULE_AUTHOR -+#undef MODULE_LICENSE -+#undef MODULE_VERSION -+#undef MODULE_DESCRIPTION -+#define MODULE_AUTHOR(...) -+#define MODULE_LICENSE(...) -+#define MODULE_VERSION(...) -+#define MODULE_DESCRIPTION(...) -+ -+#endif ---- a/ath/if_ath.c -+++ b/ath/if_ath.c -@@ -13780,3 +13780,5 @@ cleanup_ath_buf(struct ath_softc *sc, st - return bf; - } - -+ -+ ---- a/net80211/ieee80211.c -+++ b/net80211/ieee80211.c -@@ -42,6 +42,7 @@ - #include - #endif - #include -+#include - #include - #include - #include -@@ -2015,3 +2016,65 @@ ieee80211_build_sc_ie(struct ieee80211co - int ath_debug_global = 0; - EXPORT_SYMBOL(ath_debug_global); - -+#ifdef SINGLE_MODULE -+typedef void (*initfunc)(void); -+ -+extern void init_ieee80211_acl(void); -+extern void init_crypto_ccmp(void); -+extern void init_crypto_tkip(void); -+extern void init_crypto_wep(void); -+extern void init_wlan(void); -+extern void init_scanner_ap(void); -+extern void init_scanner_sta(void); -+extern void init_ieee80211_xauth(void); -+ -+extern void exit_ieee80211_acl(void); -+extern void exit_crypto_ccmp(void); -+extern void exit_crypto_tkip(void); -+extern void exit_crypto_wep(void); -+extern void exit_wlan(void); -+extern void exit_scanner_ap(void); -+extern void exit_scanner_sta(void); -+extern void exit_ieee80211_xauth(void); -+ -+static __initdata initfunc net80211_init[] = { -+ init_wlan, -+ init_ieee80211_acl, -+ init_crypto_ccmp, -+ init_crypto_tkip, -+ init_crypto_wep, -+ init_ieee80211_xauth, -+ init_scanner_ap, -+ init_scanner_sta, -+}; -+ -+static __exitdata initfunc net80211_exit[] = { -+ exit_crypto_ccmp, -+ exit_crypto_tkip, -+ exit_crypto_wep, -+ exit_scanner_ap, -+ exit_scanner_sta, -+ exit_ieee80211_xauth, -+ exit_ieee80211_acl, -+ exit_wlan, -+}; -+ -+void net80211_init_module(void) -+{ -+ int i; -+ for (i = 0; i < sizeof(net80211_init)/sizeof(net80211_init[0]); i++) { -+ if (net80211_init[i]) -+ net80211_init[i](); -+ } -+} -+ -+void net80211_exit_module(void) -+{ -+ int i; -+ for (i = 0; i < sizeof(net80211_exit)/sizeof(net80211_exit[0]); i++) { -+ if (net80211_exit[i]) -+ net80211_exit[i](); -+ } -+} -+ -+#endif ---- a/ath/if_ath_ahb.c -+++ b/ath/if_ath_ahb.c -@@ -447,10 +447,18 @@ MODULE_SUPPORTED_DEVICE("Atheros WLAN ca - MODULE_LICENSE("Dual BSD/GPL"); - #endif - -+#ifdef SINGLE_MODULE -+RC_DECLARE -+#endif -+ - static int __init - init_ath_ahb(void) - { - printk(KERN_INFO "%s: %s\n", dev_info, version); -+#ifdef SINGLE_MODULE -+ net80211_init_module(); -+ RC_INIT -+#endif - platform_driver_register(&ahb_wmac_driver); - ath_sysctl_register(); - -@@ -463,6 +471,10 @@ exit_ath_ahb(void) - { - ath_sysctl_unregister(); - platform_driver_unregister(&ahb_wmac_driver); -+#ifdef SINGLE_MODULE -+ RC_EXIT -+ net80211_exit_module(); -+#endif - printk(KERN_INFO "%s: driver unloaded\n", dev_info); - } - module_exit(exit_ath_ahb); ---- a/ath/if_ath_pci.c -+++ b/ath/if_ath_pci.c -@@ -415,11 +415,19 @@ MODULE_SUPPORTED_DEVICE("Atheros WLAN ca - MODULE_LICENSE("Dual BSD/GPL"); - #endif - -+#ifdef SINGLE_MODULE -+RC_DECLARE -+#endif -+ - static int __init - init_ath_pci(void) - { - printk(KERN_INFO "%s: %s\n", dev_info, version); - -+#ifdef SINGLE_MODULE -+ net80211_init_module(); -+ RC_INIT -+#endif - if (pci_register_driver(&ath_pci_driver) < 0) { - printk(KERN_ERR "%s: No devices found, driver not installed.\n", dev_info); - return (-ENODEV); -@@ -434,6 +442,10 @@ exit_ath_pci(void) - { - ath_sysctl_unregister(); - pci_unregister_driver(&ath_pci_driver); -+#ifdef SINGLE_MODULE -+ RC_EXIT -+ net80211_exit_module(); -+#endif - - printk(KERN_INFO "%s: driver unloaded\n", dev_info); - } ---- a/ath_rate/minstrel/Makefile -+++ b/ath_rate/minstrel/Makefile -@@ -39,9 +39,7 @@ - # Makefile for the Atheros Rate Control Support. - # - obj := $(firstword $(obj) $(SUBDIRS) .) --TOP = $(obj)/../.. - --obj-m += ath_rate_minstrel.o - ath_rate_minstrel-objs := minstrel.o - - include $(TOP)/Makefile.inc -@@ -50,6 +48,10 @@ INCS += -I$(TOP) -I$(ATH) -I$(ATH_HAL) - - - EXTRA_CFLAGS+= $(INCS) $(COPTS) -DOPT_AH_H=\"public/$(TARGET).opt_ah.h\" - -+ifeq ($(SINGLE_MODULE),) -+ -+obj-m += ath_rate_minstrel.o -+ - -include $(TOPDIR)/Rules.make - - all: -@@ -59,10 +61,9 @@ install: - test -d $(DESTDIR)/$(KMODPATH) || mkdir -p $(DESTDIR)/$(KMODPATH) - install -m 0644 ath_rate_minstrel.$(KMODSUF) $(DESTDIR)/$(KMODPATH) - --clean: -- -rm -f *~ *.o *.ko *.mod.c -- -rm -f .depend .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd -- -rm -rf .tmp_versions -- - ath_rate_minstrel.o: $(ath_rate_minstrel-objs) - $(LD) $(LDOPTS) -o ath_rate_minstrel.$(KMODSUF) -r $(ath_rate_minstrel-objs) -+else -+all: -+install: -+endif ---- a/ath_rate/minstrel/minstrel.c -+++ b/ath_rate/minstrel/minstrel.c -@@ -945,6 +945,8 @@ static struct ieee80211_rate_ops ath_rat - .dynamic_proc_register = ath_rate_dynamic_proc_register, - }; - -+#include -+ - MODULE_AUTHOR("John Bicket/Derek Smithies"); - MODULE_DESCRIPTION("Minstrel Rate bit-rate selection algorithm for Atheros devices"); - #ifdef MODULE_VERSION ---- a/net80211/ieee80211_var.h -+++ b/net80211/ieee80211_var.h -@@ -47,6 +47,7 @@ - #include - #include - #include -+#include "symbol.h" - - /* NB: - * - Atheros chips use 6 bits when power is specified in whole dBm units, with -@@ -740,6 +741,8 @@ void ieee80211_dfs_action(struct ieee802 - void ieee80211_expire_channel_excl_restrictions(struct ieee80211com *); - void ieee80211_setpuregbasicrates(struct ieee80211_rateset *rs); - int ieee80211_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); -+void net80211_init_module(void); -+void net80211_exit_module(void); - - /* - * Iterate through ic_channels to enumerate all distinct ic_ieee channel numbers. ---- a/net80211/ieee80211_linux.h -+++ b/net80211/ieee80211_linux.h -@@ -521,7 +521,10 @@ extern struct sk_buff * ieee80211_getmgt - #define IF_DRAIN(_q) skb_queue_drain(_q) - extern void skb_queue_drain(struct sk_buff_head *q); - --#ifndef __MOD_INC_USE_COUNT -+#ifdef SINGLE_MODULE -+#define _MOD_DEC_USE(_m) do {} while(0) -+#define _MOD_INC_USE(_m, _err) do {} while(0) -+#elif !defined(__MOD_INC_USE_COUNT) - #define _MOD_INC_USE(_m, _err) \ - if (!try_module_get(_m)) { \ - printk(KERN_WARNING "%s: try_module_get failed\n", \ ---- a/ath_rate/sample/Makefile -+++ b/ath_rate/sample/Makefile -@@ -39,9 +39,7 @@ - # Makefile for the Atheros Rate Control Support. - # - obj := $(firstword $(obj) $(SUBDIRS) .) --TOP = $(obj)/../.. - --obj-m += ath_rate_sample.o - ath_rate_sample-objs := sample.o - - include $(TOP)/Makefile.inc -@@ -50,6 +48,9 @@ INCS += -I$(TOP) -I$(ATH) -I$(ATH_HAL) - - - EXTRA_CFLAGS+= $(INCS) $(COPTS) -DOPT_AH_H=\"public/$(TARGET).opt_ah.h\" - -+ifeq ($(SINGLE_MODULE),) -+obj-m += ath_rate_sample.o -+ - -include $(TOPDIR)/Rules.make - - all: -@@ -59,10 +60,9 @@ install: - test -d $(DESTDIR)/$(KMODPATH) || mkdir -p $(DESTDIR)/$(KMODPATH) - install -m 0644 ath_rate_sample.$(KMODSUF) $(DESTDIR)/$(KMODPATH) - --clean: -- -rm -f *~ *.o *.ko *.mod.c -- -rm -f .depend .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd -- -rm -rf .tmp_versions -- - ath_rate_sample.o: $(ath_rate_sample-objs) - $(LD) $(LDOPTS) -o ath_rate_sample.$(KMODSUF) -r $(ath_rate_sample-objs) -+else -+all: -+install: -+endif ---- a/Makefile -+++ b/Makefile -@@ -41,7 +41,7 @@ - # - - obj := $(firstword $(obj) $(SUBDIRS) .) --TOP = $(obj) -+export TOP:=$(if $(wildcard $(firstword $(SUBDIRS))/Makefile.inc),$(firstword $(SUBDIRS)),$(CURDIR)) - - ifneq (svnversion.h,$(MAKECMDGOALS)) - include $(TOP)/Makefile.inc -@@ -54,7 +54,7 @@ all: modules tools - modules: configcheck svnversion.h - ifdef LINUX24 - for i in $(obj-y); do \ -- $(MAKE) -C $$i || exit 1; \ -+ $(MAKE) -C $$i TOP="$(TOP)" || exit 1; \ - done - else - $(MAKE) -C $(KERNELPATH) SUBDIRS=$(shell pwd) modules -@@ -89,7 +89,7 @@ install-modules: modules - sh scripts/find-madwifi-modules.sh -r $(KERNELRELEASE) $(DESTDIR) - - for i in $(obj-y); do \ -- $(MAKE) -C $$i install || exit 1; \ -+ $(MAKE) -C $$i install TOP="$(TOP)" || exit 1; \ - done - ifeq ($(DESTDIR),) - (export KMODPATH=$(KMODPATH); /sbin/depmod -ae $(KERNELRELEASE)) -@@ -114,12 +114,21 @@ reinstall-tools: uninstall-tools install - reinstall-modules: uninstall-modules install-modules - - clean: -- for i in $(obj-y); do \ -- $(MAKE) -C $$i clean; \ -- done -- -$(MAKE) -C $(TOOLS) clean -- rm -rf .tmp_versions -+ -find $(obj-y) -name '*~' \ -+ -or -name '*.o' \ -+ -or -name '*.o.d' \ -+ -or -name '*.o.cmd' \ -+ -or -name '*.o.flags' \ -+ -or -name '*.ko' \ -+ -or -name '*.ko.cmd' \ -+ -or -name '*.mod.c' \ -+ -or -name '.depend' \ -+ -or -name '.version' \ -+ -or -name '.symvers' | \ -+ xargs -r rm -f - rm -f *.symvers svnversion.h -+ rm -rf .tmp_versions -+ make -C tools clean - - info: - @echo "The following settings will be used for compilation:" -@@ -135,18 +144,6 @@ info: - @echo "KMODPATH : $(KMODPATH)" - @echo "KMODSUF : $(KMODSUF)" - --sanitycheck: -- @echo -n "Checking requirements... " -- -- @# check if specified rate control is available -- @if [ ! -d $(ATH_RATE) ]; then \ -- echo "FAILED"; \ -- echo "Selected rate control $(ATH_RATE) not available."; \ -- exit 1; \ -- fi -- -- @echo "ok." -- - .PHONY: release - release: - sh scripts/make-release.bash -@@ -155,7 +152,7 @@ release: - unload: - bash scripts/madwifi-unload - --configcheck: sanitycheck -+configcheck: - @echo -n "Checking kernel configuration... " - - @# check version of kernel ---- a/Makefile.inc -+++ b/Makefile.inc -@@ -68,6 +68,9 @@ endif - export KERNELPATH - endif - -+# build net80211 and ath_ahb/ath_pci into a single module -+export SINGLE_MODULE=1 -+ - # KERNELRELEASE is the target kernel's version. It's always taken from - # the kernel build tree. Kernel Makefile doesn't always know the exact - # kernel version (especially for vendor stock kernels), so we get it -@@ -100,6 +103,7 @@ export ARCH - include $(TOP)/ath_hal/ah_target.inc - export TARGET - COPTS += -DTARGET='"$(TARGET)"' -+COPTS += -DCONFIG_ATHEROS_RATE_DEFAULT='"$(firstword $(ATH_RATE))"' - - # KMODPATH nominates the directory where the modules will be - # installed to -@@ -141,7 +145,7 @@ ATH= $(TOP)/ath - # - # Path to the rate control algorithms. - # --ATH_RATE= $(TOP)/ath_rate -+ATH_RATE= minstrel - # - # Path to the userspace utilities. - # ---- a/ath_rate/sample/sample.c -+++ b/ath_rate/sample/sample.c -@@ -991,6 +991,8 @@ static struct ieee80211_rate_ops ath_rat - .dynamic_proc_register = ath_rate_dynamic_proc_register, - }; - -+#include -+ - MODULE_AUTHOR("John Bicket"); - MODULE_DESCRIPTION("SampleRate bit-rate selection algorithm for Atheros devices"); - #ifdef MODULE_VERSION -@@ -1000,18 +1002,17 @@ MODULE_VERSION(RELEASE_VERSION); - MODULE_LICENSE("Dual BSD/GPL"); - #endif - --static int __init --init_ath_rate_sample(void) -+static int __init ath_rate_sample_init(void) - { - printk(KERN_INFO "%s: %s\n", dev_info, version); - return ieee80211_rate_register(&ath_rate_ops); - } --module_init(init_ath_rate_sample); -+module_init(ath_rate_sample_init); - - static void __exit --exit_ath_rate_sample(void) -+ath_rate_sample_exit(void) - { - ieee80211_rate_unregister(&ath_rate_ops); - printk(KERN_INFO "%s: unloaded\n", dev_info); - } --module_exit(exit_ath_rate_sample); -+module_exit(ath_rate_sample_exit); ---- a/net80211/if_media.h -+++ b/net80211/if_media.h -@@ -42,6 +42,7 @@ - #define _NET_IF_MEDIA_H_ - - #include -+#include "symbol.h" - - /* - * Prototypes and definitions for BSD/OS-compatible network interface ---- /dev/null -+++ b/net80211/symbol.h -@@ -0,0 +1,4 @@ -+#ifdef SINGLE_MODULE -+#undef EXPORT_SYMBOL -+#define EXPORT_SYMBOL(...) -+#endif ---- a/ath_rate/Makefile -+++ b/ath_rate/Makefile -@@ -1,7 +1,7 @@ - obj := $(firstword $(obj) $(SUBDIRS) .) - TOP = $(obj)/.. - --obj-y := amrr/ onoe/ sample/ minstrel/ -+obj-y := sample/ minstrel/ - - include $(TOP)/Makefile.inc -