Axel Gembe wrote:
> This patch adds a number of configuration options to the MadWifi package. You 
> can
> now configure the HAL, bus, default rate control algorithm as well as the 
> debug
> mode from within make menuconfig. The goal is to be able to support hardware
> profiles with different HALs without messing around with the Makefile 
> directly.
> 
> Signed-off-by: Axel Gembe <[EMAIL PROTECTED]>
> ---
>  package/madwifi/Config.in |  152 
> +++++++++++++++++++++++++++++++++++++++++++++
>  package/madwifi/Makefile  |  144 ++++++++++++++++++++++++++++++++----------
>  2 files changed, 261 insertions(+), 35 deletions(-)
>  create mode 100644 package/madwifi/Config.in
> 
> diff --git a/package/madwifi/Config.in b/package/madwifi/Config.in
> new file mode 100644
> index 0000000..d2bc4e0
> --- /dev/null
> +++ b/package/madwifi/Config.in
> @@ -0,0 +1,152 @@
> +# MadWifi configuration
> +
> +config MADWIFI_DEBUG
> +     bool "Enable compilation of debugging features"
> +     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
> +     prompt "Rate control algorithm selection"
> +     default MADWIFI_RCA_MINSTREL
> +     help
> +       This option controls how MadWifi chooses its bitrate.
> +
> +config MADWIFI_RCA_MINSTREL
> +     bool "Use the Minstrel rate control algorithm"
> +     help
> +       This code is takes a wandering minstrel approach. Wander around the
> +       different rates, singing wherever you can. And then, look at the
> +       performance, and make a choice. Note that the wandering minstrel will
> +       always wander in directions where he/she feels he/she will get paid
> +       the best for his/her work.
> +
> +config MADWIFI_RCA_ONOE
> +     bool "Use the Onoe rate control algorithm"
> +     help
> +       Onoe is a credit based RCA where the value of the credit is determined
> +       by the frequency of successful, erroneous and retransmissions
> +       accumulated during a fixed invocation period of 1000 ms. If less than
> +       10% of the packets need to be retransmitted at a particular rate, Onoe
> +       keeps increasing its credit point till the threshold value of 10 is
> +       reached. At this point, the current transmission rate is increased to
> +       the next available higher rate and the process repeated with credit
> +       score of zero. Similar logic holds for deducting the credit score and
> +       moving to a lower bit-rate for failed packet
> +       transmission/retransmission attempts. However, once a bit-rate has
> +       been marked as failure in the previous attempt, Onoe will not attempt
> +       to select that bit-rate until 10 seconds have elapsed since the last
> +       attempt. Due to the manner in which it operates, Onoe is conservative
> +       in rate selection and is less sensitive to individual packet failure.
> +
> +config MADWIFI_RCA_AMRR
> +     bool "Use the AMRR rate control algorithm"
> +     help
> +       AMRR uses Binary Exponential Backoff (BEB) technique to adapt the
> +       length (threshold) of the sampling period used to change the values of
> +       bit-rate and transmission count parameters. It uses probe packets and
> +       depending on their transmission status adaptively changes the 
> threshold
> +       value. The adaptation mechanism ensures fewer failed
> +       transmission/retransmission and higher throughput by not switching to 
> a
> +       higher rate as specified by the backoff mechanism. In addition to 
> this,
> +       the AMRR employs heuristics to capture the short-term variations of 
> the
> +       channel by judiciously setting the rate and transmission count
> +       parameters.
> +
> +config MADWIFI_RCA_SAMPLERATE
> +     bool "Use the SampleRate rate control algorithm"
> +     help
> +       SampleRate decides on the transmission bit-rate based on the past
> +       history of performance; it keeps a record of the number of successive
> +       failures, the number of successful transmits and the total 
> transmission
> +       time along with the destination for that bit-rate. Stale samples are
> +       removed based on a EWMA windowing mechanism. If in the sampling
> +       process, no successful acknowledgment is received or the number of
> +       packets sent is multiple of 10 on a specific link, it transmits the
> +       packet with the highest rate which has not failed 4 successive times.
> +       Other than that it transmits packets at the rate which has the lowest
> +       average transmission time.
> +
> +endchoice
> diff --git a/package/madwifi/Makefile b/package/madwifi/Makefile
> index 697f2b6..ef83702 100644
> --- a/package/madwifi/Makefile
> +++ b/package/madwifi/Makefile
> @@ -25,48 +25,115 @@ PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if 
> $(PKG_BRANCH),$(PKG_BRANCH),madwifi-trun
>  
>  include $(INCLUDE_DIR)/package.mk
>  
> -# MADWIFI_DEBUG=1
> +ifdef CONFIG_MADWIFI_BUS_DEFAULT
> +  ifneq ($(CONFIG_TARGET_atheros),)
> +    BUS:=AHB
> +  else
> +    ifneq ($(CONFIG_PCI_SUPPORT),)
> +      BUS:=PCI
> +    endif
> +  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
> +  # XXX: remove this check later when we have PCI support properly detected 
> on all targets
> +  ifneq ($(CONFIG_TARGET_ar7)$(CONFIG_TARGET_uml),)
> +    BUS:=
> +  endif
> +else
> +  ifdef CONFIG_MADWIFI_BUS_PCI
> +    BUS:=PCI
> +  else
> +    ifdef CONFIG_MADWIFI_BUS_AHB
> +      BUS:=AHB
> +    endif
> +  endif
>  endif
>  
> -ifneq ($(CONFIG_TARGET_atheros),)
> -  BUS:=AHB
> -  HAL_TARGET:=ap51
> +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
> -  ifneq ($(CONFIG_PCI_SUPPORT),)
> -    BUS:=PCI
> +  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
> +
> +endif
> +
> +ifdef CONFIG_MADWIFI_RCA_MINSTREL
> +  RATE_CONTROL:=minstrel
> +endif
> +
> +ifdef CONFIG_MADWIFI_RCA_ONOE
> +  RATE_CONTROL:=onoe
>  endif
>  
> -# XXX: remove this check later when we have PCI support properly detected on 
> all targets
> -ifneq ($(CONFIG_TARGET_ar7)$(CONFIG_TARGET_uml),)
> - BUS:=
> +ifdef CONFIG_MADWIFI_RCA_AMRR
> +  RATE_CONTROL:=amrr
>  endif
>  
> -RATE_CONTROL:=minstrel
> +ifdef CONFIG_MADWIFI_RCA_SAMPLERATE
> +  RATE_CONTROL:=sample
> +endif
>  
>  MADWIFI_FILES:= \
>       $(PKG_BUILD_DIR)/net80211/wlan.$(LINUX_KMOD_SUFFIX) \
> @@ -102,7 +169,7 @@ ifeq ($(findstring PCI,$(BUS)),PCI)
>  endif
>  
>  MADWIFI_APPLETS:=80211stats,athchans,athctrl,athkey,athstats,wlanconfig
> -ifneq ($(MADWIFI_DEBUG),)
> +ifdef CONFIG_MADWIFI_DEBUG
>    MADWIFI_APPLETS:=$(strip $(MADWIFI_APPLETS)),athdebug,80211debug
>  endif
>  
> @@ -120,6 +187,13 @@ define KernelPackage/madwifi/description
>   This package contains a driver for Atheros 802.11a/b/g chipsets.
>  endef
>  
> +define KernelPackage/madwifi/config
> +     menu "MadWifi Configuration"
> +             depends on PACKAGE_kmod-madwifi
> +             source "$(SOURCE)/Config.in"
> +     endmenu
> +endef
> +
>  MAKE_ARGS:= \
>       PATH="$(TARGET_PATH)" \
>       ARCH="$(LINUX_KARCH)" \
> @@ -131,7 +205,7 @@ MAKE_ARGS:= \
>       LDOPTS="--no-warn-mismatch " \
>       ATH_RATE="ath_rate/$(RATE_CONTROL)" \
>       WARNINGS="-Wno-unused" \
> -     $(if $(MADWIFI_DEBUG),,DEBUG="") \
> +     $(ifndef CONFIG_MADWIFI_DEBUG,DEBUG="") \
>       DOMULTI=1
>  
>  MAKE_VARS:= \
Committed in r11140. Thanks

Travis
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to