madwifi: add 0.9.4 madwifi as a menuconfig option, as requested in some mails/tickets
authorFelix Fietkau <nbd@openwrt.org>
Thu, 31 Jul 2008 17:27:55 +0000 (17:27 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Thu, 31 Jul 2008 17:27:55 +0000 (17:27 +0000)
untested, does not work with 2.6.26

SVN-Revision: 12047

package/madwifi/Config.in
package/madwifi/Makefile
package/madwifi/patches-upstream/104-autocreate_none.patch [new file with mode: 0644]
package/madwifi/patches-upstream/111-minstrel_crash.patch [new file with mode: 0644]

index 913bd0a..ee2bd67 100644 (file)
@@ -5,13 +5,25 @@ config MADWIFI_DEBUG
        depends on EXPERIMENTAL && PACKAGE_kmod-madwifi
        default n
 
-config MADWIFI_TESTING
-       bool "Use the testing version of MadWiFi"
+choice
+       prompt "Madwifi version"
        depends on PACKAGE_kmod-madwifi
-       default n
+       default MADWIFI_STABLE
        help
-         Use the testing version of MadWiFi, which is newer, but also less tested
-         May contain unexpected bugs :)
+         This option allows you to select the version of MadiWifi to be built.
+
+config MADWIFI_STABLE
+       bool "Use the OpenWrt stable version of madwifi"
+
+config MADWIFI_TESTING
+       depends BROKEN
+       bool "Use the OpenWrt testing version of madwifi"
+
+config MADWIFI_UPSTREAM
+       depends !LINUX_2_6_26
+       bool "Use the upstream release version 0.9.4"
+
+endchoice
 
 choice
        prompt "Rate control algorithm selection"
index 97516e4..699a4af 100644 (file)
@@ -10,20 +10,34 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=madwifi
-PKG_REV:=$(if $(CONFIG_MADWIFI_TESTING),3776,3314)
-PKG_VERSION:=r$(PKG_REV)
+
+ifneq ($(CONFIG_MADWIFI_UPSTREAM),)
+  PKG_VERSION:=0.9.4
+  PKG_RELEASE:=1
+
+  PKG_SOURCE:=madwifi-$(PKG_VERSION).tar.gz
+  PKG_SOURCE_URL:=http://downloads.sourceforge.net/madwifi/
+  PKG_MD5SUM:=399d20de8d855a59f20058857c2178ad
+
+  PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/madwifi-$(PKG_VERSION)
+
+  PATCH_DIR=./patches-upstream
+else
 # PKG_BRANCH:=madwifi-dfs
-PKG_RELEASE:=1
+  PKG_REV:=$(if $(CONFIG_MADWIFI_TESTING),3776,3314)
+  PKG_VERSION:=r$(PKG_REV)
+  PKG_RELEASE:=1
 
-PKG_SOURCE_PROTO:=svn
-PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_SOURCE_SUBDIR:=$(if $(PKG_BRANCH),$(PKG_BRANCH),madwifi-trunk)-$(PKG_VERSION)
-PKG_SOURCE_URL:=http://svn.madwifi.org/madwifi/$(if $(PKG_BRANCH),branches/$(PKG_BRANCH),trunk)
-PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
+  PKG_SOURCE_PROTO:=svn
+  PKG_SOURCE_VERSION:=$(PKG_REV)
+  PKG_SOURCE_SUBDIR:=$(if $(PKG_BRANCH),$(PKG_BRANCH),madwifi-trunk)-$(PKG_VERSION)
+  PKG_SOURCE_URL:=http://svn.madwifi.org/madwifi/$(if $(PKG_BRANCH),branches/$(PKG_BRANCH),trunk)
+  PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
 
-PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(PKG_BRANCH),$(PKG_BRANCH),madwifi-trunk)-$(PKG_VERSION)
+  PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(PKG_BRANCH),$(PKG_BRANCH),madwifi-trunk)-$(PKG_VERSION)
 
-PATCH_DIR=$(if $(CONFIG_MADWIFI_TESTING),./patches-testing,./patches)
+  PATCH_DIR=$(if $(CONFIG_MADWIFI_TESTING),./patches-testing,./patches)
+endif
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -120,11 +134,13 @@ ifeq ($(findstring PCI,$(BUS)),PCI)
   MADWIFI_AUTOLOAD+= ath_pci
 endif
 
-MADWIFI_APPLETS:=80211stats,athchans,athctrl,athkey,athstats,wlanconfig,$(if $(CONFIG_MADWIFI_TESTING),ath_info/)ath_info
+MADWIFI_APPLETS:=80211stats athchans athctrl athkey athstats wlanconfig $(if $(CONFIG_MADWIFI_TESTING),ath_info/)ath_info
 ifdef CONFIG_MADWIFI_DEBUG
-  MADWIFI_APPLETS:=$(strip $(MADWIFI_APPLETS)),athdebug,80211debug
+  MADWIFI_APPLETS += athdebug 80211debug
+endif
+ifndef CONFIG_MADWIFI_UPSTREAM
+  MADWIFI_APPLETS += madwifi_multi
 endif
-
 
 define KernelPackage/madwifi
   SUBMENU:=Wireless Drivers
@@ -164,15 +180,23 @@ endif
 MAKE_VARS:= \
        COPTS="-DCONFIG_ATHEROS_RATE_DEFAULT='\"$(RATE_CONTROL)\"' -DATH_REVERSE_ENGINEERING=1" \
 
-HALFILE:=$(lastword $(sort $(wildcard ./ath_hal-*.tgz)))
+ifeq ($(CONFIG_MADWIFI_UPSTREAM),)
+  HALFILE:=$(lastword $(sort $(wildcard ./ath_hal-*.tgz)))
+endif
+
 ifneq ($(HALFILE),)
-  define Build/Prepare
-       $(call Build/Prepare/Default)
+  define Build/Prepare/HAL
        rm -rf $(PKG_BUILD_DIR)/tmp
        mkdir -p $(PKG_BUILD_DIR)/tmp
        tar xvzf $(HALFILE) -C $(PKG_BUILD_DIR)/tmp
        $(CP) $(PKG_BUILD_DIR)/tmp/ath_hal*/* $(PKG_BUILD_DIR)/hal/
        rm -rf $(PKG_BUILD_DIR)/tmp
+  endef
+endif
+
+define Build/Prepare
+       $(call Build/Prepare/Default)
+       $(call Build/Prepare/HAL)
        # patch cflags
        $(SED) 's, -E[LB],,' \
                -e 's, -mips2,,' \
@@ -180,8 +204,7 @@ ifneq ($(HALFILE),)
                $(PKG_BUILD_DIR)/hal/public/*.inc
        $(SED) 's,march=armv4,march=armv5te,' \
                $(PKG_BUILD_DIR)/hal/public/xscale*.inc
-  endef
-endif
+endef
 
 ifeq ($(findstring AHB,$(BUS)),AHB)
   define Build/Compile/ahb
@@ -216,7 +239,7 @@ endef
 define KernelPackage/madwifi/install
        $(INSTALL_DIR) $(1)/usr/sbin
        $(CP) ./files/* $(1)/
-       $(CP) $(PKG_BUILD_DIR)/tools/{madwifi_multi,$(MADWIFI_APPLETS)} $(1)/usr/sbin/
+       $(CP) $(foreach applet,$(MADWIFI_APPLETS),$(PKG_BUILD_DIR)/tools/$(applet)) $(1)/usr/sbin/
 endef
 
 $(eval $(call KernelPackage,madwifi))
diff --git a/package/madwifi/patches-upstream/104-autocreate_none.patch b/package/madwifi/patches-upstream/104-autocreate_none.patch
new file mode 100644 (file)
index 0000000..e290f86
--- /dev/null
@@ -0,0 +1,13 @@
+Index: madwifi-0.9.4/ath/if_ath.c
+===================================================================
+--- madwifi-0.9.4.old/ath/if_ath.c     2008-02-13 06:13:10.000000000 +0100
++++ madwifi-0.9.4/ath/if_ath.c 2008-05-06 10:25:15.000000000 +0200
+@@ -404,7 +404,7 @@
+       struct ath_hal *ah;
+       HAL_STATUS status;
+       int error = 0, i;
+-      int autocreatemode = IEEE80211_M_STA;
++      int autocreatemode = -1;
+       u_int8_t csz;
+       sc->devid = devid;
diff --git a/package/madwifi/patches-upstream/111-minstrel_crash.patch b/package/madwifi/patches-upstream/111-minstrel_crash.patch
new file mode 100644 (file)
index 0000000..cc1fbe6
--- /dev/null
@@ -0,0 +1,14 @@
+Index: madwifi-0.9.4/ath_rate/minstrel/minstrel.c
+===================================================================
+--- madwifi-0.9.4.old/ath_rate/minstrel/minstrel.c     2007-12-12 05:11:07.000000000 +0100
++++ madwifi-0.9.4/ath_rate/minstrel/minstrel.c 2008-07-24 15:15:41.000000000 +0200
+@@ -394,6 +394,9 @@
+       int rc1, rc2, rc3;         /* Index into the rate table, so for example, it is  0..11 */
+       int rixc1, rixc2, rixc3;   /* The actual bit rate used */
++      if (sn->num_rates <= 0)
++              return; 
++
+       if (sn->is_sampling) {
+               sn->is_sampling = 0;
+               if (sn->rs_sample_rate_slower)