madwifi: update to sam leffler's latest hal
authorFelix Fietkau <nbd@openwrt.org>
Sun, 1 Jun 2008 03:00:32 +0000 (03:00 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 1 Jun 2008 03:00:32 +0000 (03:00 +0000)
fixes LED on wisoc
fixes rx sensitivity issues
improves throughput on all cards/devices
enhances link stability

SVN-Revision: 11314

package/madwifi/Config.in
package/madwifi/Makefile
package/madwifi/ath_hal-20080528.tgz [new file with mode: 0644]
package/madwifi/patches/100-kernel_cflags.patch [deleted file]
package/madwifi/patches/328-ani_stuff.patch [deleted file]
package/madwifi/patches/349-reset.patch [new file with mode: 0644]
package/madwifi/patches/350-wisoc_softled.patch [new file with mode: 0644]

index d2bc4e0..ab24a8e 100644 (file)
@@ -5,87 +5,6 @@ config MADWIFI_DEBUG
        depends on EXPERIMENTAL
        default n
 
-choice
-       prompt "Bus selection"
-       default MADWIFI_BUS_DEFAULT
-       help
-         This option controls how MadWifi communicates with the hardware.
-
-config MADWIFI_BUS_DEFAULT
-       bool "Use default bus"
-       help
-         This makes MadWifi determine the needed bus based on the target
-         hardware. This will generally work most of the time, but there are some
-         cases where you need to override it.
-
-config MADWIFI_BUS_PCI
-       bool "Use PCI bus"
-       depends on PCI_SUPPORT
-
-config MADWIFI_BUS_AHB
-       bool "Use AHB bus"
-       depends on TARGET_atheros
-
-endchoice
-
-choice
-       prompt "HAL selection"
-       default MADWIFI_HAL_DEFAULT
-       help
-         This option controls how MadWifi communicates with the hardware.
-
-config MADWIFI_HAL_DEFAULT
-       bool "Use default HAL"
-       help
-         This makes MadWifi determine the needed HAL based on the target
-         hardware. This will generally work most of the time, but there are some
-         cases where you need to override it.
-
-config MADWIFI_HAL_MIPS_BE_ELF
-       bool "Use MIPS big endian ELF HAL"
-       depends on mips
-       depends on BIG_ENDIAN
-
-config MADWIFI_HAL_MIPS_LE_ELF
-       bool "Use MIPS little endian ELF HAL"
-       depends on mips
-       depends on !BIG_ENDIAN
-
-config MADWIFI_HAL_I386_ELF
-       bool "Use i386 ELF HAL"
-       depends on TARGET_x86
-
-config MADWIFI_HAL_XSCALE_BE_ELF
-       bool "Use XScale big endian ELF HAL"
-       depends TARGET_ixp4xx
-       depends on BIG_ENDIAN
-
-config MADWIFI_HAL_XSCALE_LE_ELF
-       bool "Use XScale little endian ELF HAL"
-       depends TARGET_iop32x
-       depends on !BIG_ENDIAN
-
-config MADWIFI_HAL_ARMV4_LE_ELF
-       bool "Use ARMV4 little endian ELF HAL"
-       depends TARGET_storm
-       depends on !BIG_ENDIAN
-
-config MADWIFI_HAL_AP30
-       bool "Use AP30 HAL"
-       depends on TARGET_atheros
-
-config MADWIFI_HAL_AP43
-       bool "Use AP43 HAL"
-       depends on TARGET_atheros
-
-config MADWIFI_HAL_AP51
-       bool "Use AP51 HAL"
-       depends on TARGET_atheros
-
-config MADWIFI_HAL_AP61
-       bool "Use AP61 HAL"
-       depends on TARGET_atheros
-
 endchoice
 
 choice
index 09995e0..8d11cf1 100644 (file)
@@ -25,98 +25,45 @@ PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(PKG_BRANCH),$(PKG_BRANCH),madwifi-trun
 
 include $(INCLUDE_DIR)/package.mk
 
-ifdef CONFIG_MADWIFI_BUS_DEFAULT
-  ifneq ($(CONFIG_TARGET_atheros),)
-    BUS:=AHB
-  else
-    ifneq ($(CONFIG_PCI_SUPPORT),)
-      BUS:=PCI
-    endif
-  endif
-
-  # XXX: remove this check later when we have PCI support properly detected on all targets
-  ifneq ($(CONFIG_TARGET_ar7)$(CONFIG_TARGET_uml),)
-    BUS:=
-  endif
+ifneq ($(CONFIG_TARGET_atheros),)
+  BUS:=AHB
 else
-  ifdef CONFIG_MADWIFI_BUS_PCI
+  ifneq ($(CONFIG_PCI_SUPPORT),)
     BUS:=PCI
-  else
-    ifdef CONFIG_MADWIFI_BUS_AHB
-      BUS:=AHB
-    endif
   endif
 endif
 
-ifdef CONFIG_MADWIFI_HAL_DEFAULT
-  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),i686)
-    HAL_TARGET:=i386-elf
-  endif
-  ifeq ($(BOARD),ixp4xx)
-    HAL_TARGET:=xscale-be-elf
-  endif
-  ifeq ($(BOARD),iop32x)
-    HAL_TARGET:=xscale-le-elf
-  endif
-  ifeq ($(ARCH),powerpc)
-    HAL_TARGET:=powerpc-be-elf
-  endif
-  ifeq ($(BOARD),storm)
-    HAL_TARGET:=armv4-le-elf
-  endif
-  ifneq ($(CONFIG_TARGET_atheros),)
-    HAL_TARGET:=ap51
-  endif
-else
-  ifdef CONFIG_MADWIFI_HAL_MIPS_BE_ELF
-    HAL_TARGET:=mips-be-elf
-  endif
-
-  ifdef CONFIG_MADWIFI_HAL_MIPS_LE_ELF
-    HAL_TARGET:=mips-le-elf
-  endif
-
-  ifdef CONFIG_MADWIFI_HAL_I386_ELF
-    HAL_TARGET:=i386-elf
-  endif
-
-  ifdef CONFIG_MADWIFI_HAL_XSCALE_BE_ELF
-    HAL_TARGET:=xscale-be-elf
-  endif
-
-  ifdef CONFIG_MADWIFI_HAL_XSCALE_LE_ELF
-    HAL_TARGET:=xscale-le-elf
-  endif
-
-  ifdef CONFIG_MADWIFI_HAL_ARMV4_LE_ELF
-    HAL_TARGET:=armv4-le-elf
-  endif
-
-  ifdef CONFIG_MADWIFI_HAL_AP30
-    HAL_TARGET:=ap30
-  endif
-
-  ifdef CONFIG_MADWIFI_HAL_AP43
-    HAL_TARGET:=ap43
-  endif
-
-  ifdef CONFIG_MADWIFI_HAL_AP51
-    HAL_TARGET:=ap51
-  endif
-
-  ifdef CONFIG_MADWIFI_HAL_AP61
-    HAL_TARGET:=ap61
-  endif
+# XXX: remove this check later when we have PCI support properly detected on all targets
+ifneq ($(CONFIG_TARGET_ar7)$(CONFIG_TARGET_uml),)
+  BUS:=
+endif
 
+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),i686)
+  HAL_TARGET:=i386-elf
+endif
+ifeq ($(BOARD),ixp4xx)
+  HAL_TARGET:=xscale-be-elf
+endif
+ifeq ($(BOARD),iop32x)
+  HAL_TARGET:=xscale-le-elf
+endif
+ifeq ($(ARCH),powerpc)
+  HAL_TARGET:=powerpc-be-elf
+endif
+ifeq ($(BOARD),storm)
+  HAL_TARGET:=armv4-le-elf
+endif
+ifneq ($(CONFIG_TARGET_atheros),)
+  HAL_TARGET:=wisoc
 endif
 
 ifdef CONFIG_MADWIFI_RCA_MINSTREL
@@ -206,10 +153,10 @@ MAKE_ARGS:= \
        ATH_RATE="ath_rate/$(RATE_CONTROL)" \
        WARNINGS="-Wno-unused" \
        $(if $(CONFIG_MADWIFI_DEBUG),,DEBUG="") \
-       DOMULTI=1
+       DO_MULTI=1
 
 MAKE_VARS:= \
-       COPTS="-DCONFIG_ATHEROS_RATE_DEFAULT='\"$(RATE_CONTROL)\"'" \
+       COPTS="-DCONFIG_ATHEROS_RATE_DEFAULT='\"$(RATE_CONTROL)\"' -DATH_REVERSE_ENGINEERING=1" \
 
 HALFILE:=$(lastword $(sort $(wildcard ./ath_hal-*.tgz)))
 ifneq ($(HALFILE),)
@@ -220,6 +167,12 @@ ifneq ($(HALFILE),)
        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
+       # patch cflags
+       $(SED) 's, -E[LB],,' \
+               -e 's, -mapcs-32,,' \
+               $(PKG_BUILD_DIR)/hal/public/*.inc
+       $(SED) 's,march=armv4,march=armv5te,' \
+               $(PKG_BUILD_DIR)/hal/public/xscale*.inc
   endef
 endif
 
diff --git a/package/madwifi/ath_hal-20080528.tgz b/package/madwifi/ath_hal-20080528.tgz
new file mode 100644 (file)
index 0000000..3f077f6
Binary files /dev/null and b/package/madwifi/ath_hal-20080528.tgz differ
diff --git a/package/madwifi/patches/100-kernel_cflags.patch b/package/madwifi/patches/100-kernel_cflags.patch
deleted file mode 100644 (file)
index 9c82d6e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-Index: madwifi-trunk-r3314/hal/public/mips-be-elf.inc
-===================================================================
---- madwifi-trunk-r3314.orig/hal/public/mips-be-elf.inc        2008-02-20 18:10:46.339155111 +0100
-+++ madwifi-trunk-r3314/hal/public/mips-be-elf.inc     2008-02-20 18:10:46.439160810 +0100
-@@ -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
-Index: madwifi-trunk-r3314/hal/public/mips-le-elf.inc
-===================================================================
---- madwifi-trunk-r3314.orig/hal/public/mips-le-elf.inc        2008-02-20 18:10:46.347155567 +0100
-+++ madwifi-trunk-r3314/hal/public/mips-le-elf.inc     2008-02-20 18:10:46.443161036 +0100
-@@ -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
-Index: madwifi-trunk-r3314/hal/public/xscale-be-elf.inc
-===================================================================
---- madwifi-trunk-r3314.orig/hal/public/xscale-be-elf.inc      2008-02-20 18:10:46.351155793 +0100
-+++ madwifi-trunk-r3314/hal/public/xscale-be-elf.inc   2008-02-20 18:10:46.451161492 +0100
-@@ -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 -mbig-endian -fno-strict-aliasing -fno-common  \
-       -mtune=xscale  -mshort-load-bytes
-Index: madwifi-trunk-r3314/hal/public/xscale-le-elf.inc
-===================================================================
---- madwifi-trunk-r3314.orig/hal/public/xscale-le-elf.inc      2008-02-20 18:10:46.363156477 +0100
-+++ madwifi-trunk-r3314/hal/public/xscale-le-elf.inc   2008-02-20 18:10:46.455161721 +0100
-@@ -79,4 +79,4 @@
- LDOPTS=       -EL
- COPTS+=       -DAH_BYTE_ORDER=AH_LITTLE_ENDIAN
- COPTS+= -march=armv4 -mlittle-endian -fno-strict-aliasing -fno-common \
--      -mapcs-32 -mtune=xscale  -mshort-load-bytes
-+      -mtune=xscale  -mshort-load-bytes
diff --git a/package/madwifi/patches/328-ani_stuff.patch b/package/madwifi/patches/328-ani_stuff.patch
deleted file mode 100644 (file)
index 32fa89d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: madwifi-trunk-r3314/ath/if_ath.c
-===================================================================
---- madwifi-trunk-r3314.orig/ath/if_ath.c      2008-03-07 00:38:26.748463672 +0100
-+++ madwifi-trunk-r3314/ath/if_ath.c   2008-03-07 00:38:51.285861974 +0100
-@@ -6753,8 +6753,9 @@
-       dev->quota -= processed;
- #endif
--      /* rx signal state monitoring */
--      ath_hal_rxmonitor(ah, &sc->sc_halstats, &sc->sc_curchan);
-+      /* rx signal state monitoring, only necessary/applicable for sta mode */
-+      if (sc->sc_opmode == HAL_M_STA)
-+              ath_hal_rxmonitor(ah, &sc->sc_halstats, &sc->sc_curchan);
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
-       return processed;
- #else
diff --git a/package/madwifi/patches/349-reset.patch b/package/madwifi/patches/349-reset.patch
new file mode 100644 (file)
index 0000000..9c80140
--- /dev/null
@@ -0,0 +1,23 @@
+Index: madwifi-trunk-r3314/ath/if_ath.c
+===================================================================
+--- madwifi-trunk-r3314.orig/ath/if_ath.c      2008-04-09 02:58:41.000000000 +0200
++++ madwifi-trunk-r3314/ath/if_ath.c   2008-04-09 02:59:40.000000000 +0200
+@@ -2479,7 +2479,7 @@
+        */
+       sc->sc_curchan.channel = ic->ic_curchan->ic_freq;
+       sc->sc_curchan.channelFlags = ath_chan2flags(ic->ic_curchan);
+-      if (!ath_hal_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_FALSE, &status)) {
++      if (!ath_hal_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_TRUE, &status)) {
+               EPRINTF(sc, "unable to reset hardware: '%s' (HAL status %u) "
+                       "(freq %u flags 0x%x)\n", 
+                       ath_get_hal_status_desc(status), status,
+@@ -8865,8 +8865,7 @@
+                * needed to do the reset with chanchange = AH_FALSE in order
+                * to receive traffic when peforming high velocity channel
+                * changes. */
+-              if (!ath_hal_reset(ah, sc->sc_opmode, &hchan, AH_TRUE, &status)   ||
+-                  !ath_hal_reset(ah, sc->sc_opmode, &hchan, AH_FALSE, &status)) {
++              if (!ath_hal_reset(ah, sc->sc_opmode, &hchan, AH_TRUE, &status)) {
+                       EPRINTF(sc, "Unable to reset channel %u (%u MHz) "
+                               "flags 0x%x '%s' (HAL status %u)\n",
+                               ieee80211_chan2ieee(ic, chan), chan->ic_freq,
diff --git a/package/madwifi/patches/350-wisoc_softled.patch b/package/madwifi/patches/350-wisoc_softled.patch
new file mode 100644 (file)
index 0000000..d22ee60
--- /dev/null
@@ -0,0 +1,13 @@
+Index: madwifi-trunk-r3314/ath/if_ath_ahb.c
+===================================================================
+--- madwifi-trunk-r3314.orig/ath/if_ath_ahb.c  2008-03-07 11:40:44.967178082 +0100
++++ madwifi-trunk-r3314/ath/if_ath_ahb.c       2008-03-07 11:40:47.763337418 +0100
+@@ -245,6 +245,8 @@
+       num_activesc++;
+       /* Ready to process interrupts */
++      sc->aps_sc.sc_softled = 1; /* SoftLED over GPIO */
++      sc->aps_sc.sc_ledpin = config->board->sysLedGpio;
+       sc->aps_sc.sc_invalid = 0;
+       return 0;