make kernel module packaging code reusable and use it in madwifi
SVN-Revision: 5189
This commit is contained in:
		| @@ -59,6 +59,69 @@ else | ||||
|   LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux | ||||
| endif | ||||
|  | ||||
|  | ||||
| define KernelPackage/Defaults | ||||
|   FILES:= | ||||
|   KCONFIG:=m | ||||
|   AUTOLOAD:= | ||||
| endef | ||||
|  | ||||
| define ModuleAutoLoad | ||||
| 	export modules=; \ | ||||
| 	add_module() { \ | ||||
| 		mkdir -p $(2)/etc/modules.d; \ | ||||
| 		echo "$$$$$$$$2" > $(2)/etc/modules.d/$$$$$$$$1-$(1); \ | ||||
| 		modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$1-$(1)"; \ | ||||
| 	}; \ | ||||
| 	$(3) \ | ||||
| 	if [ -n "$$$$$$$$modules" ]; then \ | ||||
| 		mkdir -p $(2)/etc/modules.d; \ | ||||
| 		echo "#!/bin/sh" > $(2)/CONTROL/postinst; \ | ||||
| 		echo "[ -z \"\$$$$$$$$IPKG_INSTROOT\" ] || exit 0" >> $(2)/CONTROL/postinst; \ | ||||
| 		echo ". /etc/functions.sh" >> $(2)/CONTROL/postinst; \ | ||||
| 		echo "load_modules $$$$$$$$modules" >> $(2)/CONTROL/postinst; \ | ||||
| 		chmod 0755 $(2)/CONTROL/postinst; \ | ||||
| 	fi | ||||
| endef | ||||
|   | ||||
|  | ||||
| define KernelPackage | ||||
|   NAME:=$(1) | ||||
|   $(eval $(call KernelPackage/Defaults)) | ||||
|   $(eval $(call KernelPackage/$(1))) | ||||
|   $(eval $(call KernelPackage/$(1)/$(KERNEL))) | ||||
|   $(eval $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL))) | ||||
|  | ||||
|   define Package/kmod-$(1) | ||||
|     TITLE:=$(TITLE) | ||||
|     SECTION:=kernel | ||||
|     CATEGORY:=Kernel modules | ||||
|     DEFAULT:=m | ||||
|     DESCRIPTION:=$(DESCRIPTION) | ||||
|     EXTRA_DEPENDS:='kernel (=$(PKG_VERSION)-$(PKG_RELEASE))' | ||||
|     $(call KernelPackage/$(1)) | ||||
|     $(call KernelPackage/$(1)/$(KERNEL)) | ||||
|     $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL)) | ||||
|   endef | ||||
|  | ||||
|   ifeq ($(findstring m,$(KCONFIG)),m) | ||||
|     ifneq ($(strip $(FILES)),) | ||||
|       define Package/kmod-$(1)/install | ||||
| 		mkdir -p $$(1)/lib/modules/$(LINUX_VERSION) | ||||
| 		$(CP) $$(FILES) $$(1)/lib/modules/$(LINUX_VERSION)/ | ||||
| 		$(call ModuleAutoLoad,$(1),$$(1),$(AUTOLOAD)) | ||||
| 		$(call KernelPackage/$(1)/install,$$(1)) | ||||
|       endef | ||||
|     endif | ||||
|   endif | ||||
|   $$(eval $$(call BuildPackage,kmod-$(1))) | ||||
| endef | ||||
|  | ||||
| define AutoLoad | ||||
|   add_module $(1) "$(2)"; | ||||
| endef | ||||
|  | ||||
|  | ||||
| # FIXME: remove this crap | ||||
| define KMOD_template | ||||
| ifeq ($$(strip $(4)),) | ||||
|   | ||||
| @@ -26,68 +26,11 @@ define Build/Prepare | ||||
| 	mkdir -p $(PKG_BUILD_DIR) | ||||
| endef | ||||
|  | ||||
| define Build/Configure | ||||
| endef | ||||
|  | ||||
| define Build/Compile | ||||
| endef | ||||
|  | ||||
| define KernelPackage/Defaults | ||||
|   FILES:= | ||||
|   KCONFIG:=m | ||||
|   AUTOLOAD:= | ||||
| endef | ||||
|  | ||||
| define ModuleAutoLoad | ||||
| 	export modules=; \ | ||||
| 	add_module() { \ | ||||
| 		mkdir -p $(2)/etc/modules.d; \ | ||||
| 		echo "$$$$$$$$2" > $(2)/etc/modules.d/$$$$$$$$1-$(1); \ | ||||
| 		modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$1-$(1)"; \ | ||||
| 	}; \ | ||||
| 	$(3) \ | ||||
| 	if [ -n "$$$$$$$$modules" ]; then \ | ||||
| 		mkdir -p $(2)/etc/modules.d; \ | ||||
| 		echo "#!/bin/sh" > $(2)/CONTROL/postinst; \ | ||||
| 		echo "[ -z \"\$$$$$$$$IPKG_INSTROOT\" ] || exit 0" >> $(2)/CONTROL/postinst; \ | ||||
| 		echo ". /etc/functions.sh" >> $(2)/CONTROL/postinst; \ | ||||
| 		echo "load_modules $$$$$$$$modules" >> $(2)/CONTROL/postinst; \ | ||||
| 		chmod 0755 $(2)/CONTROL/postinst; \ | ||||
| 	fi | ||||
| endef | ||||
|   | ||||
|  | ||||
| define KernelPackage | ||||
|   NAME:=$(1) | ||||
|   $(eval $(call KernelPackage/Defaults)) | ||||
|   $(eval $(call KernelPackage/$(1))) | ||||
|   $(eval $(call KernelPackage/$(1)/$(KERNEL))) | ||||
|   $(eval $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL))) | ||||
|  | ||||
|   define Package/kmod-$(1) | ||||
|     TITLE:=$(TITLE) | ||||
|     SECTION:=kernel | ||||
|     CATEGORY:=Kernel modules | ||||
|     DEFAULT:=m | ||||
|     DESCRIPTION:=$(DESCRIPTION) | ||||
|     EXTRA_DEPENDS:='kernel (=$(PKG_VERSION)-$(PKG_RELEASE))' | ||||
|     $(call KernelPackage/$(1)) | ||||
|     $(call KernelPackage/$(1)/$(KERNEL)) | ||||
|     $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL)) | ||||
|   endef | ||||
|  | ||||
|   ifeq ($(findstring m,$(KCONFIG)),m) | ||||
|     ifneq ($(strip $(FILES)),) | ||||
|       define Package/kmod-$(1)/install | ||||
| 		mkdir -p $$(1)/lib/modules/$(LINUX_VERSION) | ||||
| 		$(CP) $$(FILES) $$(1)/lib/modules/$(LINUX_VERSION)/ | ||||
| 		$(call ModuleAutoLoad,$(1),$$(1),$(AUTOLOAD)) | ||||
|       endef | ||||
|     endif | ||||
|   endif | ||||
|   $$(eval $$(call BuildPackage,kmod-$(1))) | ||||
| endef | ||||
|  | ||||
| define AutoLoad | ||||
|   add_module $(1) "$(2)"; | ||||
| endef | ||||
|  | ||||
| include $(TOPDIR)/target/linux/*/modules.mk | ||||
| include ./modules/*.mk | ||||
|   | ||||
| @@ -22,17 +22,6 @@ 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) | ||||
| @@ -67,6 +56,41 @@ ifeq ($(findstring PCI,$(BUS)),PCI) | ||||
|   BUS_MODULES+=$(PKG_BUILD_DIR)/ath/ath_pci.$(LINUX_KMOD_SUFFIX) | ||||
| endif | ||||
|  | ||||
| MADWIFI_AUTOLOAD:= \ | ||||
| 	wlan \ | ||||
| 	wlan_scan_ap \ | ||||
| 	wlan_scan_sta \ | ||||
| 	ath_hal \ | ||||
| 	ath_rate_$(RATE_CONTROL) \ | ||||
| 	wlan_acl \ | ||||
| 	wlan_ccmp \ | ||||
| 	wlan_tkip \ | ||||
| 	wlan_wep \ | ||||
| 	wlan_xauth | ||||
|  | ||||
| ifeq ($(findstring AHB,$(BUS)),AHB) | ||||
| 	MADWIFI_AUTOLOAD += ath_ahb | ||||
| endif | ||||
| ifeq ($(findstring PCI,$(BUS)),PCI) | ||||
| 	MADWIFI_AUTOLOAD += ath_pci | ||||
| endif | ||||
|  | ||||
| define KernelPackage/madwifi | ||||
|   SUBMENU:=Network Devices | ||||
|   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) | ||||
|   FILES:= \ | ||||
| 		$(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) | ||||
|   AUTOLOAD:=$(call AutoLoad,50,$(MADWIFI_AUTOLOAD)) | ||||
| endef | ||||
|  | ||||
| MADWIFI_MAKEOPTS= -C $(PKG_BUILD_DIR) \ | ||||
| 		PATH="$(TARGET_PATH)" \ | ||||
| 		ARCH="$(LINUX_KARCH)" \ | ||||
| @@ -107,27 +131,12 @@ define Build/UninstallDev | ||||
| 	rm -rf	$(STAGING_DIR)/usr/include/madwifi | ||||
| endef | ||||
|  | ||||
| define Package/kmod-madwifi/install | ||||
| 	mkdir -p $(1)/etc/modules.d | ||||
| define KernelPackage/madwifi/install | ||||
| 	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 autocreate=none" >> $(1)/etc/modules.d/20-madwifi | ||||
| endif | ||||
| 	install -m0755 ./files/madwifi.init $(1)/etc/init.d/madwifi | ||||
| 	$(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)) | ||||
| $(eval $(call KernelPackage,madwifi)) | ||||
|   | ||||
| @@ -1,10 +0,0 @@ | ||||
| wlan | ||||
| wlan_scan_ap | ||||
| wlan_scan_sta | ||||
| ath_hal | ||||
| ath_rate_sample | ||||
| wlan_acl | ||||
| wlan_ccmp | ||||
| wlan_tkip | ||||
| wlan_wep | ||||
| wlan_xauth | ||||
| @@ -6,7 +6,7 @@ diff -urN madwifi-0.9.2.old/ath/if_ath.c madwifi-0.9.2.dev/ath/if_ath.c | ||||
|  	HAL_STATUS status; | ||||
|  	int error = 0, i; | ||||
| -	int autocreatemode = IEEE80211_M_STA;
 | ||||
| +	int autocreatemode = IEEE80211_M_HOSTAP;
 | ||||
| +	int autocreatemode = -1;
 | ||||
|  	u_int8_t csz; | ||||
|   | ||||
|  	sc->devid = devid; | ||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau