Changeset 13708


Ignore:
Timestamp:
2008-12-21T18:12:53+01:00 (9 years ago)
Author:
nbd
Message:

sync 8.09 with some changes from trunk

Location:
branches/8.09
Files:
13 added
104 deleted
110 edited

Legend:

Unmodified
Added
Removed
  • branches/8.09/Makefile

    r12322 r13708  
    5454 
    5555dirclean: clean 
    56         rm -rf $(STAGING_DIR) $(STAGING_DIR_HOST) $(STAGING_DIR_TOOLCHAIN) $(TOOLCHAIN_DIR) $(BUILD_DIR_HOST) 
     56        rm -rf $(STAGING_DIR) $(STAGING_DIR_HOST) $(STAGING_DIR_TOOLCHAIN) $(TOOLCHAIN_DIR) $(BUILD_DIR_HOST) $(BUILD_DIR_TOOLCHAIN) 
    5757        rm -rf $(TMP_DIR) 
    5858 
  • branches/8.09/include/host-build.mk

    r9063 r13708  
    11#  
    2 # Copyright (C) 2006-2007 OpenWrt.org 
     2# Copyright (C) 2006-2008 OpenWrt.org 
    33# 
    44# This is free software, licensed under the GNU General Public License v2. 
     
    8383  URL:=$(PKG_SOURCE_URL) 
    8484  PROTO:=$(PKG_SOURCE_PROTO) 
     85  SUBDIR:=$(PKG_SOURCE_SUBDIR) 
    8586  VERSION:=$(PKG_SOURCE_VERSION) 
    8687  MD5SUM:=$(PKG_MD5SUM) 
  • branches/8.09/include/package-ipkg.mk

    r13052 r13708  
    7373                echo "Maintainer: $(MAINTAINER)"; \ 
    7474                echo "Architecture: $(PKGARCH)"; \ 
     75                echo "Installed-Size: 1"; \ 
    7576                echo -n "Description: "; getvar $(call shvar,Package/$(1)/description) | sed -e 's,^[[:space:]]*, ,g'; \ 
    7677        ) >> $$(IDIR_$(1))/CONTROL/control 
     
    8586        -find $$(IDIR_$(1)) -name 'CVS' -o -name '.svn' -o -name '.#*' | $(XARGS) rm -rf 
    8687        $(RSTRIP) $$(IDIR_$(1)) 
     88        SIZE=`cd $$(IDIR_$(1)); du -bs --exclude=./CONTROL . 2>/dev/null | cut -f1`; \ 
     89        $(SED) "s|^\(Installed-Size:\).*|\1 $$$$SIZE|g" $$(IDIR_$(1))/CONTROL/control 
    8790        $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR) 
    8891        @[ -f $$(IPKG_$(1)) ] || false  
  • branches/8.09/include/site/arm-linux

    r12229 r13708  
    2424ac_cv_sizeof_unsigned_int=4 
    2525ac_cv_sizeof_unsigned_long=4 
     26ac_cv_sizeof_unsigned_long_long=8 
    2627ac_cv_sizeof_unsigned_short=2 
    2728ac_cv_sizeof_void_p=4 
  • branches/8.09/include/site/armeb-linux

    r12229 r13708  
    2424ac_cv_sizeof_unsigned_int=4 
    2525ac_cv_sizeof_unsigned_long=4 
     26ac_cv_sizeof_unsigned_long_long=8 
    2627ac_cv_sizeof_unsigned_short=2 
    2728ac_cv_sizeof_void_p=4 
  • branches/8.09/include/site/avr32-linux

    r12229 r13708  
    2424ac_cv_sizeof_unsigned_int=4 
    2525ac_cv_sizeof_unsigned_long=4 
     26ac_cv_sizeof_unsigned_long_long=8 
    2627ac_cv_sizeof_unsigned_short=2 
    2728ac_cv_sizeof_void_p=4 
  • branches/8.09/include/site/cris-linux

    r12773 r13708  
    2424ac_cv_sizeof_unsigned_int=4 
    2525ac_cv_sizeof_unsigned_long=4 
     26ac_cv_sizeof_unsigned_long_long=8 
    2627ac_cv_sizeof_unsigned_short=2 
    2728ac_cv_sizeof_void_p=4 
  • branches/8.09/include/site/i386-linux

    r12229 r13708  
    2424ac_cv_sizeof_unsigned_int=4 
    2525ac_cv_sizeof_unsigned_long=4 
     26ac_cv_sizeof_unsigned_long_long=8 
    2627ac_cv_sizeof_unsigned_short=2 
    2728ac_cv_sizeof_void_p=4 
  • branches/8.09/include/site/i686-linux

    r12229 r13708  
    2424ac_cv_sizeof_unsigned_int=4 
    2525ac_cv_sizeof_unsigned_long=4 
     26ac_cv_sizeof_unsigned_long_long=8 
    2627ac_cv_sizeof_unsigned_short=2 
    2728ac_cv_sizeof_void_p=4 
  • branches/8.09/include/site/mips-linux

    r12229 r13708  
    2424ac_cv_sizeof_unsigned_int=4 
    2525ac_cv_sizeof_unsigned_long=4 
     26ac_cv_sizeof_unsigned_long_long=8 
    2627ac_cv_sizeof_unsigned_short=2 
    2728ac_cv_sizeof_void_p=4 
  • branches/8.09/include/site/mipsel-linux

    r12229 r13708  
    2424ac_cv_sizeof_unsigned_int=4 
    2525ac_cv_sizeof_unsigned_long=4 
     26ac_cv_sizeof_unsigned_long_long=8 
    2627ac_cv_sizeof_unsigned_short=2 
    2728ac_cv_sizeof_void_p=4 
  • branches/8.09/include/site/powerpc-linux

    r12229 r13708  
    2424ac_cv_sizeof_unsigned_int=4 
    2525ac_cv_sizeof_unsigned_long=4 
     26ac_cv_sizeof_unsigned_long_long=8 
    2627ac_cv_sizeof_unsigned_short=2 
    2728ac_cv_sizeof_void_p=4 
  • branches/8.09/include/site/x86_64-linux

    r12229 r13708  
    2424ac_cv_sizeof_unsigned_int=4 
    2525ac_cv_sizeof_unsigned_long=8 
     26ac_cv_sizeof_unsigned_long_long=8 
    2627ac_cv_sizeof_unsigned_short=2 
    2728ac_cv_sizeof_void_p=4 
  • branches/8.09/package/dnsmasq/Makefile

    r11888 r13708  
    1010 
    1111PKG_NAME:=dnsmasq 
    12 PKG_VERSION:=2.45 
     12PKG_VERSION:=2.46 
    1313PKG_RELEASE:=1 
    1414 
    1515PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz 
    1616PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq 
    17 PKG_MD5SUM:=b7956e15c9766e05b3eca3ce88fdb616 
     17PKG_MD5SUM:=79ec740d1a10ee75f13efa4ff36d0250 
    1818 
    1919include $(INCLUDE_DIR)/package.mk 
  • branches/8.09/package/e2fsprogs/Makefile

    r11554 r13708  
    2828  CATEGORY:=Utilities 
    2929  TITLE:=Ext2/3 filesystem utilities 
    30   DEPENDS:=+libblkid +libuuid 
     30  DEPENDS:=+libblkid +libuuid +libext2fs 
    3131endef 
    3232 
     
    7171 The blkid library which allows system programs like fsck and mount to  
    7272 quickly and easily find block devices by filesystem UUID and LABEL. 
     73endef 
     74 
     75define Package/libext2fs 
     76$(call Package/e2fsprogs/Default) 
     77  SECTION:=libs 
     78  CATEGORY:=Libraries 
     79  TITLE:=ext2/ext3 filesystem library 
     80endef 
     81 
     82define Package/libext2fs/description 
     83libext2fs is a library which can access ext2 and ext3 filesystems. 
    7384endef 
    7485 
     
    122133                DESTDIR="$(1)" \ 
    123134                install-libs 
     135        $(MAKE) -C $(PKG_BUILD_DIR)/lib/ext2fs \ 
     136                BUILDCC="$(HOSTCC)" \ 
     137                DESTDIR="$(1)" \ 
     138                install 
    124139endef 
    125140 
     
    131146        ln -sf mke2fs $(1)/usr/sbin/mkfs.ext3 
    132147        $(INSTALL_DIR) $(1)/usr/lib 
    133         $(CP) $(foreach lib,com_err e2p ext2fs,$(PKG_INSTALL_DIR)/usr/lib/lib$(lib).so.*) $(1)/usr/lib/ 
     148        $(CP) $(foreach lib,com_err e2p,$(PKG_INSTALL_DIR)/usr/lib/lib$(lib).so.*) $(1)/usr/lib/ 
    134149endef 
    135150 
     
    147162        $(INSTALL_DIR) $(1)/usr/lib 
    148163        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libblkid.so.* $(1)/usr/lib/ 
     164endef 
     165 
     166define Package/libext2fs/install 
     167        $(INSTALL_DIR) $(1)/usr/lib 
     168        $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libext2fs.so* $(1)/usr/lib/ 
    149169endef 
    150170 
     
    168188$(eval $(call BuildPackage,uuidgen)) 
    169189$(eval $(call BuildPackage,libblkid)) 
     190$(eval $(call BuildPackage,libext2fs)) 
    170191$(eval $(call BuildPackage,tune2fs)) 
    171192$(eval $(call BuildPackage,resize2fs)) 
  • branches/8.09/package/hostapd/Makefile

    r12826 r13708  
    1 #  
    2 # Copyright (C) 2006 OpenWrt.org 
     1# 
     2# Copyright (C) 2006-2008 OpenWrt.org 
    33# 
    44# This is free software, licensed under the GNU General Public License v2. 
     
    1010 
    1111PKG_NAME:=hostapd 
    12 PKG_VERSION:=0.6.4 
     12PKG_VERSION:=0.6.6 
    1313PKG_RELEASE:=1 
    1414 
     
    1717PKG_SOURCE_SUBDIR:=hostapd-$(PKG_VERSION) 
    1818PKG_SOURCE_VERSION:=$(PKG_REV) 
    19 PKG_MD5SUM:=62876f2179f316db0621cc33adf04c19 
     19PKG_MD5SUM:=cba36847d38c753731afefe1460f5f90 
    2020PKG_BUILD_DEPENDS:=PACKAGE_kmod-madwifi:madwifi PACKAGE_kmod-mac80211:mac80211 PACKAGE_kmod-mac80211:libnl 
    2121 
  • branches/8.09/package/hostapd/patches/100-madwifi_fix.patch

    r13077 r13708  
    11--- a/hostapd/driver_madwifi.c 
    22+++ b/hostapd/driver_madwifi.c 
    3 @@ -298,6 +298,7 @@ madwifi_set_iface_flags(void *priv, int  
     3@@ -299,6 +299,7 @@ madwifi_set_iface_flags(void *priv, int  
    44 { 
    55        struct madwifi_driver_data *drv = priv; 
     
    99        wpa_printf(MSG_DEBUG, "%s: dev_up=%d", __func__, dev_up); 
    1010  
    11 @@ -312,10 +313,14 @@ madwifi_set_iface_flags(void *priv, int  
     11@@ -313,10 +314,14 @@ madwifi_set_iface_flags(void *priv, int  
    1212                return -1; 
    1313        } 
  • branches/8.09/package/madwifi/Config.in

    r13014 r13708  
    33config MADWIFI_DEBUG 
    44        bool "Enable compilation of debugging features" 
    5         depends on EXPERIMENTAL && PACKAGE_kmod-madwifi 
     5        depends on DEVEL && PACKAGE_kmod-madwifi 
    66        default n 
    77 
  • branches/8.09/package/madwifi/patches/102-multicall_binary.patch

    r12541 r13708  
    99 #undef ARRAY_SIZE 
    1010 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) 
    11 @@ -185,7 +186,7 @@ 
     11@@ -185,7 +186,7 @@ sysctlbyname(const char *oid0, void *old 
    1212 #endif /* __linux__ */ 
    1313  
     
    2828 #ifndef SIOCG80211STATS 
    2929 #define        SIOCG80211STATS (SIOCDEVPRIVATE + 2) 
    30 @@ -240,7 +241,7 @@ 
     30@@ -240,7 +241,7 @@ print_sta_stats(FILE *fd, const u_int8_t 
    3131 } 
    3232  
     
    4747 static int s = -1; 
    4848 static const char *progname; 
    49 @@ -140,8 +141,9 @@ 
     49@@ -140,8 +141,9 @@ usage(void) 
    5050 } 
    5151  
     
    6868 static int 
    6969 setsysctrl(const char *dev, const char *control , u_long value) 
    70 @@ -88,7 +89,7 @@ 
     70@@ -88,7 +89,7 @@ static void usage(void) 
    7171 } 
    7272  
     
    8787 #undef ARRAY_SIZE 
    8888 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) 
    89 @@ -194,7 +195,7 @@ 
     89@@ -194,7 +195,7 @@ sysctlbyname(const char *oid0, void *old 
    9090 #endif /* __linux__ */ 
    9191  
     
    106106 static int s = -1; 
    107107 static const char *progname; 
    108 @@ -213,8 +214,7 @@ 
     108@@ -213,8 +214,7 @@ usage(void) 
    109109        exit(-1); 
    110110 } 
     
    126126 static const struct { 
    127127        u_int           phyerr; 
    128 @@ -228,7 +229,7 @@ 
     128@@ -228,7 +229,7 @@ catchalarm(int signo) 
    129129 } 
    130130  
     
    191191--- a/tools/Makefile 
    192192+++ b/tools/Makefile 
    193 @@ -46,56 +46,55 @@ 
     193@@ -46,56 +46,55 @@ ifeq ($(HAL),) 
    194194 HAL=   $(TOP)/hal 
    195195 endif 
     
    285285 /* 
    286286  * These are taken from ieee80211_node.h 
    287 @@ -100,7 +101,7 @@ 
     287@@ -100,7 +101,7 @@ size_t strlcat(char *, const char *, siz 
    288288 static int verbose = 0; 
    289289  
     
    304304 #undef ARRAY_SIZE 
    305305 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) 
    306 @@ -738,7 +739,8 @@ 
     306@@ -738,7 +739,8 @@ static void usage(const char *n) 
    307307                "unlawful radio transmissions!\n\n"); 
    308308 } 
  • branches/8.09/package/madwifi/patches/104-autocreate_none.patch

    r11351 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -516,7 +516,7 @@ 
     3@@ -516,7 +516,7 @@ ath_attach(u_int16_t devid, struct net_d 
    44        HAL_STATUS status; 
    55        int error = 0; 
  • branches/8.09/package/madwifi/patches/105-ratectl_attach.patch

    r11351 r13708  
    11--- a/net80211/ieee80211_rate.c 
    22+++ b/net80211/ieee80211_rate.c 
    3 @@ -100,8 +100,18 @@ 
     3@@ -100,8 +100,18 @@ struct ath_ratectrl *ieee80211_rate_atta 
    44                ieee80211_load_module(buf); 
    55  
  • branches/8.09/package/madwifi/patches/106-get_arch.patch

    r12574 r13708  
    11--- a/scripts/get_arch.mk 
    22+++ b/scripts/get_arch.mk 
    3 @@ -36,6 +36,13 @@ 
     3@@ -36,6 +36,13 @@ ifeq (,$(ARCH-y)) 
    44 $(Cannot determine ARCH) 
    55 endif 
  • branches/8.09/package/madwifi/patches/111-minstrel_crash.patch

    r11351 r13708  
    11--- a/ath_rate/minstrel/minstrel.c 
    22+++ b/ath_rate/minstrel/minstrel.c 
    3 @@ -393,6 +393,9 @@ 
     3@@ -393,6 +393,9 @@ ath_rate_get_mrr(struct ath_softc *sc, s 
    44                struct minstrel_node *sn = ATH_NODE_MINSTREL(an); 
    55                int rc1, rc2, rc3;         /* Index into the rate table, so for example, it is  0..11 */ 
  • branches/8.09/package/madwifi/patches/113-no_ibss_pwrsave.patch

    r11351 r13708  
    11--- a/net80211/ieee80211_scan.c 
    22+++ b/net80211/ieee80211_scan.c 
    3 @@ -291,7 +291,8 @@ 
     3@@ -291,7 +291,8 @@ scan_restart_pwrsav(unsigned long arg) 
    44        struct ieee80211com *ic = vap->iv_ic; 
    55        int delay; 
  • branches/8.09/package/madwifi/patches/122-replayfail_workaround.patch

    r11351 r13708  
    11--- a/net80211/ieee80211_linux.c 
    22+++ b/net80211/ieee80211_linux.c 
    3 @@ -331,6 +331,9 @@ 
     3@@ -331,6 +331,9 @@ ieee80211_notify_replay_failure(struct i 
    44                k->wk_cipher->ic_name, k->wk_keyix, 
    55                (unsigned long long)rsc); 
  • branches/8.09/package/madwifi/patches/123-ccmp_checks.patch

    r11351 r13708  
    11--- a/net80211/ieee80211_crypto_ccmp.c 
    22+++ b/net80211/ieee80211_crypto_ccmp.c 
    3 @@ -475,6 +475,9 @@ 
     3@@ -475,6 +475,9 @@ ccmp_encrypt(struct ieee80211_key *key,  
    44        uint8_t *mic, *pos; 
    55        u_int space; 
     
    1111  
    1212        skb = skb0; 
    13 @@ -589,6 +592,9 @@ 
     13@@ -589,6 +592,9 @@ ccmp_decrypt(struct ieee80211_key *key,  
    1414        uint8_t *pos, *mic; 
    1515        u_int space; 
  • branches/8.09/package/madwifi/patches/124-linux24_compat.patch

    r11351 r13708  
    11--- a/ath/if_athvar.h 
    22+++ b/ath/if_athvar.h 
    3 @@ -126,6 +126,11 @@ 
     3@@ -126,6 +126,11 @@ typedef void irqreturn_t; 
    44 #define ATH_GET_NETDEV_DEV(ndev)       ((ndev)->class_dev.dev) 
    55 #endif 
     
    3131--- a/ath/if_ath.c 
    3232+++ b/ath/if_ath.c 
    33 @@ -4705,6 +4705,46 @@ 
     33@@ -4705,6 +4705,46 @@ ath_beacon_setup(struct ath_softc *sc, s 
    3434 #undef USE_SHPREAMBLE 
    3535 } 
  • branches/8.09/package/madwifi/patches/126-rxerr_frames.patch

    r11351 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -6474,8 +6474,9 @@ 
     3@@ -6474,8 +6474,9 @@ ath_rx_tasklet(TQUEUE_ARG data) 
    44                        /* 
    55                         * Reject error frames if we have no vaps that 
  • branches/8.09/package/madwifi/patches/200-no_debug.patch

    r12839 r13708  
    99 #include "opt_ah.h" 
    1010  
    11 @@ -368,8 +367,10 @@ 
     11@@ -368,8 +367,10 @@ static unsigned int ath_get_dfs_cac_time 
    1212 static void ath_set_dfs_cac_time(struct ieee80211com *, unsigned int seconds); 
    1313  
     
    2121 static u_int32_t ath_set_clamped_maxtxpower(struct ath_softc *sc,  
    2222                u_int32_t new_clamped_maxtxpower); 
    23 @@ -520,9 +521,11 @@ 
     23@@ -520,9 +521,11 @@ ath_attach(u_int16_t devid, struct net_d 
    2424        u_int8_t csz; 
    2525  
     
    3333        /* Allocate space for dynamically determined maximum VAP count */ 
    3434        sc->sc_bslot =  
    35 @@ -1038,8 +1041,9 @@ 
     35@@ -1038,8 +1041,9 @@ ath_attach(u_int16_t devid, struct net_d 
    3636        ic->ic_vap_delete = ath_vap_delete; 
    3737  
     
    4444        ic->ic_get_dfs_testmode     = ath_get_dfs_testmode; 
    4545  
    46 @@ -1297,12 +1301,14 @@ 
     46@@ -1297,12 +1301,14 @@ ath_vap_create(struct ieee80211com *ic,  
    4747                /* If no default VAP debug flags are passed, allow a few to 
    4848                 * transfer down from the driver to new VAPs so we can have load 
     
    5959        ic->ic_debug = (sc->sc_default_ieee80211_debug & IEEE80211_MSG_IC); 
    6060  
    61 @@ -10496,9 +10502,11 @@ 
     61@@ -10496,9 +10502,11 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    6262                                /* XXX validate? */ 
    6363                                sc->sc_ledpin = val; 
     
    7171                        case ATH_TXANTENNA: 
    7272                                /* 
    73 @@ -10918,9 +10926,11 @@ 
     73@@ -10918,9 +10926,11 @@ ath_dynamic_sysctl_register(struct ath_s 
    7474        } 
    7575  
     
    8383        sc->sc_txintrperiod = ATH_TXQ_INTR_PERIOD; 
    8484 } 
    85 @@ -11762,6 +11772,7 @@ 
     85@@ -11762,6 +11772,7 @@ ath_test_radar(struct ieee80211com *ic) 
    8686 } 
    8787  
     
    9191 ath_dump_hal_map(struct ieee80211com *ic) 
    9292 { 
    93 @@ -11770,7 +11781,7 @@ 
     93@@ -11770,7 +11781,7 @@ ath_dump_hal_map(struct ieee80211com *ic 
    9494        ath_hal_dump_map(sc->sc_ah); 
    9595        return 0; 
     
    151151--- a/tools/do_multi.c 
    152152+++ b/tools/do_multi.c 
    153 @@ -10,16 +10,20 @@ 
     153@@ -10,16 +10,20 @@ main(int argc, char *argv[]) 
    154154  
    155155     progname = basename(argv[0]); 
     
    174174--- a/tools/Makefile 
    175175+++ b/tools/Makefile 
    176 @@ -48,6 +48,8 @@ 
     176@@ -48,6 +48,8 @@ endif 
    177177  
    178178 all: compile 
     
    183183        athdebug 80211debug wlanconfig ath_info 
    184184  
    185 @@ -55,7 +57,7 @@ 
     185@@ -55,7 +57,7 @@ OBJS= $(patsubst %,%.o,$(ALLPROGS)) 
    186186  
    187187 INCS=  -I. -I../ath -I$(HAL) -I$(TOP) -I$(ATH_HAL) 
     
    205205--- a/Makefile.inc 
    206206+++ b/Makefile.inc 
    207 @@ -148,7 +148,8 @@ 
     207@@ -148,7 +148,8 @@ ATH_RATE=   $(TOP)/ath_rate 
    208208 TOOLS=  $(TOP)/tools  
    209209  
     
    237237--- a/ath/if_ath_hal.h 
    238238+++ b/ath/if_ath_hal.h 
    239 @@ -1081,6 +1081,7 @@ 
     239@@ -1081,6 +1081,7 @@ static inline HAL_BOOL ath_hal_disable(s 
    240240  
    241241            tail -f /var/log/messages | sed -f hal_unmangle.sed  
     
    245245 { 
    246246 #ifdef CONFIG_KALLSYMS 
    247 @@ -1345,7 +1346,7 @@ 
     247@@ -1345,7 +1346,7 @@ static inline void ath_hal_dump_map(stru 
    248248 #endif                         /* #ifndef CONFIG_KALLSYMS */ 
    249249  
     
    256256--- a/net80211/ieee80211_var.h 
    257257+++ b/net80211/ieee80211_var.h 
    258 @@ -492,9 +492,10 @@ 
     258@@ -492,9 +492,10 @@ struct ieee80211com { 
    259259        /* inject a fake radar signal -- used while on a 802.11h DFS channels */ 
    260260        unsigned int (*ic_test_radar)(struct ieee80211com *); 
     
    270270--- a/net80211/ieee80211_wireless.c 
    271271+++ b/net80211/ieee80211_wireless.c 
    272 @@ -1548,6 +1548,7 @@ 
     272@@ -1548,6 +1548,7 @@ ieee80211_get_txcont_power(struct net_de 
    273273        return 0; 
    274274 } 
     
    278278 ieee80211_ioctl_hal_map(struct net_device *dev, struct iw_request_info *info, 
    279279        void *w, char *extra) 
    280 @@ -1558,7 +1559,7 @@ 
     280@@ -1558,7 +1559,7 @@ ieee80211_ioctl_hal_map(struct net_devic 
    281281        params[0] = ic->ic_dump_hal_map(ic); 
    282282        return 0; 
     
    287287 static int 
    288288 ieee80211_ioctl_radar(struct net_device *dev, struct iw_request_info *info, 
    289 @@ -5258,8 +5259,10 @@ 
     289@@ -5258,8 +5259,10 @@ static const struct iw_priv_args ieee802 
    290290          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,   "getwmmparams" }, 
    291291        { IEEE80211_IOCTL_RADAR, 
     
    298298         * These depends on sub-ioctl support which added in version 12. 
    299299         */ 
    300 @@ -5695,7 +5698,9 @@ 
     300@@ -5695,7 +5698,9 @@ static const iw_handler ieee80211_priv_h 
    301301        set_priv(IEEE80211_IOCTL_SETMLME, ieee80211_ioctl_setmlme), 
    302302        set_priv(IEEE80211_IOCTL_SETKEY, ieee80211_ioctl_setkey), 
     
    310310--- a/ath/if_ath_debug.h 
    311311+++ b/ath/if_ath_debug.h 
    312 @@ -54,6 +54,10 @@ 
     312@@ -54,6 +54,10 @@ enum { 
    313313        ATH_DEBUG_GLOBAL        = (ATH_DEBUG_SKB|ATH_DEBUG_SKB_REF) 
    314314 }; 
     
    321321  
    322322 /* DEBUG-ONLY DEFINITIONS */ 
    323 @@ -68,20 +72,9 @@ 
     323@@ -68,20 +72,9 @@ enum { 
    324324                ath_keyprint((_sc), __func__, _ix, _hk, _mac);          \ 
    325325 } while (0) 
     
    342342                printk(KERN_WARNING "%s: %s: " _fmt, \ 
    343343                        SC_DEV_NAME(_sc), __func__, ## __VA_ARGS__) 
    344 @@ -89,5 +82,14 @@ 
     344@@ -89,5 +82,14 @@ enum { 
    345345 #define        IPRINTF(_sc, _fmt, ...) \ 
    346346                printk(KERN_INFO "%s: %s: " _fmt, \ 
     
    359359--- a/net80211/ieee80211_node.c 
    360360+++ b/net80211/ieee80211_node.c 
    361 @@ -920,6 +920,9 @@ 
     361@@ -920,6 +920,9 @@ node_cleanup(struct ieee80211_node *ni) 
    362362        ni->ni_rxkeyoff = 0; 
    363363 } 
     
    369369                u_int32_t flags, 
    370370                int show_counter,  
    371 @@ -972,7 +975,7 @@ 
     371@@ -972,7 +975,7 @@ static void node_print_message( 
    372372                        adjusted_refcount); 
    373373        va_end(args); 
     
    380380--- a/ath/if_ath_pci.c 
    381381+++ b/ath/if_ath_pci.c 
    382 @@ -134,8 +134,10 @@ 
     382@@ -134,8 +134,10 @@ ath_pci_probe(struct pci_dev *pdev, cons 
    383383        u16 vdevice; 
    384384        int i; 
     
    392392        /* XXX 32-bit addressing only */ 
    393393        if (pci_set_dma_mask(pdev, 0xffffffff)) { 
    394 @@ -244,8 +246,10 @@ 
     394@@ -244,8 +246,10 @@ ath_pci_probe(struct pci_dev *pdev, cons 
    395395                sc->aps_sc.sc_ledpin = 1; 
    396396        } 
  • branches/8.09/package/madwifi/patches/201-debug_fix.patch

    r11351 r13708  
    1010  
    1111 int    ath_hal_dma_beacon_response_time = 2;   /* in TUs */ 
    12 @@ -327,6 +327,8 @@ 
     12@@ -327,6 +327,8 @@ EXPORT_SYMBOL(OS_MARK); 
    1313  * useful for debugging and figuring out, which hal function sets which  
    1414  * registers */ 
  • branches/8.09/package/madwifi/patches/202-debug_variables.patch

    r11848 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -453,8 +453,8 @@ 
     3@@ -453,8 +453,8 @@ MODULE_PARM_DESC(autocreate, "Create ath 
    44 MODULE_PARM_DESC(ratectl, "Rate control algorithm [amrr|minstrel|onoe|sample], " 
    55                "defaults to '" DEF_RATE_CTL "'"); 
     
    1111 MODULE_PARM(ath_debug, "i"); 
    1212 #else 
    13 @@ -465,8 +465,8 @@ 
     13@@ -465,8 +465,8 @@ static void ath_printrxbuf(const struct  
    1414 static void ath_printtxbuf(const struct ath_buf *, int); 
    1515 #endif /* defined(AR_DEBUG) */ 
     
    2121 MODULE_PARM(ieee80211_debug, "i"); 
    2222 #else 
    23 @@ -1565,7 +1565,9 @@ 
     23@@ -1565,7 +1565,9 @@ ath_vap_delete(struct ieee80211vap *vap) 
    2424 void 
    2525 ath_suspend(struct net_device *dev) 
     
    3131        DPRINTF(sc, ATH_DEBUG_ANY, "flags=%x\n", dev->flags); 
    3232        ath_stop(dev); 
    33 @@ -1574,7 +1576,9 @@ 
     33@@ -1574,7 +1576,9 @@ ath_suspend(struct net_device *dev) 
    3434 void 
    3535 ath_resume(struct net_device *dev) 
     
    4141        DPRINTF(sc, ATH_DEBUG_ANY, "flags=%x\n", dev->flags); 
    4242        ath_init(dev); 
    43 @@ -4019,7 +4023,9 @@ 
     43@@ -4019,7 +4023,9 @@ static void 
    4444 ath_key_update_begin(struct ieee80211vap *vap) 
    4545 { 
     
    5151        DPRINTF(sc, ATH_DEBUG_KEYCACHE, "Begin\n"); 
    5252        /* 
    53 @@ -4040,7 +4046,9 @@ 
     53@@ -4040,7 +4046,9 @@ static void 
    5454 ath_key_update_end(struct ieee80211vap *vap) 
    5555 { 
     
    6161        DPRINTF(sc, ATH_DEBUG_KEYCACHE, "End\n"); 
    6262        netif_wake_queue(dev); 
    63 @@ -6218,7 +6226,9 @@ 
     63@@ -6218,7 +6226,9 @@ ath_recv_mgmt(struct ieee80211vap * vap, 
    6464        struct sk_buff *skb, int subtype, int rssi, u_int64_t rtsf) 
    6565 { 
     
    7171        u_int64_t hw_tsf, beacon_tsf; 
    7272        u_int32_t hw_tu, beacon_tu, intval; 
    73 @@ -8382,7 +8392,9 @@ 
     73@@ -8382,7 +8392,9 @@ ath_tx_timeout(struct net_device *dev) 
    7474 static void 
    7575 ath_tx_draintxq(struct ath_softc *sc, struct ath_txq *txq) 
     
    8181        /* 
    8282         * NB: this assumes output has been stopped and 
    83 @@ -11002,6 +11014,7 @@ 
     83@@ -11002,6 +11014,7 @@ ath_announce(struct net_device *dev) 
    8484                strncat(m, b, MLEN); 
    8585        } 
     
    8989                unsigned int i; 
    9090                for (i = 0; i <= WME_AC_VO; i++) { 
    91 @@ -11014,6 +11027,7 @@ 
     91@@ -11014,6 +11027,7 @@ ath_announce(struct net_device *dev) 
    9292                        sc->sc_cabq->axq_qnum); 
    9393                IPRINTF(sc, "Use hw queue %u for beacons\n", sc->sc_bhalq); 
     
    9999--- a/ath/if_ath_radar.c 
    100100+++ b/ath/if_ath_radar.c 
    101 @@ -156,7 +156,9 @@ 
     101@@ -156,7 +156,9 @@ static struct radar_pattern_specificatio 
    102102 #endif 
    103103 }; 
     
    109109 /* Returns true if radar detection is enabled. */ 
    110110 int ath_radar_is_enabled(struct ath_softc *sc) 
    111 @@ -229,7 +231,9 @@ 
     111@@ -229,7 +231,9 @@ int ath_radar_update(struct ath_softc *s 
    112112 { 
    113113  
     
    119119        int required = 0; 
    120120  
    121 @@ -366,6 +370,7 @@ 
     121@@ -366,6 +370,7 @@ static struct ath_rp *pulse_prev(struct  
    122122 #define MR_FAIL_MIN_PERIOD     4 
    123123 #define MR_FAIL_MAX_PERIOD     5 
     
    127127        switch (code) { 
    128128        case MR_MATCH: 
    129 @@ -384,6 +389,7 @@ 
     129@@ -384,6 +389,7 @@ static const char* get_match_result_desc 
    130130                return "unknown"; 
    131131        } 
     
    135135 static int32_t match_radar( 
    136136        u_int32_t matched,  
    137 @@ -775,7 +781,10 @@ 
     137@@ -775,7 +781,10 @@ static HAL_BOOL rp_analyse_short_pulse( 
    138138        struct ath_softc *sc, struct ath_rp *last_pulse,  
    139139        u_int32_t *index, u_int32_t *pri, u_int32_t *matching_pulses,  
     
    147147        int best_index = -1; 
    148148        unsigned int best_matched = 0; 
    149 @@ -1217,6 +1226,7 @@ 
     149@@ -1217,6 +1226,7 @@ static HAL_BOOL rp_analyse_short_pulse( 
    150150        return (-1 != best_index) ? AH_TRUE : AH_FALSE; 
    151151 } 
     
    155155 { 
    156156        /* Calculate BRI from PRI */ 
    157 @@ -1224,6 +1234,7 @@ 
     157@@ -1224,6 +1234,7 @@ static u_int32_t interval_to_frequency(u 
    158158        /* Round to nearest multiple of 50 */ 
    159159        return frequency + ((frequency % 50) >= 25 ? 50 : 0) - (frequency % 50); 
     
    163163 #ifdef ATH_RADAR_LONG_PULSE 
    164164 static const char* get_longpulse_desc(int lp) { 
    165 @@ -1580,7 +1591,9 @@ 
     165@@ -1580,7 +1591,9 @@ void ath_rp_done(struct ath_softc *sc) 
    166166 void ath_rp_record(struct ath_softc *sc, u_int64_t tsf, u_int8_t rssi,  
    167167                            u_int8_t width, HAL_BOOL is_simulated) 
     
    175175--- a/ath_rate/minstrel/minstrel.c 
    176176+++ b/ath_rate/minstrel/minstrel.c 
    177 @@ -931,7 +931,9 @@ 
     177@@ -931,7 +931,9 @@ ath_proc_read_nodes(struct ieee80211vap  
    178178                            (struct ieee80211_node_table *) &vap->iv_ic->ic_sta; 
    179179                unsigned int x = 0; 
     
    187187--- a/net80211/ieee80211_scan_ap.c 
    188188+++ b/net80211/ieee80211_scan_ap.c 
    189 @@ -731,6 +731,7 @@ 
     189@@ -731,6 +731,7 @@ pick_channel(struct ieee80211_scan_state 
    190190  
    191191        sort(chans, ss_last, sizeof(*chans), pc_cmp, pc_swap); 
     
    195195                int chan = ieee80211_chan2ieee(ic, chans[i].chan); 
    196196  
    197 @@ -742,6 +743,7 @@ 
     197@@ -742,6 +743,7 @@ pick_channel(struct ieee80211_scan_state 
    198198                                !!IEEE80211_ARE_CHANS_SAME_MODE(chans[i].chan,  
    199199                                        ic->ic_bsschan)); 
  • branches/8.09/package/madwifi/patches/300-napi_polling.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -184,7 +184,11 @@ 
     3@@ -184,7 +184,11 @@ static void ath_recv_mgmt(struct ieee802 
    44        struct sk_buff *, int, int, u_int64_t); 
    55 static void ath_setdefantenna(struct ath_softc *, u_int); 
     
    1414 static int ath_mgtstart(struct ieee80211com *, struct sk_buff *); 
    1515 #ifdef ATH_SUPERG_COMP 
    16 @@ -376,6 +380,9 @@ 
     16@@ -376,6 +380,9 @@ static u_int32_t ath_set_clamped_maxtxpo 
    1717                u_int32_t new_clamped_maxtxpower); 
    1818 static u_int32_t ath_get_real_maxtxpower(struct ath_softc *sc); 
     
    2424 static int ath_calinterval = ATH_SHORT_CALINTERVAL; 
    2525 static int ath_countrycode = CTRY_DEFAULT;     /* country code */ 
    26 @@ -547,7 +554,6 @@ 
     26@@ -547,7 +554,6 @@ ath_attach(u_int16_t devid, struct net_d 
    2727  
    2828        atomic_set(&sc->sc_txbuf_counter, 0); 
     
    3232        ATH_INIT_TQUEUE(&sc->sc_bmisstq,  ath_bmiss_tasklet,    dev); 
    3333        ATH_INIT_TQUEUE(&sc->sc_bstucktq, ath_bstuck_tasklet,   dev); 
    34 @@ -821,6 +827,12 @@ 
     34@@ -821,6 +827,12 @@ ath_attach(u_int16_t devid, struct net_d 
    3535        dev->set_mac_address = ath_set_mac_address; 
    3636        dev->change_mtu = ath_change_mtu; 
     
    4545        dev->hard_header_len += sizeof(struct ieee80211_qosframe) + 
    4646                                sizeof(struct llc) + 
    47 @@ -2220,6 +2232,7 @@ 
     47@@ -2220,6 +2232,7 @@ ath_intr(int irq, void *dev_id, struct p 
    4848                (status & HAL_INT_GLOBAL)       ? " HAL_INT_GLOBAL"     : "" 
    4949                ); 
     
    5353        /* As soon as we know we have a real interrupt we intend to service,  
    5454         * we will check to see if we need an initial hardware TSF reading.  
    55 @@ -2277,7 +2290,21 @@ 
     55@@ -2277,7 +2290,21 @@ ath_intr(int irq, void *dev_id, struct p 
    5656                } 
    5757                if (status & (HAL_INT_RX | HAL_INT_RXPHY)) { 
     
    7676                if (status & HAL_INT_TX) { 
    7777 #ifdef ATH_SUPERG_DYNTURBO 
    78 @@ -2303,6 +2330,11 @@ 
     78@@ -2303,6 +2330,11 @@ ath_intr(int irq, void *dev_id, struct p 
    7979                                } 
    8080                        } 
     
    8888                } 
    8989                if (status & HAL_INT_BMISS) { 
    90 @@ -2515,6 +2547,7 @@ 
     90@@ -2515,6 +2547,7 @@ ath_init(struct net_device *dev) 
    9191        if (sc->sc_tx99 != NULL) 
    9292                sc->sc_tx99->start(sc->sc_tx99); 
     
    9696 done: 
    9797        ATH_UNLOCK(sc); 
    98 @@ -2555,6 +2588,9 @@ 
     98@@ -2555,6 +2588,9 @@ ath_stop_locked(struct net_device *dev) 
    9999                if (sc->sc_tx99 != NULL) 
    100100                        sc->sc_tx99->stop(sc->sc_tx99); 
     
    106106                dev->flags &= ~IFF_RUNNING;     /* NB: avoid recursion */ 
    107107                ieee80211_stop_running(ic);     /* stop all VAPs */ 
    108 @@ -4013,12 +4049,47 @@ 
     108@@ -4013,12 +4049,47 @@ ath_key_set(struct ieee80211vap *vap, co 
    109109        return ath_keyset(sc, k, mac, vap->iv_bss); 
    110110 } 
     
    154154 ath_key_update_begin(struct ieee80211vap *vap) 
    155155 { 
    156 @@ -4032,14 +4103,9 @@ 
     156@@ -4032,14 +4103,9 @@ ath_key_update_begin(struct ieee80211vap 
    157157         * When called from the rx tasklet we cannot use 
    158158         * tasklet_disable because it will block waiting 
     
    171171  
    172172 static void 
    173 @@ -4051,9 +4117,9 @@ 
     173@@ -4051,9 +4117,9 @@ ath_key_update_end(struct ieee80211vap * 
    174174 #endif 
    175175  
     
    184184  
    185185 /* 
    186 @@ -6360,15 +6426,25 @@ 
     186@@ -6360,15 +6426,25 @@ ath_setdefantenna(struct ath_softc *sc,  
    187187        sc->sc_rxotherant = 0; 
    188188 } 
     
    214214        struct ath_hal *ah = sc ? sc->sc_ah : NULL; 
    215215        struct ath_desc *ds; 
    216 @@ -6378,8 +6454,10 @@ 
     216@@ -6378,8 +6454,10 @@ ath_rx_tasklet(TQUEUE_ARG data) 
    217217        unsigned int len; 
    218218        int type; 
     
    225225                bf = STAILQ_FIRST(&sc->sc_rxbuf); 
    226226                if (bf == NULL) {               /* XXX ??? can this happen */ 
    227 @@ -6403,6 +6481,15 @@ 
     227@@ -6403,6 +6481,15 @@ ath_rx_tasklet(TQUEUE_ARG data) 
    228228                        /* NB: never process the self-linked entry at the end */ 
    229229                        break; 
     
    241241                if (skb == NULL) { 
    242242                        EPRINTF(sc, "Dropping; buffer contains NULL skbuff.\n"); 
    243 @@ -6450,6 +6537,7 @@ 
     243@@ -6450,6 +6537,7 @@ ath_rx_tasklet(TQUEUE_ARG data) 
    244244                                sc->sc_stats.ast_rx_phyerr++; 
    245245                                phyerr = rs->rs_phyerr & 0x1f; 
     
    249249                        if (rs->rs_status & HAL_RXERR_DECRYPT) { 
    250250                                /* 
    251 @@ -6645,9 +6733,39 @@ 
     251@@ -6645,9 +6733,39 @@ rx_next: 
    252252                STAILQ_INSERT_TAIL(&sc->sc_rxbuf, bf, bf_list); 
    253253                ATH_RXBUF_UNLOCK_IRQ(sc); 
     
    289289 } 
    290290  
    291 @@ -8298,12 +8416,24 @@ 
     291@@ -8298,12 +8416,24 @@ ath_tx_tasklet_q0(TQUEUE_ARG data) 
    292292 { 
    293293        struct net_device *dev = (struct net_device *)data; 
     
    314314  
    315315        if (sc->sc_softled) 
    316 @@ -8319,7 +8449,9 @@ 
     316@@ -8319,7 +8449,9 @@ ath_tx_tasklet_q0123(TQUEUE_ARG data) 
    317317 { 
    318318        struct net_device *dev = (struct net_device *)data; 
     
    324324         * Process each active queue. 
    325325         */ 
    326 @@ -8340,6 +8472,16 @@ 
     326@@ -8340,6 +8472,16 @@ ath_tx_tasklet_q0123(TQUEUE_ARG data) 
    327327        if (sc->sc_uapsdq && txqactive(sc->sc_ah, sc->sc_uapsdq->axq_qnum)) 
    328328                ath_tx_processq(sc, sc->sc_uapsdq); 
     
    341341  
    342342        if (sc->sc_softled) 
    343 @@ -8355,13 +8497,25 @@ 
     343@@ -8355,13 +8497,25 @@ ath_tx_tasklet(TQUEUE_ARG data) 
    344344        struct net_device *dev = (struct net_device *)data; 
    345345        struct ath_softc *sc = dev->priv; 
     
    367367  
    368368        if (sc->sc_softled) 
    369 @@ -10296,9 +10450,9 @@ 
     369@@ -10296,9 +10450,9 @@ ath_change_mtu(struct net_device *dev, i 
    370370        dev->mtu = mtu; 
    371371        if ((dev->flags & IFF_RUNNING) && !sc->sc_invalid) { 
     
    392392  * Deduce if tasklets are available.  If not then 
    393393  * fall back to using the immediate work queue. 
    394 @@ -616,6 +620,9 @@ 
     394@@ -616,6 +620,9 @@ struct ath_rp { 
    395395 struct ath_softc { 
    396396        struct ieee80211com sc_ic;              /* NB: must be first */ 
     
    402402        struct semaphore sc_lock;               /* dev-level lock */ 
    403403        struct net_device_stats sc_devstats;    /* device statistics */ 
    404 @@ -730,7 +737,6 @@ 
     404@@ -730,7 +737,6 @@ struct ath_softc { 
    405405        struct ath_buf *sc_rxbufcur;            /* current rx buffer */ 
    406406        u_int32_t *sc_rxlink;                   /* link ptr in last RX desc */ 
     
    410410        u_int8_t sc_defant;                     /* current default antenna */ 
    411411        u_int8_t sc_rxotherant;                 /* RXs on non-default antenna */ 
    412 @@ -745,6 +751,7 @@ 
     412@@ -745,6 +751,7 @@ struct ath_softc { 
    413413        u_int sc_txintrperiod;                  /* tx interrupt batching */ 
    414414        struct ath_txq sc_txq[HAL_NUM_TX_QUEUES]; 
     
    418418        u_int8_t sc_grppoll_str[GRPPOLL_RATE_STR_LEN]; 
    419419        struct ath_descdma sc_bdma;             /* beacon descriptors */ 
    420 @@ -858,6 +865,8 @@ 
     420@@ -858,6 +865,8 @@ typedef void (*ath_callback) (struct ath 
    421421 #define        ATH_TXBUF_LOCK_CHECK(_sc) 
    422422 #endif 
     
    429429--- a/net80211/ieee80211_input.c 
    430430+++ b/net80211/ieee80211_input.c 
    431 @@ -1198,7 +1198,7 @@ 
     431@@ -1198,7 +1198,7 @@ ieee80211_deliver_data(struct ieee80211_ 
    432432                        /* attach vlan tag */ 
    433433                        struct ieee80211_node *ni_tmp = SKB_CB(skb)->ni; 
     
    438438                                if (ni_tmp != NULL) { 
    439439                                        /* node reference was leaked */ 
    440 @@ -1209,8 +1209,8 @@ 
     440@@ -1209,8 +1209,8 @@ ieee80211_deliver_data(struct ieee80211_ 
    441441                        skb = NULL; /* SKB is no longer ours */ 
    442442                } else { 
     
    449449                                if (ni_tmp != NULL) { 
    450450                                        /* node reference was leaked */ 
    451 @@ -2322,8 +2322,8 @@ 
     451@@ -2322,8 +2322,8 @@ forward_mgmt_to_app(struct ieee80211vap  
    452452                skb1->protocol = __constant_htons(0x0019);  /* ETH_P_80211_RAW */ 
    453453  
     
    462462--- a/net80211/ieee80211_monitor.c 
    463463+++ b/net80211/ieee80211_monitor.c 
    464 @@ -584,8 +584,8 @@ 
     464@@ -584,8 +584,8 @@ ieee80211_input_monitor(struct ieee80211 
    465465                        skb1->protocol =  
    466466                                __constant_htons(0x0019); /* ETH_P_80211_RAW */ 
     
    484484 #undef skb_clone 
    485485 #undef skb_copy 
    486 @@ -638,8 +638,8 @@ 
     486@@ -638,8 +638,8 @@ int  vlan_hwaccel_receive_skb_debug(stru 
    487487                grp, vlan_tag); 
    488488 } 
     
    495495  
    496496 struct sk_buff * alloc_skb_debug(unsigned int length, gfp_t gfp_mask, 
    497 @@ -760,7 +760,7 @@ 
     497@@ -760,7 +760,7 @@ struct sk_buff * skb_copy_expand_debug(c 
    498498 } 
    499499  
     
    506506--- a/net80211/ieee80211_skb.h 
    507507+++ b/net80211/ieee80211_skb.h 
    508 @@ -116,7 +116,7 @@ 
     508@@ -116,7 +116,7 @@ int ieee80211_skb_references(void); 
    509509 int  vlan_hwaccel_receive_skb_debug(struct sk_buff *skb,  
    510510                                    struct vlan_group *grp, unsigned short vlan_tag,  
     
    515515                                 const char *func, int line); 
    516516 struct sk_buff * dev_alloc_skb_debug(unsigned int length, 
    517 @@ -151,7 +151,7 @@ 
     517@@ -151,7 +151,7 @@ struct sk_buff * skb_copy_expand_debug(c 
    518518 #undef dev_queue_xmit 
    519519 #undef kfree_skb 
     
    524524 #undef skb_clone 
    525525 #undef skb_copy 
    526 @@ -168,8 +168,8 @@ 
     526@@ -168,8 +168,8 @@ struct sk_buff * skb_copy_expand_debug(c 
    527527        skb_copy_expand_debug(_skb, _newheadroom, _newtailroom, _gfp_mask, __func__, __LINE__) 
    528528 #define vlan_hwaccel_receive_skb(_skb, _grp, _tag) \ 
  • branches/8.09/package/madwifi/patches/305-pureg_fix.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -4158,7 +4158,9 @@ 
     3@@ -4158,7 +4158,9 @@ ath_calcrxfilter(struct ath_softc *sc) 
    44                rfilt |= HAL_RX_FILTER_PROM; 
    55        if (ic->ic_opmode == IEEE80211_M_STA || 
     
    1414--- a/net80211/ieee80211_input.c 
    1515+++ b/net80211/ieee80211_input.c 
    16 @@ -346,11 +346,12 @@ 
     16@@ -346,11 +346,12 @@ ieee80211_input(struct ieee80211vap * va 
    1717                                bssid = wh->i_addr3; 
    1818                        } 
     
    3030                                 * allow MGT frames to vap->iv_xrvap. 
    3131                                 * this will allow roaming between  XR and normal vaps 
    32 @@ -366,18 +367,14 @@ 
     32@@ -366,18 +367,14 @@ ieee80211_input(struct ieee80211vap * va 
    3333                                        vap->iv_stats.is_rx_wrongbss++; 
    3434                                        goto out; 
     
    5050                case IEEE80211_M_WDS: 
    5151                        if (skb->len < sizeof(struct ieee80211_frame_addr4)) { 
    52 @@ -3066,7 +3063,7 @@ 
     52@@ -3066,7 +3063,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    5353        u_int8_t *frm, *efrm; 
    5454        u_int8_t *ssid, *rates, *xrates, *suppchan, *wpa, *rsn, *wme, *ath; 
     
    5959  
    6060        if (ni_or_null == NULL) 
    61 @@ -3096,11 +3093,15 @@ 
     61@@ -3096,11 +3093,15 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    6262                 *    o station mode when associated (to collect state 
    6363                 *      updates such as 802.11g slot time), or 
     
    7676                        return; 
    7777                } 
    78 @@ -3184,6 +3185,7 @@ 
     78@@ -3184,6 +3185,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    7979                                        break; 
    8080                                } 
     
    8484                        case IEEE80211_ELEMID_RSN: 
    8585                                scan.rsn = frm; 
    86 @@ -3421,6 +3423,20 @@ 
     86@@ -3421,6 +3423,20 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    8787                                ieee80211_bg_scan(vap); 
    8888                        return; 
     
    107107--- a/net80211/ieee80211_node.c 
    108108+++ b/net80211/ieee80211_node.c 
    109 @@ -383,10 +383,16 @@ 
     109@@ -383,10 +383,16 @@ ieee80211_create_ibss(struct ieee80211va 
    110110        /* Update country ie information */ 
    111111        ieee80211_build_countryie(ic); 
     
    128128--- a/net80211/ieee80211_proto.c 
    129129+++ b/net80211/ieee80211_proto.c 
    130 @@ -595,6 +595,28 @@ 
     130@@ -595,6 +595,28 @@ static const struct ieee80211_rateset ba 
    131131        { 4, { 2, 4, 11, 22 } },        /* IEEE80211_MODE_TURBO_G (mixed b/g) */ 
    132132 }; 
     
    159159--- a/net80211/ieee80211_var.h 
    160160+++ b/net80211/ieee80211_var.h 
    161 @@ -708,6 +708,7 @@ 
     161@@ -708,6 +708,7 @@ int ieee80211_media_setup(struct ieee802 
    162162 void ieee80211_build_sc_ie(struct ieee80211com *); 
    163163 void ieee80211_dfs_action(struct ieee80211com *); 
  • branches/8.09/package/madwifi/patches/309-micfail_detect.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -6457,6 +6457,7 @@ 
     3@@ -6457,6 +6457,7 @@ ath_rx_poll(struct net_device *dev, int  
    44        int type; 
    55        u_int phyerr; 
     
    99        DPRINTF(sc, ATH_DEBUG_RX_PROC, "invoked\n"); 
    1010 process_rx_again: 
    11 @@ -6558,24 +6559,8 @@ 
     11@@ -6558,24 +6559,8 @@ process_rx_again: 
    1212                        } 
    1313                        if (rs->rs_status & HAL_RXERR_MIC) { 
     
    3636                        /* 
    3737                         * Reject error frames if we have no vaps that 
    38 @@ -6614,8 +6599,9 @@ 
     38@@ -6614,8 +6599,9 @@ rx_accept: 
    3939                /* 
    4040                 * Finished monitor mode handling, now reject 
     
    4747                        goto rx_next; 
    4848                } 
    49 @@ -6623,6 +6609,26 @@ 
     49@@ -6623,6 +6609,26 @@ rx_accept: 
    5050                /* remove the CRC */ 
    5151                skb_trim(skb, skb->len - IEEE80211_CRC_LEN); 
     
    7474                 * From this point on we assume the frame is at least 
    7575                 * as large as ieee80211_frame_min; verify that. 
    76 @@ -6635,6 +6641,7 @@ 
     76@@ -6635,6 +6641,7 @@ rx_accept: 
    7777                        goto rx_next; 
    7878                } 
     
    8484--- a/net80211/ieee80211_crypto_ccmp.c 
    8585+++ b/net80211/ieee80211_crypto_ccmp.c 
    86 @@ -73,7 +73,7 @@ 
     86@@ -73,7 +73,7 @@ static int ccmp_setkey(struct ieee80211_ 
    8787 static int ccmp_encap(struct ieee80211_key *, struct sk_buff *, u_int8_t); 
    8888 static int ccmp_decap(struct ieee80211_key *, struct sk_buff *, int); 
     
    9393 static const struct ieee80211_cipher ccmp = { 
    9494        .ic_name        = "AES-CCM", 
    95 @@ -308,7 +308,7 @@ 
     95@@ -308,7 +308,7 @@ ccmp_decap(struct ieee80211_key *k, stru 
    9696  * Verify and strip MIC from the frame. 
    9797  */ 
     
    104104--- a/net80211/ieee80211_crypto.h 
    105105+++ b/net80211/ieee80211_crypto.h 
    106 @@ -145,7 +145,7 @@ 
     106@@ -145,7 +145,7 @@ struct ieee80211_cipher { 
    107107        int (*ic_encap)(struct ieee80211_key *, struct sk_buff *, u_int8_t); 
    108108        int (*ic_decap)(struct ieee80211_key *, struct sk_buff *, int); 
     
    113113 extern const struct ieee80211_cipher ieee80211_cipher_none; 
    114114  
    115 @@ -163,10 +163,10 @@ 
     115@@ -163,10 +163,10 @@ struct ieee80211_key *ieee80211_crypto_d 
    116116  */ 
    117117 static __inline int 
     
    128128--- a/net80211/ieee80211_crypto_none.c 
    129129+++ b/net80211/ieee80211_crypto_none.c 
    130 @@ -52,7 +52,7 @@ 
     130@@ -52,7 +52,7 @@ static int none_setkey(struct ieee80211_ 
    131131 static int none_encap(struct ieee80211_key *, struct sk_buff *, u_int8_t); 
    132132 static int none_decap(struct ieee80211_key *, struct sk_buff *, int); 
     
    137137 const struct ieee80211_cipher ieee80211_cipher_none = { 
    138138        .ic_name        = "NONE", 
    139 @@ -137,7 +137,7 @@ 
     139@@ -137,7 +137,7 @@ none_enmic(struct ieee80211_key *k, stru 
    140140 } 
    141141  
     
    148148--- a/net80211/ieee80211_crypto_tkip.c 
    149149+++ b/net80211/ieee80211_crypto_tkip.c 
    150 @@ -57,7 +57,7 @@ 
     150@@ -57,7 +57,7 @@ static int tkip_setkey(struct ieee80211_ 
    151151 static int tkip_encap(struct ieee80211_key *, struct sk_buff *, u_int8_t); 
    152152 static int tkip_enmic(struct ieee80211_key *, struct sk_buff *, int); 
     
    157157 static const struct ieee80211_cipher tkip  = { 
    158158        .ic_name        = "TKIP", 
    159 @@ -339,7 +339,7 @@ 
     159@@ -339,7 +339,7 @@ tkip_decap(struct ieee80211_key *k, stru 
    160160  * Verify and strip MIC from the frame. 
    161161  */ 
     
    166166        struct tkip_ctx *ctx = k->wk_private; 
    167167        struct sk_buff *skb; 
    168 @@ -355,7 +355,7 @@ 
     168@@ -355,7 +355,7 @@ tkip_demic(struct ieee80211_key *k, stru 
    169169        } 
    170170        wh = (struct ieee80211_frame *) skb0->data; 
     
    177177--- a/net80211/ieee80211_crypto_wep.c 
    178178+++ b/net80211/ieee80211_crypto_wep.c 
    179 @@ -54,7 +54,7 @@ 
     179@@ -54,7 +54,7 @@ static int wep_setkey(struct ieee80211_k 
    180180 static int wep_encap(struct ieee80211_key *, struct sk_buff *, u_int8_t); 
    181181 static int wep_decap(struct ieee80211_key *, struct sk_buff *, int); 
     
    186186 static const struct ieee80211_cipher wep = { 
    187187        .ic_name        = "WEP", 
    188 @@ -244,7 +244,7 @@ 
     188@@ -244,7 +244,7 @@ wep_decap(struct ieee80211_key *k, struc 
    189189  * Verify and strip MIC from the frame. 
    190190  */ 
     
    197197--- a/net80211/ieee80211_input.c 
    198198+++ b/net80211/ieee80211_input.c 
    199 @@ -669,7 +669,7 @@ 
     199@@ -669,7 +669,7 @@ ieee80211_input(struct ieee80211vap * va 
    200200                 * Next strip any MSDU crypto bits. 
    201201                 */ 
     
    206206                                ni->ni_macaddr, "data", "%s", "demic error"); 
    207207                        IEEE80211_NODE_STAT(ni, rx_demicfail); 
    208 @@ -4293,6 +4293,47 @@ 
     208@@ -4293,6 +4293,47 @@ ath_eth_type_trans(struct sk_buff *skb,  
    209209 } 
    210210 #endif 
     
    256256--- a/net80211/ieee80211_proto.h 
    257257+++ b/net80211/ieee80211_proto.h 
    258 @@ -90,6 +90,7 @@ 
     258@@ -90,6 +90,7 @@ int ieee80211_iserp_rateset(struct ieee8 
    259259 void ieee80211_set11gbasicrates(struct ieee80211_rateset *, enum ieee80211_phymode); 
    260260 enum ieee80211_phymode ieee80211_get11gbasicrates(struct ieee80211_rateset *); 
     
    266266--- a/net80211/ieee80211_linux.c 
    267267+++ b/net80211/ieee80211_linux.c 
    268 @@ -337,8 +337,8 @@ 
     268@@ -337,8 +337,8 @@ ieee80211_notify_replay_failure(struct i 
    269269        /* TODO: needed parameters: count, keyid, key type, src address, TSC */ 
    270270        snprintf(buf, sizeof(buf), "%s(keyid=%d %scast addr=" MAC_FMT ")", tag, 
     
    279279--- a/net80211/ieee80211_output.c 
    280280+++ b/net80211/ieee80211_output.c 
    281 @@ -1074,13 +1074,16 @@ 
     281@@ -1074,13 +1074,16 @@ ieee80211_encap(struct ieee80211_node *n 
    282282                        cip = (struct ieee80211_cipher *) key->wk_cipher; 
    283283                        ciphdrsize = cip->ic_header; 
     
    301301--- a/net80211/ieee80211_node.c 
    302302+++ b/net80211/ieee80211_node.c 
    303 @@ -2264,11 +2264,13 @@ 
     303@@ -2264,11 +2264,13 @@ ieee80211_node_leave(struct ieee80211_no 
    304304        /* From this point onwards we can no longer find the node, 
    305305         * so no more references are generated 
  • branches/8.09/package/madwifi/patches/310-noise_get.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -1699,8 +1699,6 @@ 
     3@@ -1699,8 +1699,6 @@ ath_uapsd_processtriggers(struct ath_sof 
    44         * get to reality.  This value is used in monitor mode and by tools like 
    55         * Wireshark and Kismet. 
     
    1010        if (sc->sc_rxbufcur == NULL) 
    1111                sc->sc_rxbufcur = STAILQ_FIRST(&sc->sc_rxbuf); 
    12 @@ -8975,6 +8973,7 @@ 
     12@@ -8975,6 +8973,7 @@ ath_calibrate(unsigned long arg) 
    1313                        sc->sc_curchan.channel); 
    1414                sc->sc_stats.ast_per_calfail++; 
     
    1818        ath_hal_process_noisefloor(ah); 
    1919        if (isIQdone == AH_TRUE) { 
    20 @@ -9043,6 +9042,7 @@ 
     20@@ -9043,6 +9042,7 @@ ath_set_channel(struct ieee80211com *ic) 
    2121        struct ath_softc *sc = dev->priv; 
    2222  
     
    2626         * If we are returning to our bss channel then mark state 
    2727         * so the next recv'd beacon's TSF will be used to sync the 
    28 @@ -9311,6 +9311,7 @@ 
     28@@ -9311,6 +9311,7 @@ ath_newstate(struct ieee80211vap *vap, e 
    2929                } 
    3030  
     
    3636--- a/net80211/ieee80211_wireless.c 
    3737+++ b/net80211/ieee80211_wireless.c 
    38 @@ -4358,6 +4358,7 @@ 
     38@@ -4358,6 +4358,7 @@ get_sta_info(void *arg, struct ieee80211 
    3939        si->isi_state = ni->ni_flags; 
    4040        si->isi_authmode = ni->ni_authmode; 
     
    4646--- a/net80211/ieee80211_ioctl.h 
    4747+++ b/net80211/ieee80211_ioctl.h 
    48 @@ -311,6 +311,7 @@ 
     48@@ -311,6 +311,7 @@ struct ieee80211req_sta_info { 
    4949        u_int16_t isi_state;            /* state flags */ 
    5050        u_int8_t isi_authmode;          /* authentication algorithm */ 
  • branches/8.09/package/madwifi/patches/311-bssid_alloc.patch

    r11351 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -1354,7 +1354,7 @@ 
     3@@ -1354,7 +1354,7 @@ ath_vap_create(struct ieee80211com *ic,  
    44                TAILQ_FOREACH(v, &ic->ic_vaps, iv_next) 
    55                        id_mask |= (1 << ATH_GET_VAP_ID(v->iv_myaddr)); 
  • branches/8.09/package/madwifi/patches/312-erpupdate.patch

    r11351 r13708  
    11--- a/net80211/ieee80211_beacon.c 
    22+++ b/net80211/ieee80211_beacon.c 
    3 @@ -542,10 +542,10 @@ 
     3@@ -542,10 +542,10 @@ ieee80211_beacon_update(struct ieee80211 
    44                        vap->iv_flags &= ~IEEE80211_F_XRUPDATE; 
    55                } 
     
    1616--- a/net80211/ieee80211_input.c 
    1717+++ b/net80211/ieee80211_input.c 
    18 @@ -3431,9 +3431,12 @@ 
     18@@ -3431,9 +3431,12 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    1919                        /* Assume no ERP IE == 11b AP */ 
    2020                        if ((!has_erp || (has_erp && (scan.erp & IEEE80211_ERP_NON_ERP_PRESENT))) && 
     
    3232--- a/net80211/ieee80211_node.c 
    3333+++ b/net80211/ieee80211_node.c 
    34 @@ -2025,8 +2025,12 @@ 
     34@@ -2025,8 +2025,12 @@ ieee80211_node_join_11g(struct ieee80211 
    3535                } 
    3636  
     
    4747                ni->ni_flags |= IEEE80211_NODE_ERP; 
    4848 } 
    49 @@ -2229,6 +2233,8 @@ 
     49@@ -2229,6 +2233,8 @@ ieee80211_node_leave_11g(struct ieee8021 
    5050                IEEE80211_NOTE(vap, IEEE80211_MSG_ASSOC, ni, 
    5151                        "non-ERP station leaves, count now %d", ic->ic_nonerpsta); 
     
    5656                                "%s: disable use of protection\n", __func__); 
    5757                        ic->ic_flags &= ~IEEE80211_F_USEPROT; 
    58 @@ -2240,7 +2246,9 @@ 
     58@@ -2240,7 +2246,9 @@ ieee80211_node_leave_11g(struct ieee8021 
    5959                                ic->ic_flags |= IEEE80211_F_SHPREAMBLE; 
    6060                                ic->ic_flags &= ~IEEE80211_F_USEBARKER; 
  • branches/8.09/package/madwifi/patches/317-bmask.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -8689,6 +8689,10 @@ 
     3@@ -8689,6 +8689,10 @@ ath_startrecv(struct ath_softc *sc) 
    44  
    55        sc->sc_rxbufcur = NULL; 
  • branches/8.09/package/madwifi/patches/323-dfs_optional.patch

    r11848 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -1778,17 +1778,14 @@ 
     3@@ -1778,17 +1778,14 @@ ath_uapsd_processtriggers(struct ath_sof 
    44                         * may have occurred in the intervening timeframe. */ 
    55                        bf->bf_channoise = ic->ic_channoise; 
     
    2828--- a/ath/if_ath_radar.c 
    2929+++ b/ath/if_ath_radar.c 
    30 @@ -265,7 +265,7 @@ 
     30@@ -265,7 +265,7 @@ int ath_radar_update(struct ath_softc *s 
    3131                unsigned int new_rxfilt = old_rxfilt; 
    3232  
  • branches/8.09/package/madwifi/patches/324-alignment.patch

    r11351 r13708  
    11--- a/net80211/ieee80211_input.c 
    22+++ b/net80211/ieee80211_input.c 
    3 @@ -1275,14 +1275,8 @@ 
     3@@ -1275,14 +1275,8 @@ ieee80211_decap(struct ieee80211vap *vap 
    44                eh->ether_type = ether_type; 
    55  
  • branches/8.09/package/madwifi/patches/325-channel_spam.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -9792,7 +9792,9 @@ 
     3@@ -9792,7 +9792,9 @@ ath_getchannels(struct net_device *dev,  
    44        /* 
    55         * Convert HAL channels to ieee80211 ones. 
     
    1111                HAL_CHANNEL *c = &chans[i]; 
    1212                struct ieee80211_channel *ichan = &ic->ic_channels[i]; 
    13 @@ -9819,6 +9821,7 @@ 
     13@@ -9819,6 +9821,7 @@ ath_getchannels(struct net_device *dev,  
    1414                ic->ic_chan_non_occupy[i].tv_sec  = 0; 
    1515                ic->ic_chan_non_occupy[i].tv_usec = 0; 
     
    1919                                "[%d hw %d reg] Flags%s%s%s%s%s%s%s%s%s%s%s%s%" 
    2020                                "s%s%s%s%s%s%s%s%s%s%s%s\n", 
    21 @@ -9907,6 +9910,7 @@ 
     21@@ -9907,6 +9910,7 @@ ath_getchannels(struct net_device *dev,  
    2222                                (c->privFlags & 0x0080 ?  
    2323                                 " PF & (1 << 7)" : "") 
  • branches/8.09/package/madwifi/patches/327-queue.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -8438,8 +8438,6 @@ 
     3@@ -8438,8 +8438,6 @@ process_tx_again: 
    44        ath_hal_intrset(sc->sc_ah, sc->sc_imask); 
    55        local_irq_restore(flags); 
     
    1010                ath_led_event(sc, ATH_LED_TX); 
    1111 } 
    12 @@ -8486,8 +8484,6 @@ 
     12@@ -8486,8 +8484,6 @@ process_tx_again: 
    1313        ath_hal_intrset(sc->sc_ah, sc->sc_imask); 
    1414        local_irq_restore(flags); 
     
    1919                ath_led_event(sc, ATH_LED_TX); 
    2020 } 
    21 @@ -8520,8 +8516,6 @@ 
     21@@ -8520,8 +8516,6 @@ process_tx_again: 
    2222        ath_hal_intrset(sc->sc_ah, sc->sc_imask); 
    2323        local_irq_restore(flags); 
     
    3030--- a/net80211/ieee80211_input.c 
    3131+++ b/net80211/ieee80211_input.c 
    32 @@ -1132,7 +1132,7 @@ 
     32@@ -1132,7 +1132,7 @@ ieee80211_deliver_data(struct ieee80211_ 
    3333            (vap->iv_flags & IEEE80211_F_NOBRIDGE) == 0) { 
    3434                struct sk_buff *skb1 = NULL; 
  • branches/8.09/package/madwifi/patches/330-beaconcal.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -397,6 +397,7 @@ 
     3@@ -397,6 +397,7 @@ static int countrycode = -1; 
    44 static int maxvaps = -1; 
    55 static int outdoor = -1; 
     
    99 static const char *hal_status_desc[] = { 
    1010        "No error", 
    11 @@ -422,6 +423,7 @@ 
     11@@ -422,6 +423,7 @@ static struct notifier_block ath_event_b 
    1212 }; 
    1313  
     
    1717 MODULE_PARM(maxvaps, "i"); 
    1818 MODULE_PARM(outdoor, "i"); 
    19 @@ -434,6 +436,7 @@ 
     19@@ -434,6 +436,7 @@ MODULE_PARM(autocreate, "s"); 
    2020 MODULE_PARM(ratectl, "s"); 
    2121 #else 
     
    2525 module_param(maxvaps, int, 0600); 
    2626 module_param(outdoor, int, 0600); 
    27 @@ -2600,7 +2603,8 @@ 
     27@@ -2600,7 +2603,8 @@ ath_stop_locked(struct net_device *dev) 
    2828                } 
    2929                if (!sc->sc_invalid) { 
     
    3535                ath_draintxq(sc); 
    3636                if (!sc->sc_invalid) { 
    37 @@ -2617,6 +2621,20 @@ 
     37@@ -2617,6 +2621,20 @@ ath_stop_locked(struct net_device *dev) 
    3838        return 0; 
    3939 } 
     
    5656  * Stop the device, grabbing the top-level lock to protect 
    5757  * against concurrent entry through ath_init (which can happen 
    58 @@ -2742,6 +2760,12 @@ 
     58@@ -2742,6 +2760,12 @@ ath_reset(struct net_device *dev) 
    5959        HAL_STATUS status; 
    6060  
     
    6969         * constrained to reflect the current operating mode. 
    7070         */ 
    71 @@ -5154,6 +5178,8 @@ 
     71@@ -5154,6 +5178,8 @@ ath_beacon_send(struct ath_softc *sc, in 
    7272                        "Invoking ath_hal_txstart with sc_bhalq: %d\n", 
    7373                        sc->sc_bhalq); 
     
    7878                sc->sc_stats.ast_be_xmit++;             /* XXX per-VAP? */ 
    7979        } 
    80 @@ -5403,6 +5429,7 @@ 
     80@@ -5403,6 +5429,7 @@ ath_beacon_config(struct ath_softc *sc,  
    8181                ath_hal_beacontimers(ah, &bs); 
    8282                sc->sc_imask |= HAL_INT_BMISS; 
     
    8686                ath_hal_intrset(ah, 0); 
    8787                if (reset_tsf) 
    88 @@ -5414,8 +5441,11 @@ 
     88@@ -5414,8 +5441,11 @@ ath_beacon_config(struct ath_softc *sc,  
    8989                         */ 
    9090                        intval |= HAL_BEACON_ENA; 
     
    9999                ath_beacon_dturbo_config(vap, intval & 
    100100                                ~(HAL_BEACON_RESET_TSF | HAL_BEACON_ENA)); 
    101 @@ -8879,6 +8909,9 @@ 
     101@@ -8879,6 +8909,9 @@ ath_chan_set(struct ath_softc *sc, struc 
    102102                        /* Enter DFS wait period */ 
    103103                        mod_timer(&sc->sc_dfs_cac_timer, 
     
    109109                /* 
    110110                 * re configure beacons when it is a turbo mode switch. 
    111 @@ -8988,8 +9021,11 @@ 
     111@@ -8988,8 +9021,11 @@ ath_calibrate(unsigned long arg) 
    112112                sc->sc_curchan.channel, sc->sc_curchan.channelFlags, 
    113113                isIQdone ? "done" : "not done"); 
     
    123123  
    124124 static void 
    125 @@ -9096,7 +9132,8 @@ 
     125@@ -9096,7 +9132,8 @@ ath_newstate(struct ieee80211vap *vap, e 
    126126                ieee80211_state_name[vap->iv_state], 
    127127                ieee80211_state_name[nstate]); 
     
    133133        ath_hal_setledstate(ah, leds[nstate]);  /* set LED */ 
    134134        netif_stop_queue(dev);                  /* before we do anything else */ 
    135 @@ -9321,7 +9358,8 @@ 
     135@@ -9321,7 +9358,8 @@ ath_newstate(struct ieee80211vap *vap, e 
    136136                                "VAP -> DFSWAIT_PENDING \n"); 
    137137                        /* start calibration timer with a really small value  
     
    143143                        netif_wake_queue(dev); 
    144144                        /* don't do the other usual stuff... */ 
    145 @@ -9364,7 +9402,7 @@ 
     145@@ -9364,7 +9402,7 @@ done: 
    146146        error = avp->av_newstate(vap, nstate, arg); 
    147147  
     
    154154--- a/ath/if_athvar.h 
    155155+++ b/ath/if_athvar.h 
    156 @@ -778,6 +778,8 @@ 
     156@@ -778,6 +778,8 @@ struct ath_softc { 
    157157        struct ieee80211vap **sc_bslot;         /* beacon xmit slots */ 
    158158        int sc_bnext;                           /* next slot for beacon xmit */ 
  • branches/8.09/package/madwifi/patches/331-memory_alloc.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -3320,17 +3320,18 @@ 
     3@@ -3320,17 +3320,18 @@ ath_hardstart(struct sk_buff *skb, struc 
    44         * without affecting any other bridge ports. */ 
    55        if (skb_cloned(skb)) { 
     
    2626  
    2727 #ifdef ATH_SUPERG_FF 
    28 @@ -3601,6 +3602,8 @@ 
     28@@ -3601,6 +3602,8 @@ ath_mgtstart(struct ieee80211com *ic, st 
    2929        sc->sc_stats.ast_tx_mgmt++; 
    3030        return 0; 
  • branches/8.09/package/madwifi/patches/332-reset_beacons.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -8920,7 +8920,7 @@ 
     3@@ -8920,7 +8920,7 @@ ath_chan_set(struct ath_softc *sc, struc 
    44                 * re configure beacons when it is a turbo mode switch. 
    55                 * HW seems to turn off beacons during turbo mode switch. 
  • branches/8.09/package/madwifi/patches/333-apscan_mode.patch

    r11848 r13708  
    11--- a/net80211/ieee80211_scan_ap.c 
    22+++ b/net80211/ieee80211_scan_ap.c 
    3 @@ -783,12 +783,6 @@ 
     3@@ -783,12 +783,6 @@ pick_channel(struct ieee80211_scan_state 
    44                                /* break the loop as the subsequent chans won't be  
    55                                 * better */ 
  • branches/8.09/package/madwifi/patches/334-input.patch

    r11351 r13708  
    11--- a/net80211/ieee80211_input.c 
    22+++ b/net80211/ieee80211_input.c 
    3 @@ -950,6 +950,9 @@ 
     3@@ -950,6 +950,9 @@ ieee80211_input_all(struct ieee80211com  
    44        TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { 
    55                struct sk_buff *skb1; 
  • branches/8.09/package/madwifi/patches/340-maxrate.patch

    r11351 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -1307,6 +1307,7 @@ 
     3@@ -1307,6 +1307,7 @@ ath_vap_create(struct ieee80211com *ic,  
    44        vap->iv_key_set = ath_key_set; 
    55        vap->iv_key_update_begin = ath_key_update_begin; 
     
    1111--- a/ath_rate/minstrel/minstrel.c 
    1212+++ b/ath_rate/minstrel/minstrel.c 
    13 @@ -622,8 +622,12 @@ 
     13@@ -622,8 +622,12 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    1414                        return; 
    1515                } 
     
    2727--- a/ath_rate/sample/sample.c 
    2828+++ b/ath_rate/sample/sample.c 
    29 @@ -835,7 +835,12 @@ 
     29@@ -835,7 +835,12 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    3030        } 
    3131        sn->static_rate_ndx = -1; 
     
    4343--- a/net80211/ieee80211_ioctl.h 
    4444+++ b/net80211/ieee80211_ioctl.h 
    45 @@ -641,6 +641,7 @@ 
     45@@ -641,6 +641,7 @@ enum { 
    4646                                                           FCC requires 30m, so that is the default. */ 
    4747        IEEE80211_PARAM_BEACON_MISS_THRESH      = 73,   /* Beacon miss threshold (in beacons) */ 
     
    5353--- a/net80211/ieee80211_var.h 
    5454+++ b/net80211/ieee80211_var.h 
    55 @@ -281,6 +281,7 @@ 
     55@@ -281,6 +281,7 @@ struct ieee80211vap { 
    5656        struct ieee80211_spy iv_spy;                    /* IWSPY support */ 
    5757        struct ieee80211_app_ie app_ie[IEEE80211_APPIE_NUM_OF_FRAME]; /* app-specified IEs by frame type */ 
     
    6363--- a/net80211/ieee80211_wireless.c 
    6464+++ b/net80211/ieee80211_wireless.c 
    65 @@ -2839,6 +2839,12 @@ 
     65@@ -2839,6 +2839,12 @@ ieee80211_ioctl_setparam(struct net_devi 
    6666                else 
    6767                        ic->ic_flags_ext &= ~IEEE80211_FEXT_MARKDFS; 
     
    7676        case IEEE80211_PARAM_DUMPREGS: 
    7777                ieee80211_dump_registers(dev, info, w, extra); 
    78 @@ -3174,6 +3180,9 @@ 
     78@@ -3174,6 +3180,9 @@ ieee80211_ioctl_getparam(struct net_devi 
    7979                else 
    8080                        param[0] = 0; 
     
    8686                return -EOPNOTSUPP; 
    8787        } 
    88 @@ -5610,6 +5619,10 @@ 
     88@@ -5610,6 +5619,10 @@ static const struct iw_priv_args ieee802 
    8989          0, IW_PRIV_TYPE_APPIEBUF, "getiebuf" }, 
    9090        { IEEE80211_IOCTL_FILTERFRAME, 
  • branches/8.09/package/madwifi/patches/341-minrate.patch

    r11351 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -1308,6 +1308,7 @@ 
     3@@ -1308,6 +1308,7 @@ ath_vap_create(struct ieee80211com *ic,  
    44        vap->iv_key_update_begin = ath_key_update_begin; 
    55        vap->iv_key_update_end = ath_key_update_end; 
     
    1111--- a/ath_rate/minstrel/minstrel.c 
    1212+++ b/ath_rate/minstrel/minstrel.c 
    13 @@ -638,9 +638,15 @@ 
     13@@ -638,9 +638,15 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    1414                        sn->rs_succ_hist        [x] = 0; 
    1515                        sn->rs_att_hist         [x] = 0; 
     
    2828                                DPRINTF(sc, "%s: %s ignore bogus rix at %d\n", 
    2929                                        dev_info, __func__, x); 
    30 @@ -649,7 +655,7 @@ 
     30@@ -649,7 +655,7 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    3131                        sn->rates[x].rateCode = rt->info[sn->rates[x].rix].rateCode; 
    3232                        sn->rates[x].shortPreambleRateCode = 
     
    3939--- a/ath_rate/sample/sample.c 
    4040+++ b/ath_rate/sample/sample.c 
    41 @@ -842,8 +842,15 @@ 
     41@@ -842,8 +842,15 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    4242                sn->num_rates = vap->iv_maxrateindex; 
    4343  
     
    5959--- a/net80211/ieee80211_ioctl.h 
    6060+++ b/net80211/ieee80211_ioctl.h 
    61 @@ -642,6 +642,7 @@ 
     61@@ -642,6 +642,7 @@ enum { 
    6262        IEEE80211_PARAM_BEACON_MISS_THRESH      = 73,   /* Beacon miss threshold (in beacons) */ 
    6363        IEEE80211_PARAM_BEACON_MISS_THRESH_MS   = 74,   /* Beacon miss threshold (in ms) */ 
     
    6969--- a/net80211/ieee80211_var.h 
    7070+++ b/net80211/ieee80211_var.h 
    71 @@ -282,6 +282,7 @@ 
     71@@ -282,6 +282,7 @@ struct ieee80211vap { 
    7272        struct ieee80211_app_ie app_ie[IEEE80211_APPIE_NUM_OF_FRAME]; /* app-specified IEs by frame type */ 
    7373        u_int32_t app_filter;                           /* filters which management frames are forwarded to app */ 
     
    7979--- a/net80211/ieee80211_wireless.c 
    8080+++ b/net80211/ieee80211_wireless.c 
    81 @@ -2845,6 +2845,12 @@ 
     81@@ -2845,6 +2845,12 @@ ieee80211_ioctl_setparam(struct net_devi 
    8282                else 
    8383                        vap->iv_maxrateindex = 0; 
     
    9292        case IEEE80211_PARAM_DUMPREGS: 
    9393                ieee80211_dump_registers(dev, info, w, extra); 
    94 @@ -3183,6 +3189,9 @@ 
     94@@ -3183,6 +3189,9 @@ ieee80211_ioctl_getparam(struct net_devi 
    9595        case IEEE80211_PARAM_MAXRATE: 
    9696                param[0] = vap->iv_maxrateindex; 
     
    102102                return -EOPNOTSUPP; 
    103103        } 
    104 @@ -5623,6 +5632,10 @@ 
     104@@ -5623,6 +5632,10 @@ static const struct iw_priv_args ieee802 
    105105         IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "maxrate"}, 
    106106        {IEEE80211_PARAM_MAXRATE, 
  • branches/8.09/package/madwifi/patches/342-performance.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -3239,7 +3239,6 @@ 
     3@@ -3239,7 +3239,6 @@ ath_hardstart(struct sk_buff *skb, struc 
    44        struct ath_softc *sc = dev->priv; 
    55        struct ieee80211_node *ni = NULL; 
     
    99        struct ath_buf *tbf, *tempbf; 
    1010        struct sk_buff *tskb; 
    11 @@ -3251,6 +3250,7 @@ 
     11@@ -3251,6 +3250,7 @@ ath_hardstart(struct sk_buff *skb, struc 
    1212        */ 
    1313        int requeue = 0; 
     
    1717        struct ieee80211com *ic = &sc->sc_ic; 
    1818        struct ath_node *an; 
    19 @@ -3316,27 +3316,9 @@ 
     19@@ -3316,27 +3316,9 @@ ath_hardstart(struct sk_buff *skb, struc 
    2020                requeue = 1; 
    2121                goto hardstart_fail; 
     
    4747--- a/net80211/ieee80211_output.c 
    4848+++ b/net80211/ieee80211_output.c 
    49 @@ -283,7 +283,7 @@ 
     49@@ -283,7 +283,7 @@ ieee80211_hardstart(struct sk_buff *skb, 
    5050         * normal vap. */ 
    5151        if (vap->iv_xrvap && (ni == vap->iv_bss) && 
     
    5656                        memset(SKB_CB(skb1), 0, sizeof(struct ieee80211_cb)); 
    5757 #ifdef IEEE80211_DEBUG_REFCNT 
    58 @@ -566,7 +566,7 @@ 
     58@@ -566,7 +566,7 @@ ieee80211_skbhdr_adjust(struct ieee80211 
    5959        struct ieee80211_key *key, struct sk_buff *skb, int ismulticast) 
    6060 { 
     
    6565 #ifdef ATH_SUPERG_FF 
    6666        int isff = ATH_FF_MAGIC_PRESENT(skb); 
    67 @@ -608,109 +608,56 @@ 
     67@@ -608,109 +608,56 @@ ieee80211_skbhdr_adjust(struct ieee80211 
    6868                                need_tailroom += cip->ic_miclen; 
    6969        } 
     
    215215--- a/net80211/ieee80211_input.c 
    216216+++ b/net80211/ieee80211_input.c 
    217 @@ -204,7 +204,6 @@ 
     217@@ -204,7 +204,6 @@ ieee80211_input(struct ieee80211vap * va 
    218218        struct ieee80211_frame *wh; 
    219219        struct ieee80211_key *key; 
     
    223223        struct llc *llc; 
    224224 #endif 
    225 @@ -244,20 +243,6 @@ 
     225@@ -244,20 +243,6 @@ ieee80211_input(struct ieee80211vap * va 
    226226                vap->iv_stats.is_rx_tooshort++; 
    227227                goto out; 
     
    244244        /* 
    245245         * Bit of a cheat here, we use a pointer for a 3-address 
    246 @@ -738,7 +723,7 @@ 
     246@@ -738,7 +723,7 @@ ieee80211_input(struct ieee80211vap * va 
    247247                        /* ether_type must be length as FF frames are always LLC/SNAP encap'd */  
    248248                        frame_len = ntohs(eh_tmp->ether_type);  
     
    253253                                goto err; 
    254254                        ieee80211_skb_copy_noderef(skb, skb1); 
    255 @@ -1137,7 +1122,7 @@ 
     255@@ -1137,7 +1122,7 @@ ieee80211_deliver_data(struct ieee80211_ 
    256256  
    257257                if (ETHER_IS_MULTICAST(eh->ether_dhost) && !netif_queue_stopped(dev)) { 
  • branches/8.09/package/madwifi/patches/343-txqueue_races.patch

    r12839 r13708  
    33--- a/ath/if_ath.c 
    44+++ b/ath/if_ath.c 
    5 @@ -8251,6 +8251,17 @@ 
     5@@ -8251,6 +8251,17 @@ ath_tx_processq(struct ath_softc *sc, st 
    66                        goto bf_fail; 
    77                } 
     
    2323--- a/ath/if_athvar.h 
    2424+++ b/ath/if_athvar.h 
    25 @@ -586,7 +586,8 @@ 
     25@@ -586,7 +586,8 @@ struct ath_vap { 
    2626 } while (0) 
    2727 #define ATH_TXQ_REMOVE_HEAD(_tq, _field) do { \ 
  • branches/8.09/package/madwifi/patches/344-minstrel_failcnt.patch

    r11351 r13708  
    11--- a/ath_rate/minstrel/minstrel.c 
    22+++ b/ath_rate/minstrel/minstrel.c 
    3 @@ -475,7 +475,7 @@ 
     3@@ -475,7 +475,7 @@ ath_rate_tx_complete(struct ath_softc *s 
    44                /* 'tries' is the total number of times we have endeavoured to 
    55                 * send this packet, and is a sum of the #attempts at each 
  • branches/8.09/package/madwifi/patches/345-minstrel_sampling.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -8101,6 +8101,7 @@ 
     3@@ -8101,6 +8101,7 @@ ath_tx_start(struct net_device *dev, str 
    44                ath_hal_setupxtxdesc(sc->sc_ah, ds, mrr.rate1, mrr.retries1, 
    55                                     mrr.rate2, mrr.retries2, 
     
    1111--- a/ath/if_athvar.h 
    1212+++ b/ath/if_athvar.h 
    13 @@ -446,6 +446,7 @@ 
     13@@ -446,6 +446,7 @@ struct ath_buf { 
    1414        u_int16_t bf_flags;                             /* tx descriptor flags */ 
    1515        u_int64_t bf_tsf; 
     
    2121--- a/ath_rate/minstrel/minstrel.c 
    2222+++ b/ath_rate/minstrel/minstrel.c 
    23 @@ -333,15 +333,19 @@ 
     23@@ -333,15 +333,19 @@ ath_rate_findrate(struct ath_softc *sc,  
    2424                if (sn->static_rate_ndx >= 0) { 
    2525                            ndx = sn->static_rate_ndx; 
     
    4242  
    4343                                /* Don't look for slowest rate (i.e. slowest 
    44 @@ -398,11 +402,14 @@ 
     44@@ -398,11 +402,14 @@ ath_rate_get_mrr(struct ath_softc *sc, s 
    4545                if (sn->num_rates <= 0) 
    4646                        return; 
     
    5959                } else { 
    6060                        rc1 = sn->max_tp_rate2; 
    61 @@ -525,6 +532,9 @@ 
     61@@ -525,6 +532,9 @@ ath_rate_tx_complete(struct ath_softc *s 
    6262                if (tries <= tries1) 
    6363                        return; 
     
    7171--- a/net80211/ieee80211_rate.h 
    7272+++ b/net80211/ieee80211_rate.h 
    73 @@ -87,6 +87,7 @@ 
     73@@ -87,6 +87,7 @@ struct ieee80211_mrr { 
    7474        int retries2; 
    7575        int rate3; 
  • branches/8.09/package/madwifi/patches/346-protmode_trig.patch

    r11351 r13708  
    11--- a/net80211/ieee80211.c 
    22+++ b/net80211/ieee80211.c 
    3 @@ -333,7 +333,9 @@ 
     3@@ -333,7 +333,9 @@ ieee80211_ifattach(struct ieee80211com * 
    44                        IEEE80211_MS_TO_TU(IEEE80211_BMISSTHRESH_DEFAULT_MS),  
    55                        ic->ic_lintval), ic->ic_lintval); 
     
    1414--- a/net80211/ieee80211_input.c 
    1515+++ b/net80211/ieee80211_input.c 
    16 @@ -3411,14 +3411,18 @@ 
     16@@ -3411,14 +3411,18 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    1717                        IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) { 
    1818  
     
    4040--- a/net80211/ieee80211_ioctl.h 
    4141+++ b/net80211/ieee80211_ioctl.h 
    42 @@ -643,6 +643,8 @@ 
     42@@ -643,6 +643,8 @@ enum { 
    4343        IEEE80211_PARAM_BEACON_MISS_THRESH_MS   = 74,   /* Beacon miss threshold (in ms) */ 
    4444        IEEE80211_PARAM_MAXRATE                 = 75,   /* Maximum rate (by table index) */ 
     
    6161        (((ic)->ic_bsschan->ic_maxregpower > (ic)->ic_curchanmaxpwr) ? \ 
    6262            (ic)->ic_bsschan->ic_maxregpower - (ic)->ic_curchanmaxpwr : 0) 
    63 @@ -324,6 +327,9 @@ 
     63@@ -324,6 +327,9 @@ struct ieee80211com { 
    6464        u_int16_t ic_newtxpowlimit;             /* tx power limit to change to (in 0.5 dBm) */ 
    6565        u_int16_t ic_uapsdmaxtriggers;          /* max triggers that could arrive */ 
     
    7373--- a/net80211/ieee80211_wireless.c 
    7474+++ b/net80211/ieee80211_wireless.c 
    75 @@ -2312,6 +2312,12 @@ 
     75@@ -2312,6 +2312,12 @@ ieee80211_ioctl_setparam(struct net_devi 
    7676                    IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan)) 
    7777                        retv = ENETRESET; 
     
    8686                if ((vap->iv_caps & cipher2cap(value)) == 0 && 
    8787                    !ieee80211_crypto_available(vap, value)) 
    88 @@ -2955,6 +2961,12 @@ 
     88@@ -2955,6 +2961,12 @@ ieee80211_ioctl_getparam(struct net_devi 
    8989        case IEEE80211_PARAM_PROTMODE: 
    9090                param[0] = ic->ic_protmode; 
     
    9999                param[0] = rsn->rsn_mcastcipher; 
    100100                break; 
    101 @@ -5346,6 +5358,14 @@ 
     101@@ -5346,6 +5358,14 @@ static const struct iw_priv_args ieee802 
    102102          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "protmode" }, 
    103103        { IEEE80211_PARAM_PROTMODE, 
     
    116116--- a/net80211/ieee80211_node.c 
    117117+++ b/net80211/ieee80211_node.c 
    118 @@ -1877,6 +1877,17 @@ 
     118@@ -1877,6 +1877,17 @@ ieee80211_node_timeout(unsigned long arg 
    119119  
    120120        ieee80211_scan_timeout(ic); 
  • branches/8.09/package/madwifi/patches/347-tuning.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -10274,11 +10274,11 @@ 
     3@@ -10274,11 +10274,11 @@ ath_setcurmode(struct ath_softc *sc, enu 
    44        sc->sc_currates = rt; 
    55        sc->sc_curmode = mode; 
     
    1818--- a/ath/if_athvar.h 
    1919+++ b/ath/if_athvar.h 
    20 @@ -272,6 +272,10 @@ 
     20@@ -272,6 +272,10 @@ static inline struct net_device *_alloc_ 
    2121 #define AES_ICV_FIELD_SIZE      8       /* AES ICV field size */ 
    2222 #define EXT_IV_FIELD_SIZE       4       /* ext IV field size */ 
     
    3131--- a/ath_rate/minstrel/minstrel.c 
    3232+++ b/ath_rate/minstrel/minstrel.c 
    33 @@ -197,7 +197,7 @@ 
     33@@ -197,7 +197,7 @@ calc_usecs_unicast_packet(struct ath_sof 
    3434                unsigned int x = 0, tt = 0; 
    3535                unsigned int cix = rt->info[rix].controlRate; 
     
    4040                KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode)); 
    4141  
    42 @@ -281,7 +281,7 @@ 
     42@@ -281,7 +281,7 @@ calc_usecs_unicast_packet(struct ath_sof 
    4343                tt += (long_retries + 1) * ath_hal_computetxtime(sc->sc_ah, rt, length, 
    4444                                                        rix, AH_TRUE); 
     
    5151--- a/ath_rate/minstrel/minstrel.h 
    5252+++ b/ath_rate/minstrel/minstrel.h 
    53 @@ -180,14 +180,6 @@ 
     53@@ -180,14 +180,6 @@ struct minstrel_node { 
    5454 #define MAX(a,b)        ((a) > (b) ? (a) : (b)) 
    5555 #endif 
     
    6868--- a/ath_rate/sample/sample.c 
    6969+++ b/ath_rate/sample/sample.c 
    70 @@ -170,7 +170,7 @@ 
     70@@ -170,7 +170,7 @@ calc_usecs_unicast_packet(struct ath_sof 
    7171        struct ieee80211com *ic = &sc->sc_ic; 
    7272        unsigned int tt = 0; 
     
    7777        KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode)); 
    7878  
    79 @@ -254,7 +254,7 @@ 
     79@@ -254,7 +254,7 @@ calc_usecs_unicast_packet(struct ath_sof 
    8080        tt += (long_retries+1)*ath_hal_computetxtime(sc->sc_ah, rt, length, 
    8181                                                rix, AH_TRUE); 
     
    8888--- a/ath_rate/sample/sample.h 
    8989+++ b/ath_rate/sample/sample.h 
    90 @@ -106,9 +106,6 @@ 
     90@@ -106,9 +106,6 @@ struct sample_node { 
    9191 #define MAX(a,b)        ((a) > (b) ? (a) : (b)) 
    9292 #endif 
  • branches/8.09/package/madwifi/patches/348-ackcts.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -2723,6 +2723,9 @@ 
     3@@ -2723,6 +2723,9 @@ ar_device(int devid) 
    44 static int 
    55 ath_set_ack_bitrate(struct ath_softc *sc, int high) 
     
    1111                /* set ack to be sent at low bit-rate */ 
    1212                /* registers taken from the OpenBSD 5212 HAL */ 
    13 @@ -10789,8 +10792,13 @@ 
     13@@ -10789,8 +10792,13 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    1414                                break; 
    1515 #endif 
     
    2929--- a/ath/if_athvar.h 
    3030+++ b/ath/if_athvar.h 
    31 @@ -681,6 +681,7 @@ 
     31@@ -681,6 +681,7 @@ struct ath_softc { 
    3232        unsigned int    sc_devstopped:1;        /* stopped due to of no tx bufs */ 
    3333        unsigned int    sc_stagbeacons:1;       /* use staggered beacons */ 
  • branches/8.09/package/madwifi/patches/349-reset.patch

    r12839 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -8862,8 +8862,7 @@ 
     3@@ -8862,8 +8862,7 @@ ath_chan_set(struct ath_softc *sc, struc 
    44                 * needed to do the reset with chanchange = AH_FALSE in order 
    55                 * to receive traffic when peforming high velocity channel 
  • branches/8.09/package/madwifi/patches/350-wisoc_softled.patch

    r11351 r13708  
    11--- a/ath/if_ath_ahb.c 
    22+++ b/ath/if_ath_ahb.c 
    3 @@ -245,6 +245,8 @@ 
     3@@ -245,6 +245,8 @@ init_ath_wmac(u_int16_t devid, u_int16_t 
    44        num_activesc++; 
    55        /* Ready to process interrupts */ 
  • branches/8.09/package/madwifi/patches/351-scanlist.patch

    r11848 r13708  
    11--- a/net80211/ieee80211_scan_sta.c 
    22+++ b/net80211/ieee80211_scan_sta.c 
    3 @@ -317,147 +317,6 @@ 
     3@@ -317,147 +317,6 @@ found: 
    44 #undef ISPROBE 
    55 } 
     
    149149  * Start a station-mode scan by populating the channel list. 
    150150  */ 
    151 @@ -466,81 +325,14 @@ 
     151@@ -466,81 +325,14 @@ sta_start(struct ieee80211_scan_state *s 
    152152 { 
    153153        struct ieee80211com *ic = vap->iv_ic; 
     
    233233        /*  
    234234         * The scanner will stay on station for ss_maxdwell ms (using a  
    235 @@ -749,17 +541,7 @@ 
     235@@ -749,17 +541,7 @@ match_bss(struct ieee80211vap *vap, 
    236236        fail = 0; 
    237237        if (isclr(ic->ic_chan_active, ieee80211_chan2ieee(ic, se->se_chan))) 
     
    252252                if ((se->se_capinfo & IEEE80211_CAPINFO_IBSS) == 0) 
    253253                        fail |= 0x02; 
    254 @@ -1168,78 +950,6 @@ 
     254@@ -1168,78 +950,6 @@ static const struct ieee80211_scanner st 
    255255        .scan_default           = ieee80211_sta_join, 
    256256 }; 
     
    331331 /* 
    332332  * Select a channel to start an adhoc network on. 
    333 @@ -1405,7 +1115,7 @@ 
     333@@ -1405,7 +1115,7 @@ static const struct ieee80211_scanner ad 
    334334        .scan_name              = "default", 
    335335        .scan_attach            = sta_attach, 
     
    342342--- a/net80211/ieee80211.c 
    343343+++ b/net80211/ieee80211.c 
    344 @@ -278,6 +278,11 @@ 
     344@@ -278,6 +278,11 @@ ieee80211_ifattach(struct ieee80211com * 
    345345                        ("channel with bogus ieee number %u", c->ic_ieee)); 
    346346                setbit(ic->ic_chan_avail, c->ic_ieee); 
     
    356356--- a/net80211/_ieee80211.h 
    357357+++ b/net80211/_ieee80211.h 
    358 @@ -132,6 +132,11 @@ 
     358@@ -132,6 +132,11 @@ enum ieee80211_scanmode { 
    359359        IEEE80211_SCAN_FIRST    = 2,    /* take first suitable candidate */ 
    360360 }; 
     
    368368  * Channels are specified by frequency and attributes. 
    369369  */ 
    370 @@ -142,6 +147,7 @@ 
     370@@ -142,6 +147,7 @@ struct ieee80211_channel { 
    371371        int8_t ic_maxregpower;  /* maximum regulatory tx power in dBm */ 
    372372        int8_t ic_maxpower;     /* maximum tx power in dBm */ 
     
    378378--- a/net80211/ieee80211_ioctl.h 
    379379+++ b/net80211/ieee80211_ioctl.h 
    380 @@ -555,6 +555,7 @@ 
     380@@ -555,6 +555,7 @@ struct ieee80211req_scan_result { 
    381381 #define        IEEE80211_IOCTL_WDSADDMAC       (SIOCIWFIRSTPRIV+26) 
    382382 #define        IEEE80211_IOCTL_WDSDELMAC       (SIOCIWFIRSTPRIV+28) 
     
    388388--- a/net80211/ieee80211_scan_ap.c 
    389389+++ b/net80211/ieee80211_scan_ap.c 
    390 @@ -129,131 +129,7 @@ 
     390@@ -129,131 +129,7 @@ struct ap_state { 
    391391  
    392392 static int ap_flush(struct ieee80211_scan_state *); 
     
    520520 /* 
    521521  * Attach prior to any scanning work. 
    522 @@ -327,29 +203,6 @@ 
     522@@ -327,29 +203,6 @@ saveie(u_int8_t **iep, const u_int8_t *i 
    523523                ieee80211_saveie(iep, ie); 
    524524 } 
     
    550550  * Start an ap scan by populating the channel list. 
    551551  */ 
    552 @@ -358,8 +211,6 @@ 
     552@@ -358,8 +211,6 @@ ap_start(struct ieee80211_scan_state *ss 
    553553 { 
    554554        struct ap_state *as         = ss->ss_priv; 
     
    559559        unsigned int mode = 0; 
    560560  
    561 @@ -368,80 +219,8 @@ 
     561@@ -368,80 +219,8 @@ ap_start(struct ieee80211_scan_state *ss 
    562562        /* Determine mode flags to match, or leave zero for auto mode */ 
    563563        as->as_vap_desired_mode = vap->iv_des_mode; 
     
    641641        /* XXX tunables */ 
    642642        ss->ss_mindwell = msecs_to_jiffies(200);        /* 200ms */ 
    643 @@ -761,13 +540,6 @@ 
     643@@ -761,13 +540,6 @@ pick_channel(struct ieee80211_scan_state 
    644644                if (IEEE80211_IS_CHAN_RADAR(c->chan)) 
    645645                        continue; 
     
    657657--- a/net80211/ieee80211_scan.c 
    658658+++ b/net80211/ieee80211_scan.c 
    659 @@ -958,6 +958,80 @@ 
     659@@ -958,6 +958,80 @@ ieee80211_scan_flush(struct ieee80211com 
    660660        } 
    661661 } 
     
    740740--- a/net80211/ieee80211_scan.h 
    741741+++ b/net80211/ieee80211_scan.h 
    742 @@ -219,4 +219,7 @@ 
     742@@ -219,4 +219,7 @@ void ieee80211_scanner_register(enum iee 
    743743 void ieee80211_scanner_unregister(enum ieee80211_opmode, 
    744744        const struct ieee80211_scanner *); 
     
    750750--- a/net80211/ieee80211_wireless.c 
    751751+++ b/net80211/ieee80211_wireless.c 
    752 @@ -3873,6 +3873,106 @@ 
     752@@ -3873,6 +3873,106 @@ ieee80211_ioctl_kickmac(struct net_devic 
    753753        return ieee80211_ioctl_setmlme(dev, info, w, (char *)&mlme); 
    754754 } 
     
    857857 ieee80211_ioctl_addmac(struct net_device *dev, struct iw_request_info *info, 
    858858        void *w, char *extra) 
    859 @@ -5656,6 +5756,8 @@ 
     859@@ -5656,6 +5756,8 @@ static const struct iw_priv_args ieee802 
    860860         IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "minrate"}, 
    861861        {IEEE80211_PARAM_MINRATE, 
     
    866866 #ifdef ATH_REVERSE_ENGINEERING 
    867867        /* 
    868 @@ -5753,6 +5855,7 @@ 
     868@@ -5753,6 +5855,7 @@ static const iw_handler ieee80211_priv_h 
    869869        set_priv(IEEE80211_IOCTL_WDSADDMAC, ieee80211_ioctl_wdsmac), 
    870870        set_priv(IEEE80211_IOCTL_WDSDELMAC, ieee80211_ioctl_wdsdelmac), 
  • branches/8.09/package/madwifi/patches/352-ani_fix.patch

    r12887 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -1014,9 +1014,7 @@ 
     3@@ -1014,9 +1014,7 @@ ath_attach(u_int16_t devid, struct net_d 
    44         */ 
    55        sc->sc_hasveol = ath_hal_hasveol(ah); 
     
    1212  
    1313        /* get mac address from hardware */ 
    14 @@ -1144,6 +1142,11 @@ 
     14@@ -1144,6 +1142,11 @@ ath_attach(u_int16_t devid, struct net_d 
    1515        sc->sc_rp_lasttsf       = 0; 
    1616        sc->sc_last_tsf         = 0; 
     
    2424 bad3: 
    2525        ieee80211_ifdetach(ic); 
    26 @@ -2428,6 +2431,43 @@ 
     26@@ -2428,6 +2431,43 @@ ath_chan2flags(struct ieee80211_channel  
    2727        return flags; 
    2828 } 
     
    6868  * Context: process context 
    6969  */ 
    70 @@ -2493,8 +2533,7 @@ 
     70@@ -2493,8 +2533,7 @@ ath_init(struct net_device *dev) 
    7171        if (sc->sc_softled) 
    7272                ath_hal_gpioCfgOutput(ah, sc->sc_ledpin); 
     
    7878        /* 
    7979         * This is needed only to setup initial state 
    80 @@ -2530,7 +2569,7 @@ 
     80@@ -2530,7 +2569,7 @@ ath_init(struct net_device *dev) 
    8181         * Enable MIB interrupts when there are hardware phy counters. 
    8282         * Note we only do this (at the moment) for station mode. 
     
    8787        ath_hal_intrset(ah, sc->sc_imask); 
    8888  
    89 @@ -2787,9 +2826,7 @@ 
     89@@ -2787,9 +2826,7 @@ ath_reset(struct net_device *dev) 
    9090                EPRINTF(sc, "Unable to reset hardware: '%s' (HAL status %u)\n", 
    9191                        ath_get_hal_status_desc(status), status); 
     
    9898        ath_radar_update(sc); 
    9999        ath_setdefantenna(sc, sc->sc_defant); 
    100 @@ -4174,6 +4211,8 @@ 
     100@@ -4174,6 +4211,8 @@ ath_calcrxfilter(struct ath_softc *sc) 
    101101        if (sc->sc_nmonvaps > 0) 
    102102                rfilt |= (HAL_RX_FILTER_CONTROL | HAL_RX_FILTER_BEACON | 
     
    107107                rfilt |= (HAL_RX_FILTER_PHYERR | HAL_RX_FILTER_PHYRADAR); 
    108108        return rfilt; 
    109 @@ -6524,9 +6563,6 @@ 
     109@@ -6524,9 +6563,6 @@ process_rx_again: 
    110110                        rs->rs_rssi = 0; 
    111111  
     
    117117                if (rs->rs_more) { 
    118118                        /* 
    119 @@ -8874,9 +8910,7 @@ 
     119@@ -8874,9 +8910,7 @@ ath_chan_set(struct ath_softc *sc, struc 
    120120                if (sc->sc_softled) 
    121121                        ath_hal_gpioCfgOutput(ah, sc->sc_ledpin); 
     
    128128                ath_update_txpow(sc);           /* update tx power state */ 
    129129                ath_radar_update(sc); 
    130 @@ -10653,9 +10687,54 @@ 
     130@@ -10653,9 +10687,54 @@ enum { 
    131131        ATH_RP_IGNORED          = 24, 
    132132        ATH_RADAR_IGNORED       = 25, 
     
    183183 { 
    184184        struct ath_softc *sc = ctl->extra1; 
    185 @@ -10841,6 +10920,11 @@ 
     185@@ -10841,6 +10920,11 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    186186                        case ATH_RADAR_IGNORED: 
    187187                                sc->sc_radar_ignored = val; 
     
    195195                                ret = -EINVAL; 
    196196                                break; 
    197 @@ -10907,6 +10991,11 @@ 
     197@@ -10907,6 +10991,11 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    198198                case ATH_RADAR_IGNORED: 
    199199                        val = sc->sc_radar_ignored; 
     
    207207                        ret = -EINVAL; 
    208208                        break; 
    209 @@ -11084,6 +11173,24 @@ 
     209@@ -11084,6 +11173,24 @@ static const ctl_table ath_sysctl_templa 
    210210          .proc_handler = ath_sysctl_halparam, 
    211211          .extra2       = (void *)ATH_RADAR_IGNORED, 
     
    234234--- a/ath/if_athvar.h 
    235235+++ b/ath/if_athvar.h 
    236 @@ -693,6 +693,10 @@ 
     236@@ -693,6 +693,10 @@ struct ath_softc { 
    237237        unsigned int sc_txcont_power; /* Continuous transmit power in 0.5dBm units */ 
    238238        unsigned int sc_txcont_rate;  /* Continuous transmit rate in Mbps */ 
     
    247247--- a/ath/if_ath_hal.h 
    248248+++ b/ath/if_ath_hal.h 
    249 @@ -67,14 +67,14 @@ 
     249@@ -67,14 +67,14 @@ static inline HAL_POWER_MODE ath_hal_get 
    250250  
    251251 static inline HAL_BOOL ath_hal_getdiagstate(struct ath_hal *ah, int request, 
  • branches/8.09/package/madwifi/patches/353-devid.patch

    r11791 r13708  
    11--- a/ath/if_ath_pci.c 
    22+++ b/ath/if_ath_pci.c 
    3 @@ -114,11 +114,13 @@ 
     3@@ -114,11 +114,13 @@ static struct pci_device_id ath_pci_id_t 
    44        { 0x168c, 0x0023, PCI_ANY_ID, PCI_ANY_ID }, 
    55        { 0x168c, 0x0024, PCI_ANY_ID, PCI_ANY_ID }, 
  • branches/8.09/package/madwifi/patches/354-ifxmips_eeprom.patch

    r11791 r13708  
    11--- a/ath_hal/ah_os.c 
    22+++ b/ath_hal/ah_os.c 
    3 @@ -343,6 +343,46 @@ 
     3@@ -343,6 +343,46 @@ EXPORT_SYMBOL(ath_hal_func); 
    44  * NB: see the comments in ah_osdep.h about byte-swapping register 
    55  *     reads and writes to understand what's going on below. 
     
    4848 ath_hal_reg_write(struct ath_hal *ah, u_int reg, u_int32_t val) 
    4949 { 
    50 @@ -351,20 +391,33 @@ 
     50@@ -351,20 +391,33 @@ ath_hal_reg_write(struct ath_hal *ah, u_ 
    5151                ath_hal_printf(ah, "%s: WRITE 0x%x <= 0x%x\n",  
    5252                                (ath_hal_func ?: "unknown"), reg, val); 
     
    8686 #endif 
    8787        return val; 
    88 @@ -581,7 +634,9 @@ 
     88@@ -581,7 +634,9 @@ init_ath_hal(void) 
    8989 { 
    9090        const char *sep; 
  • branches/8.09/package/madwifi/patches/355-eap_auth_disassoc.patch

    r12887 r13708  
    66--- a/ath/if_ath.c 
    77+++ b/ath/if_ath.c 
    8 @@ -8332,6 +8332,14 @@ 
     8@@ -8332,6 +8332,14 @@ ath_tx_processq(struct ath_softc *sc, st 
    99 #endif 
    1010                                if (ts->ts_status & HAL_TXERR_XRETRY) { 
     
    2323--- a/net80211/ieee80211_linux.c 
    2424+++ b/net80211/ieee80211_linux.c 
    25 @@ -156,6 +156,7 @@ 
     25@@ -156,6 +156,7 @@ ieee80211_getmgtframe(u_int8_t **frm, u_ 
    2626                if (off != 0) 
    2727                        skb_reserve(skb, align - off); 
     
    3333--- a/net80211/ieee80211_linux.h 
    3434+++ b/net80211/ieee80211_linux.h 
    35 @@ -393,6 +393,7 @@ 
     35@@ -393,6 +393,7 @@ typedef spinlock_t acl_lock_t; 
    3636        void            (*next_destructor)(struct sk_buff *skb); 
    3737 #endif 
     
    4343--- a/net80211/ieee80211_output.c 
    4444+++ b/net80211/ieee80211_output.c 
    45 @@ -778,6 +778,8 @@ 
     45@@ -778,6 +778,8 @@ ieee80211_encap(struct ieee80211_node *n 
    4646        else 
    4747                hdrsize = sizeof(struct ieee80211_frame); 
     
    5252        case IEEE80211_M_IBSS: 
    5353        case IEEE80211_M_AHDEMO: 
    54 @@ -1622,6 +1624,7 @@ 
     54@@ -1622,6 +1624,7 @@ ieee80211_add_xr_param(u_int8_t *frm, st 
    5555        ie->param_len = frm - &ie->param_oui[0]; 
    5656        return frm; 
     
    6060 /* 
    6161  * Send a probe request frame with the specified ssid 
    62 @@ -1886,6 +1889,7 @@ 
     62@@ -1886,6 +1889,7 @@ ieee80211_send_mgmt(struct ieee80211_nod 
    6363                                sizeof(u_int16_t)+IEEE80211_CHALLENGE_LEN : 0)); 
    6464                if (skb == NULL) 
     
    6868                ((__le16 *)frm)[0] = 
    6969                        (is_shared_key) ? htole16(IEEE80211_AUTH_ALG_SHARED) 
    70 @@ -1960,6 +1964,7 @@ 
     70@@ -1960,6 +1964,7 @@ ieee80211_send_mgmt(struct ieee80211_nod 
    7171                        vap->app_ie[IEEE80211_APPIE_FRAME_ASSOC_REQ].length); 
    7272                if (skb == NULL) 
  • branches/8.09/package/madwifi/patches/356-hidden_ssid.patch

    r11932 r13708  
    66--- a/net80211/ieee80211_scan_sta.c 
    77+++ b/net80211/ieee80211_scan_sta.c 
    8 @@ -209,6 +209,19 @@ 
     8@@ -209,6 +209,19 @@ saveie(u_int8_t **iep, const u_int8_t *i 
    99                ieee80211_saveie(iep, ie); 
    1010 } 
     
    2626  * Process a beacon or probe response frame; create an 
    2727  * entry in the scan cache or update any previous entry. 
    28 @@ -233,8 +246,8 @@ 
     28@@ -233,8 +246,8 @@ sta_add(struct ieee80211_scan_state *ss, 
    2929        SCAN_STA_LOCK_IRQ(st); 
    3030        LIST_FOREACH(se, &st->st_hash[hash], se_hash) 
     
    3737  
    3838        MALLOC(se, struct sta_entry *, sizeof(struct sta_entry), 
    39 @@ -252,8 +265,8 @@ 
     39@@ -252,8 +265,8 @@ found: 
    4040        ise = &se->base; 
    4141  
  • branches/8.09/package/madwifi/patches/357-bgscan_thresh.patch

    r11925 r13708  
    77--- a/net80211/ieee80211_ioctl.h 
    88+++ b/net80211/ieee80211_ioctl.h 
    9 @@ -646,6 +646,7 @@ 
     9@@ -646,6 +646,7 @@ enum { 
    1010        IEEE80211_PARAM_MINRATE                 = 76,   /* Maximum rate (by table index) */ 
    1111        IEEE80211_PARAM_PROTMODE_RSSI           = 77,   /* RSSI Threshold for enabling protection mode */ 
     
    2626 #define IEEE80211_REGCLASSIDS_MAX      10      /* max regclass id list */ 
    2727  
    28 @@ -219,6 +221,10 @@ 
     28@@ -219,6 +221,10 @@ struct ieee80211vap { 
    2929        u_int8_t iv_nickname[IEEE80211_NWID_LEN]; 
    3030        u_int iv_bgscanidle;                            /* bg scan idle threshold */ 
     
    3737        struct ieee80211_roam iv_roam;                  /* sta-mode roaming state */ 
    3838  
    39 @@ -608,6 +614,7 @@ 
     39@@ -608,6 +614,7 @@ MALLOC_DECLARE(M_80211_VAP); 
    4040 #define IEEE80211_FEXT_SWBMISS         0x00000400      /* CONF: use software beacon timer */ 
    4141 #define IEEE80211_FEXT_DROPUNENC_EAPOL 0x00000800      /* CONF: drop unencrypted eapol frames */ 
     
    4747--- a/net80211/ieee80211_wireless.c 
    4848+++ b/net80211/ieee80211_wireless.c 
    49 @@ -2744,6 +2744,9 @@ 
     49@@ -2744,6 +2744,9 @@ ieee80211_ioctl_setparam(struct net_devi 
    5050                else 
    5151                        retv = EINVAL; 
     
    5757                /* units are in KILObits per second */ 
    5858                if (value >= 256 && value <= 54000) 
    59 @@ -3144,6 +3147,9 @@ 
     59@@ -3144,6 +3147,9 @@ ieee80211_ioctl_getparam(struct net_devi 
    6060        case IEEE80211_PARAM_BGSCAN_INTERVAL: 
    6161                param[0] = vap->iv_bgscanintvl / HZ;    /* seconds */ 
     
    6767                param[0] = vap->iv_mcast_rate;  /* seconds */ 
    6868                break; 
    69 @@ -5666,6 +5672,10 @@ 
     69@@ -5666,6 +5672,10 @@ static const struct iw_priv_args ieee802 
    7070          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "bgscanintvl" }, 
    7171        { IEEE80211_PARAM_BGSCAN_INTERVAL, 
     
    8080--- a/net80211/ieee80211_input.c 
    8181+++ b/net80211/ieee80211_input.c 
    82 @@ -3013,8 +3013,10 @@ 
     82@@ -3013,8 +3013,10 @@ contbgscan(struct ieee80211vap *vap) 
    8383 { 
    8484        struct ieee80211com *ic = vap->iv_ic; 
     
    9292  
    9393 static __inline int 
    94 @@ -3258,6 +3260,25 @@ 
     94@@ -3258,6 +3260,25 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    9595                        /* record tsf of last beacon */ 
    9696                        memcpy(ni->ni_tstamp.data, scan.tstamp, 
     
    120120--- a/net80211/ieee80211_scan.c 
    121121+++ b/net80211/ieee80211_scan.c 
    122 @@ -616,6 +616,7 @@ 
     122@@ -616,6 +616,7 @@ ieee80211_cancel_scan(struct ieee80211va 
    123123  
    124124                /* clear bg scan NOPICK and mark cancel request */ 
     
    128128                ss->ss_ops->scan_cancel(ss, vap); 
    129129                /* force it to fire asap */ 
    130 @@ -782,7 +783,7 @@ 
     130@@ -782,7 +783,7 @@ again: 
    131131                                ieee80211_sta_pwrsave(vap, 0); 
    132132                                if (ss->ss_next >= ss->ss_last) { 
     
    139139--- a/net80211/ieee80211_proto.c 
    140140+++ b/net80211/ieee80211_proto.c 
    141 @@ -1450,6 +1450,7 @@ 
     141@@ -1450,6 +1450,7 @@ __ieee80211_newstate(struct ieee80211vap 
    142142                } 
    143143                break; 
     
    149149--- a/net80211/ieee80211_output.c 
    150150+++ b/net80211/ieee80211_output.c 
    151 @@ -238,7 +238,8 @@ 
     151@@ -238,7 +238,8 @@ ieee80211_hardstart(struct sk_buff *skb, 
    152152        } 
    153153         
  • branches/8.09/package/madwifi/patches/358-ignore_broken_bssid.patch

    r11795 r13708  
    66--- a/net80211/ieee80211_scan_sta.c 
    77+++ b/net80211/ieee80211_scan_sta.c 
    8 @@ -242,6 +242,10 @@ 
     8@@ -242,6 +242,10 @@ sta_add(struct ieee80211_scan_state *ss, 
    99        struct ieee80211_scan_entry *ise; 
    1010        int hash; 
  • branches/8.09/package/madwifi/patches/359-disable_reassoc.patch

    r11796 r13708  
    66--- a/net80211/ieee80211_node.c 
    77+++ b/net80211/ieee80211_node.c 
    8 @@ -599,10 +599,9 @@ 
     8@@ -599,10 +599,9 @@ ieee80211_ibss_merge(struct ieee80211_no 
    99 EXPORT_SYMBOL(ieee80211_ibss_merge); 
    1010  
     
    1919  
    2020 /* 
    21 @@ -634,8 +633,8 @@ 
     21@@ -634,8 +633,8 @@ ieee80211_sta_join1(struct ieee80211_nod 
    2222         * Check if old+new node have the same ssid in which 
    2323         * case we can reassociate when operating in sta mode. 
  • branches/8.09/package/madwifi/patches/360-sta_nodes.patch

    r12983 r13708  
    66--- a/net80211/ieee80211_proto.c 
    77+++ b/net80211/ieee80211_proto.c 
    8 @@ -1348,7 +1348,7 @@ 
     8@@ -1348,7 +1348,7 @@ __ieee80211_newstate(struct ieee80211vap 
    99                                IEEE80211_SEND_MGMT(ni, 
    1010                                        IEEE80211_FC0_SUBTYPE_DISASSOC, 
     
    1515                        case IEEE80211_M_HOSTAP: 
    1616                                ieee80211_iterate_nodes(&ic->ic_sta, 
    17 @@ -1358,12 +1358,14 @@ 
     17@@ -1358,12 +1358,14 @@ __ieee80211_newstate(struct ieee80211vap 
    1818                                break; 
    1919                        } 
     
    3030                        case IEEE80211_M_HOSTAP: 
    3131                                ieee80211_iterate_nodes(&ic->ic_sta, 
    32 @@ -1376,7 +1378,6 @@ 
     32@@ -1376,7 +1378,6 @@ __ieee80211_newstate(struct ieee80211vap 
    3333                case IEEE80211_S_SCAN: 
    3434                        ieee80211_cancel_scan(vap); 
     
    3838                        ieee80211_reset_bss(vap); 
    3939                        break; 
    40 @@ -1429,10 +1430,12 @@ 
     40@@ -1429,10 +1430,12 @@ __ieee80211_newstate(struct ieee80211vap 
    4141                                        IEEE80211_SCAN_FOREVER, 
    4242                                        vap->iv_des_nssid, vap->iv_des_ssid, 
     
    5252                                if (ic->ic_roaming == IEEE80211_ROAMING_AUTO) 
    5353                                        ieee80211_check_scan(vap, 
    54 @@ -1511,7 +1514,7 @@ 
     54@@ -1511,7 +1514,7 @@ __ieee80211_newstate(struct ieee80211vap 
    5555                                IEEE80211_FC0_SUBTYPE_ASSOC_REQ, 0); 
    5656                        break; 
     
    6161                                /* NB: caller specifies ASSOC/REASSOC by arg */ 
    6262                                IEEE80211_SEND_MGMT(ni, arg ? 
    63 @@ -1779,6 +1782,7 @@ 
     63@@ -1779,6 +1782,7 @@ ieee80211_newstate(struct ieee80211vap * 
    6464                          ieee80211_state_name[nstate],  
    6565                          ieee80211_state_name[dstate]); 
     
    7171--- a/net80211/ieee80211_linux.c 
    7272+++ b/net80211/ieee80211_linux.c 
    73 @@ -233,33 +233,59 @@ 
     73@@ -233,33 +233,59 @@ ieee80211_vlan_vdetach(struct ieee80211v 
    7474 } 
    7575  
     
    150150  
    151151 void 
    152 @@ -269,18 +295,14 @@ 
     152@@ -269,18 +295,14 @@ ieee80211_notify_node_leave(struct ieee8 
    153153        struct net_device *dev = vap->iv_dev; 
    154154        union iwreq_data wreq; 
     
    179179--- a/net80211/ieee80211_node.c 
    180180+++ b/net80211/ieee80211_node.c 
    181 @@ -2332,6 +2332,7 @@ 
     181@@ -2332,6 +2332,7 @@ ieee80211_node_leave(struct ieee80211_no 
    182182                count_suppchans(ic, ni, -1); 
    183183        IEEE80211_UNLOCK_IRQ(ic); 
     
    187187         * Cleanup station state.  In particular clear various 
    188188         * state that might otherwise be reused if the node 
    189 @@ -2339,7 +2340,7 @@ 
     189@@ -2339,7 +2340,7 @@ ieee80211_node_leave(struct ieee80211_no 
    190190         * (and memory is reclaimed). 
    191191         */ 
     
    209209--- a/net80211/ieee80211_output.c 
    210210+++ b/net80211/ieee80211_output.c 
    211 @@ -2141,7 +2141,7 @@ 
     211@@ -2141,7 +2141,7 @@ ieee80211_send_mgmt(struct ieee80211_nod 
    212212  
    213213        ieee80211_mgmt_output(ieee80211_ref_node(ni), skb, type); 
     
    220220--- a/net80211/ieee80211_wireless.c 
    221221+++ b/net80211/ieee80211_wireless.c 
    222 @@ -514,8 +514,9 @@ 
     222@@ -514,8 +514,9 @@ ieee80211_ioctl_siwap(struct net_device  
    223223                        vap->iv_flags |= IEEE80211_F_DESBSSID; 
    224224  
     
    233233--- a/net80211/ieee80211_linux.h 
    234234+++ b/net80211/ieee80211_linux.h 
    235 @@ -643,6 +643,7 @@ 
     235@@ -643,6 +643,7 @@ void ieee80211_vlan_vdetach(struct ieee8 
    236236 #define        free_netdev(dev)        kfree(dev) 
    237237 #endif 
  • branches/8.09/package/madwifi/patches/361-bmiss_handling.patch

    r11932 r13708  
    88--- a/net80211/ieee80211_input.c 
    99+++ b/net80211/ieee80211_input.c 
    10 @@ -3400,12 +3400,17 @@ 
     10@@ -3400,12 +3400,17 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    1111                        } 
    1212  
     
    3232--- a/net80211/ieee80211_proto.c 
    3333+++ b/net80211/ieee80211_proto.c 
    34 @@ -1209,6 +1209,8 @@ 
     34@@ -1209,6 +1209,8 @@ ieee80211_beacon_miss(struct ieee80211co 
    3535        } 
    3636        /* XXX locking */ 
     
    4141                        IEEE80211_MSG_STATE | IEEE80211_MSG_DEBUG, 
    4242                        "%s\n", "beacon miss"); 
    43 @@ -1221,6 +1223,29 @@ 
     43@@ -1221,6 +1223,29 @@ ieee80211_beacon_miss(struct ieee80211co 
    4444                if (vap->iv_opmode != IEEE80211_M_STA || 
    4545                    vap->iv_state != IEEE80211_S_RUN) 
     
    7171 #ifdef ATH_SUPERG_DYNTURBO 
    7272                        /*  
    73 @@ -1621,14 +1646,14 @@ 
     73@@ -1621,14 +1646,14 @@ __ieee80211_newstate(struct ieee80211vap 
    7474                } 
    7575  
     
    9393--- a/net80211/ieee80211_var.h 
    9494+++ b/net80211/ieee80211_var.h 
    95 @@ -283,6 +283,7 @@ 
     95@@ -283,6 +283,7 @@ struct ieee80211vap { 
    9696  
    9797        struct timer_list iv_swbmiss;                   /* software beacon miss timer */ 
  • branches/8.09/package/madwifi/patches/362-rssithr.patch

    r11932 r13708  
    66--- a/net80211/ieee80211_ioctl.h 
    77+++ b/net80211/ieee80211_ioctl.h 
    8 @@ -647,6 +647,8 @@ 
     8@@ -647,6 +647,8 @@ enum { 
    99        IEEE80211_PARAM_PROTMODE_RSSI           = 77,   /* RSSI Threshold for enabling protection mode */ 
    1010        IEEE80211_PARAM_PROTMODE_TIMEOUT        = 78,   /* Timeout for expiring protection mode */ 
     
    1717--- a/net80211/ieee80211_wireless.c 
    1818+++ b/net80211/ieee80211_wireless.c 
    19 @@ -2799,6 +2799,12 @@ 
     19@@ -2799,6 +2799,12 @@ ieee80211_ioctl_setparam(struct net_devi 
    2020        case IEEE80211_PARAM_ROAM_RATE_11G: 
    2121                vap->iv_roam.rate11b = value; 
     
    3030                if (vap->iv_opmode == IEEE80211_M_HOSTAP) { 
    3131                        if (ic->ic_caps & IEEE80211_C_UAPSD) { 
    32 @@ -3184,6 +3190,12 @@ 
     32@@ -3184,6 +3190,12 @@ ieee80211_ioctl_getparam(struct net_devi 
    3333        case IEEE80211_PARAM_ROAM_RATE_11G: 
    3434                param[0] = vap->iv_roam.rate11b; 
     
    4343                if (vap->iv_opmode == IEEE80211_M_HOSTAP) { 
    4444                        if (IEEE80211_VAP_UAPSD_ENABLED(vap)) 
    45 @@ -5733,6 +5745,14 @@ 
     45@@ -5733,6 +5745,14 @@ static const struct iw_priv_args ieee802 
    4646          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "rate11g" }, 
    4747        { IEEE80211_PARAM_ROAM_RATE_11G, 
     
    6060--- a/net80211/ieee80211_input.c 
    6161+++ b/net80211/ieee80211_input.c 
    62 @@ -3261,6 +3261,19 @@ 
     62@@ -3261,6 +3261,19 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    6363                        memcpy(ni->ni_tstamp.data, scan.tstamp, 
    6464                                sizeof(ni->ni_tstamp)); 
     
    8282--- a/net80211/ieee80211_var.h 
    8383+++ b/net80211/ieee80211_var.h 
    84 @@ -223,6 +223,9 @@ 
     84@@ -223,6 +223,9 @@ struct ieee80211vap { 
    8585        u_int iv_bgscanintvl;                           /* bg scan min interval */ 
    8686        u_int iv_bgscanthr;                                     /* bg scan rssi threshold */ 
  • branches/8.09/package/madwifi/patches/363-fix_turbo.patch

    r12887 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -4925,7 +4925,7 @@ 
     3@@ -4925,7 +4925,7 @@ ath_beacon_generate(struct ath_softc *sc 
    44         * capability info and arrange for a mode change 
    55         * if needed. 
  • branches/8.09/package/madwifi/patches/364-memory_alloc.patch

    r11848 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -539,8 +539,8 @@ 
     3@@ -539,8 +539,8 @@ ath_attach(u_int16_t devid, struct net_d 
    44  
    55        /* Allocate space for dynamically determined maximum VAP count */ 
  • branches/8.09/package/madwifi/patches/365-turbo_channelsearch.patch

    r11848 r13708  
    11--- a/net80211/ieee80211.c 
    22+++ b/net80211/ieee80211.c 
    3 @@ -684,6 +684,7 @@ 
     3@@ -684,6 +684,7 @@ ieee80211_find_channel(struct ieee80211c 
    44        int i; 
    55  
  • branches/8.09/package/madwifi/patches/366-bstuck_thresh.patch

    r12887 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -389,6 +389,7 @@ 
     3@@ -389,6 +389,7 @@ static int ath_countrycode = CTRY_DEFAUL 
    44 static int ath_outdoor = AH_FALSE;             /* enable outdoor use */ 
    55 static int ath_xchanmode = AH_TRUE;            /* enable extended channels */ 
     
    99 static char *ratectl = DEF_RATE_CTL; 
    1010 static int rfkill = 0; 
    11 @@ -432,6 +433,7 @@ 
     11@@ -432,6 +433,7 @@ MODULE_PARM(rfkill, "i"); 
    1212 #ifdef ATH_CAP_TPC 
    1313 MODULE_PARM(tpc, "i"); 
     
    1717 MODULE_PARM(ratectl, "s"); 
    1818 #else 
    19 @@ -445,6 +447,7 @@ 
     19@@ -445,6 +447,7 @@ module_param(rfkill, int, 0600); 
    2020 #ifdef ATH_CAP_TPC 
    2121 module_param(tpc, int, 0600); 
     
    2525 module_param(ratectl, charp, 0600); 
    2626 #endif 
    27 @@ -457,6 +460,7 @@ 
     27@@ -457,6 +460,7 @@ MODULE_PARM_DESC(rfkill, "Enable/disable 
    2828 MODULE_PARM_DESC(tpc, "Enable/disable per-packet transmit power control (TPC) " 
    2929                "capability"); 
     
    3333                "[sta|ap|wds|adhoc|ahdemo|monitor] mode. defaults to sta, use " 
    3434                "'none' to disable"); 
    35 @@ -5072,7 +5076,7 @@ 
     35@@ -5072,7 +5076,7 @@ ath_beacon_send(struct ath_softc *sc, in 
    3636                DPRINTF(sc, ATH_DEBUG_BEACON_PROC, 
    3737                        "Missed %u consecutive beacons (n_beacon=%u)\n", 
     
    4242                return; 
    4343        } 
    44 @@ -5228,7 +5232,7 @@ 
     44@@ -5228,7 +5232,7 @@ ath_bstuck_tasklet(TQUEUE_ARG data) 
    4545         *     check will be true, in which case return 
    4646         *     without resetting the driver. 
  • branches/8.09/package/madwifi/patches/367-roaming.patch

    r11927 r13708  
    33--- a/net80211/ieee80211_node.c 
    44+++ b/net80211/ieee80211_node.c 
    5 @@ -659,7 +659,7 @@ 
     5@@ -659,7 +659,7 @@ ieee80211_sta_join1(struct ieee80211_nod 
    66                 */ 
    77                if (canreassoc) { 
     
    1414--- a/net80211/ieee80211_scan_sta.c 
    1515+++ b/net80211/ieee80211_scan_sta.c 
    16 @@ -748,14 +748,17 @@ 
     16@@ -748,14 +748,17 @@ notfound: 
    1717  * a reference to an entry w/o holding the lock on the table. 
    1818  */ 
     
    3434        SCAN_STA_UNLOCK_IRQ(st); 
    3535  
    36 @@ -772,7 +775,7 @@ 
     36@@ -772,7 +775,7 @@ sta_roam_check(struct ieee80211_scan_sta 
    3737        u_int8_t roamRate, curRate; 
    3838        int8_t roamRssi, curRssi; 
     
    4343                /* XXX something is wrong */ 
    4444                return; 
    45 @@ -866,8 +869,8 @@ 
     45@@ -866,8 +869,8 @@ sta_age(struct ieee80211_scan_state *ss) 
    4646         */ 
    4747        KASSERT(vap->iv_opmode == IEEE80211_M_STA, 
     
    5454                /* XXX vap is implicit */ 
    5555                sta_roam_check(ss, vap); 
    56 @@ -922,7 +925,11 @@ 
     56@@ -922,7 +925,11 @@ sta_assoc_fail(struct ieee80211_scan_sta 
    5757        struct sta_table *st = ss->ss_priv; 
    5858        struct sta_entry *se; 
     
    6767                se->se_fails++; 
    6868                se->se_lastfail = jiffies; 
    69 @@ -939,7 +946,7 @@ 
     69@@ -939,7 +946,7 @@ sta_assoc_success(struct ieee80211_scan_ 
    7070        struct sta_table *st = ss->ss_priv; 
    7171        struct sta_entry *se; 
  • branches/8.09/package/madwifi/patches/368-sta_ie_preserve.patch

    r11928 r13708  
    11--- a/net80211/ieee80211_scan_sta.c 
    22+++ b/net80211/ieee80211_scan_sta.c 
    3 @@ -201,8 +201,10 @@ 
     3@@ -201,8 +201,10 @@ sta_flush_table(struct sta_table *st) 
    44 } 
    55  
     
    1313                *iep = NULL; 
    1414        else 
    15 @@ -304,10 +306,10 @@ 
     15@@ -304,10 +306,10 @@ found: 
    1616                    (const struct ieee80211_tim_ie *) sp->tim; 
    1717                ise->se_dtimperiod = tim->tim_period; 
     
    3030--- a/net80211/ieee80211_input.c 
    3131+++ b/net80211/ieee80211_input.c 
    32 @@ -3106,6 +3106,7 @@ 
     32@@ -3106,6 +3106,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    3333                 */ 
    3434                IEEE80211_VERIFY_LENGTH(efrm - frm, 12); 
     
    4040--- a/net80211/ieee80211_scan.h 
    4141+++ b/net80211/ieee80211_scan.h 
    42 @@ -133,6 +133,7 @@ 
     42@@ -133,6 +133,7 @@ struct ieee80211_scanparams { 
    4343        u_int8_t erp; 
    4444        u_int16_t bintval; 
  • branches/8.09/package/madwifi/patches/369-mlme_assoc.patch

    r11932 r13708  
    11--- a/net80211/ieee80211_wireless.c 
    22+++ b/net80211/ieee80211_wireless.c 
    3 @@ -3723,6 +3723,7 @@ 
     3@@ -3723,6 +3723,7 @@ ieee80211_ioctl_setmlme(struct net_devic 
    44                if (vap->iv_opmode == IEEE80211_M_STA) { 
    55                        struct scanlookup lookup; 
  • branches/8.09/package/madwifi/patches/370-wdsvap.patch

    r12887 r13708  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -124,7 +124,7 @@ 
     3@@ -124,7 +124,7 @@ enum { 
    44 }; 
    55  
     
    1010 static int ath_init(struct net_device *); 
    1111 static int ath_set_ack_bitrate(struct ath_softc *, int); 
    12 @@ -1123,8 +1123,6 @@ 
     12@@ -1123,8 +1123,6 @@ ath_attach(u_int16_t devid, struct net_d 
    1313                        autocreatemode = IEEE80211_M_IBSS; 
    1414                else if (!strcmp(autocreate, "ahdemo")) 
     
    1919                        autocreatemode = IEEE80211_M_MONITOR; 
    2020                else { 
    21 @@ -1137,7 +1135,7 @@ 
     21@@ -1137,7 +1135,7 @@ ath_attach(u_int16_t devid, struct net_d 
    2222        if (autocreatemode != -1) { 
    2323                rtnl_lock(); 
     
    2828                if (vap == NULL) 
    2929                        EPRINTF(sc, "Autocreation of %s VAP failed.", autocreate); 
    30 @@ -1230,14 +1228,14 @@ 
     30@@ -1230,14 +1228,14 @@ ath_detach(struct net_device *dev) 
    3131  
    3232 static struct ieee80211vap * 
     
    4545        if (ic->ic_dev->flags & IFF_RUNNING) { 
    4646                /* needs to disable hardware too */ 
    47 @@ -1271,8 +1269,12 @@ 
     47@@ -1271,8 +1269,11 @@ ath_vap_create(struct ieee80211com *ic,  
    4848                } else 
    4949                        ic_opmode = opmode; 
     
    5353+               if (!master) 
    5454+                       return NULL; 
    55 +               ic_opmode = ic->ic_opmode; 
    5655+               break; 
    5756+       case IEEE80211_M_HOSTAP: 
     
    5958                /* XXX sta+ap for repeater/bridge application */ 
    6059                if ((sc->sc_nvaps != 0) && (ic->ic_opmode == IEEE80211_M_STA)) 
    61 @@ -1304,7 +1306,7 @@ 
     60@@ -1304,7 +1305,7 @@ ath_vap_create(struct ieee80211com *ic,  
    6261        } 
    6362  
     
    6867        vap = &avp->av_vap; 
    6968        avp->av_newstate = vap->iv_newstate; 
    70 @@ -4209,8 +4211,7 @@ 
     69@@ -4209,8 +4210,7 @@ ath_calcrxfilter(struct ath_softc *sc) 
    7170        if (ic->ic_opmode == IEEE80211_M_STA || 
    7271            sc->sc_opmode == HAL_M_IBSS ||      /* NB: AHDEMO too */ 
     
    7877        if (sc->sc_nmonvaps > 0) 
    7978                rfilt |= (HAL_RX_FILTER_CONTROL | HAL_RX_FILTER_BEACON | 
    80 @@ -9030,8 +9031,6 @@ 
     79@@ -9030,8 +9030,6 @@ ath_calibrate(unsigned long arg) 
    8180                 * set sc->beacons if we might need to restart 
    8281                  * them after ath_reset. */ 
     
    8988--- a/net80211/ieee80211.c 
    9089+++ b/net80211/ieee80211.c 
    91 @@ -396,7 +396,7 @@ 
     90@@ -373,10 +373,25 @@ void 
     91 ieee80211_ifdetach(struct ieee80211com *ic) 
     92 { 
     93        struct ieee80211vap *vap; 
     94+       int count; 
     95+ 
     96+       /* bring down all vaps */ 
     97+       TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { 
     98+               ieee80211_stop(vap->iv_dev); 
     99+       } 
     100+ 
     101+       /* wait for all subifs to disappear */ 
     102+       do { 
     103+               schedule(); 
     104+               rtnl_lock(); 
     105+               count = ic->ic_subifs; 
     106+               rtnl_unlock(); 
     107+       } while (count > 0); 
     108  
     109        rtnl_lock(); 
     110-       while ((vap = TAILQ_FIRST(&ic->ic_vaps)) != NULL) 
     111+       while ((vap = TAILQ_FIRST(&ic->ic_vaps)) != NULL) { 
     112                ic->ic_vap_delete(vap); 
     113+       } 
     114        rtnl_unlock(); 
     115  
     116        del_timer(&ic->ic_dfs_excl_timer); 
     117@@ -396,7 +411,7 @@ EXPORT_SYMBOL(ieee80211_ifdetach); 
    92118  
    93119 int 
     
    98124 #define        IEEE80211_C_OPMODE \ 
    99125        (IEEE80211_C_IBSS | IEEE80211_C_HOSTAP | IEEE80211_C_AHDEMO | \ 
    100 @@ -510,9 +510,18 @@ 
     126@@ -510,9 +525,18 @@ ieee80211_vap_setup(struct ieee80211com  
    101127  
    102128        vap->iv_monitor_crc_errors = 0; 
     
    119145  
    120146        ieee80211_crypto_vattach(vap); 
    121 @@ -547,7 +556,8 @@ 
     147@@ -547,7 +571,8 @@ ieee80211_vap_attach(struct ieee80211vap 
    122148        ifmedia_set(&vap->iv_media, imr.ifm_active); 
    123149  
     
    129155  
    130156        IEEE80211_ADDR_COPY(dev->dev_addr, vap->iv_myaddr); 
    131 @@ -579,10 +589,24 @@ 
     157@@ -579,10 +604,27 @@ ieee80211_vap_detach(struct ieee80211vap 
    132158 { 
    133159        struct ieee80211com *ic = vap->iv_ic; 
     
    137163+       /* Drop all WDS links that belong to this vap */ 
    138164+       while ((avp = TAILQ_FIRST(&vap->iv_wdslinks)) != NULL) { 
    139 +               ieee80211_stop(avp->iv_dev); 
     165+               if (avp->iv_state != IEEE80211_S_INIT) 
     166+                       ieee80211_stop(avp->iv_dev); 
    140167+               ic->ic_vap_delete(avp); 
    141168+       } 
     
    144171        IEEE80211_LOCK_IRQ(ic); 
    145172-       TAILQ_REMOVE(&ic->ic_vaps, vap, iv_next); 
    146 +       if (vap->iv_wdsnode) 
     173+       if (vap->iv_wdsnode) { 
     174+               vap->iv_wdsnode->ni_subif = NULL; 
    147175+               ieee80211_unref_node(&vap->iv_wdsnode); 
     176+       } 
    148177+       if ((vap->iv_opmode == IEEE80211_M_WDS) && 
    149178+               (vap->iv_master != NULL)) 
     
    157186--- a/net80211/ieee80211_ioctl.h 
    158187+++ b/net80211/ieee80211_ioctl.h 
    159 @@ -474,7 +474,7 @@ 
     188@@ -474,7 +474,7 @@ struct ieee80211req { 
    160189 #define        IEEE80211_IOC_DTIM_PERIOD       52      /* DTIM period (beacons) */ 
    161190 #define        IEEE80211_IOC_BEACON_INTERVAL   53      /* beacon interval (ms) */ 
     
    166195 #define        IEEE80211_IOC_TURBOP            57      /* ATH turbo' (on, off) */ 
    167196 #define        IEEE80211_IOC_APPIEBUF          58      /* IE in the management frame */ 
    168 @@ -552,8 +552,8 @@ 
     197@@ -552,8 +552,8 @@ struct ieee80211req_scan_result { 
    169198 #define        IEEE80211_IOCTL_HALMAP          (SIOCIWFIRSTPRIV+21) 
    170199 #define        IEEE80211_IOCTL_ADDMAC          (SIOCIWFIRSTPRIV+22) 
     
    177206 #define        IEEE80211_IOCTL_SETSCANLIST     (SIOCIWFIRSTPRIV+31) 
    178207  
     208@@ -649,6 +649,7 @@ enum { 
     209        IEEE80211_PARAM_BGSCAN_THRESH           = 79,   /* bg scan rssi threshold */ 
     210        IEEE80211_PARAM_RSSI_DIS_THR    = 80,   /* rssi threshold for disconnection */ 
     211        IEEE80211_PARAM_RSSI_DIS_COUNT  = 81,   /* counter for rssi threshold */ 
     212+       IEEE80211_PARAM_WDS_SEP                 = 82,   /* move wds stations into separate interfaces */ 
     213 }; 
     214  
     215 #define        SIOCG80211STATS                 (SIOCDEVPRIVATE+2) 
    179216--- a/net80211/ieee80211_linux.h 
    180217+++ b/net80211/ieee80211_linux.h 
    181 @@ -650,5 +650,5 @@ 
     218@@ -81,6 +81,12 @@ set_quality(struct iw_quality *iq, u_int 
     219 #endif 
     220 } 
     221  
     222+#ifndef container_of 
     223+#define container_of(ptr, type, member) ({          \ 
     224+    const typeof( ((type *)0)->member ) *__mptr = (ptr);    \ 
     225+           (type *)( (char *)__mptr - offsetof(type,member) );}) 
     226+#endif 
     227+ 
     228 /* 
     229  * Task deferral 
     230  * 
     231@@ -113,6 +119,29 @@ typedef void *IEEE80211_TQUEUE_ARG; 
     232  
     233 #define        IEEE80211_RESCHEDULE    schedule 
     234  
     235+#include <linux/sched.h> 
     236+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,41) 
     237+#include <linux/tqueue.h> 
     238+#define work_struct                    tq_struct 
     239+#define schedule_work(t)               schedule_task((t)) 
     240+#define flush_scheduled_work()         flush_scheduled_tasks() 
     241+#define IEEE80211_INIT_WORK(t, f) do {                         \ 
     242+       memset((t), 0, sizeof(struct tq_struct)); \ 
     243+       (t)->routine = (void (*)(void*)) (f);   \ 
     244+       (t)->data=(void *) (t);                 \ 
     245+} while (0) 
     246+#else 
     247+#include <linux/workqueue.h> 
     248+ 
     249+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) 
     250+#define IEEE80211_INIT_WORK(_t, _f)    INIT_WORK((_t), (void (*)(void *))(_f), (_t)); 
     251+#else 
     252+#define IEEE80211_INIT_WORK(_t, _f)    INIT_WORK((_t), (_f)); 
     253+#endif 
     254+ 
     255+#endif /* KERNEL_VERSION < 2.5.41 */ 
     256+ 
     257+ 
     258 /* Locking */ 
     259 /* NB: beware, spin_is_locked() is not usefully defined for !(DEBUG || SMP) 
     260  * because spinlocks do not exist in this configuration. Instead IRQs  
     261@@ -167,6 +196,14 @@ typedef spinlock_t ieee80211com_lock_t; 
     262        IEEE80211_VAPS_LOCK_ASSERT(_ic);                \ 
     263        spin_unlock_bh(&(_ic)->ic_vapslock);            \ 
     264 } while (0) 
     265+#define        IEEE80211_VAPS_LOCK_IRQ(_ic) do {                                       \ 
     266+       unsigned long __ilockflags;                                     \ 
     267+       IEEE80211_VAPS_LOCK_CHECK(_ic);                                 \ 
     268+       spin_lock_irqsave(&(_ic)->ic_vapslock, __ilockflags); 
     269+#define        IEEE80211_VAPS_UNLOCK_IRQ(_ic)                                  \ 
     270+       IEEE80211_VAPS_LOCK_ASSERT(_ic);                                        \ 
     271+       spin_unlock_irqrestore(&(_ic)->ic_vapslock, __ilockflags);      \ 
     272+} while (0) 
     273  
     274 #if (defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)) && defined(spin_is_locked) 
     275 #define IEEE80211_VAPS_LOCK_ASSERT(_ic) \ 
     276@@ -650,5 +687,5 @@ struct ifreq; 
    182277 int ieee80211_ioctl_create_vap(struct ieee80211com *, struct ifreq *, 
    183278        struct net_device *); 
     
    188283--- a/net80211/ieee80211_var.h 
    189284+++ b/net80211/ieee80211_var.h 
    190 @@ -187,6 +187,12 @@ 
     285@@ -187,6 +187,12 @@ struct ieee80211vap { 
    191286        struct ieee80211_proc_entry *iv_proc_entries; 
    192287        struct vlan_group *iv_vlgrp;                    /* vlan group state */ 
     
    201296        struct ieee80211com *iv_ic;                     /* back ptr to common state */ 
    202297        u_int32_t iv_debug;                             /* debug msg flags */ 
    203 @@ -447,7 +453,7 @@ 
     298@@ -316,6 +322,7 @@ struct ieee80211com { 
     299        u_int8_t ic_myaddr[IEEE80211_ADDR_LEN]; 
     300        struct timer_list ic_inact;             /* mgmt/inactivity timer */ 
     301  
     302+       unsigned int ic_subifs; 
     303        u_int32_t ic_flags;                     /* state flags */ 
     304        u_int32_t ic_flags_ext;                 /* extension of state flags */ 
     305        u_int32_t ic_caps;                      /* capabilities */ 
     306@@ -447,7 +454,7 @@ struct ieee80211com { 
    204307        atomic_t ic_node_counter; 
    205308        /* Virtual AP create/delete */ 
     
    210313  
    211314        /* Send/recv 802.11 management frame */ 
    212 @@ -703,7 +709,7 @@ 
     315@@ -619,6 +626,7 @@ MALLOC_DECLARE(M_80211_VAP); 
     316 #define IEEE80211_FEXT_DROPUNENC_EAPOL 0x00000800      /* CONF: drop unencrypted eapol frames */ 
     317 #define IEEE80211_FEXT_APPIE_UPDATE    0x00001000      /* STATE: beacon APP IE updated */ 
     318 #define IEEE80211_FEXT_BGSCAN_THR      0x00002000      /* bgscan due to low rssi */ 
     319+#define IEEE80211_FEXT_WDSSEP          0x00004000      /* move wds clients into separate interfaces */ 
     320  
     321 #define IEEE80211_COM_UAPSD_ENABLE(_ic)                ((_ic)->ic_flags_ext |= IEEE80211_FEXT_UAPSD) 
     322 #define IEEE80211_COM_UAPSD_DISABLE(_ic)       ((_ic)->ic_flags_ext &= ~IEEE80211_FEXT_UAPSD) 
     323@@ -703,7 +711,7 @@ MALLOC_DECLARE(M_80211_VAP); 
    213324 int ieee80211_ifattach(struct ieee80211com *); 
    214325 void ieee80211_ifdetach(struct ieee80211com *); 
     
    221332--- a/net80211/ieee80211_wireless.c 
    222333+++ b/net80211/ieee80211_wireless.c 
    223 @@ -2190,7 +2190,7 @@ 
     334@@ -2190,7 +2190,7 @@ ieee80211_setupxr(struct ieee80211vap *v 
    224335                        ieee80211_scan_flush(ic);       /* NB: could optimize */ 
    225336  
     
    230341  
    231342                        /* We use iv_xrvap to link to the parent VAP as well */ 
    232 @@ -3801,74 +3801,51 @@ 
     343@@ -2867,6 +2867,14 @@ ieee80211_ioctl_setparam(struct net_devi 
     344                else 
     345                        vap->iv_minrateindex = 0; 
     346                break; 
     347+       case IEEE80211_PARAM_WDS_SEP: 
     348+               if (vap->iv_opmode != IEEE80211_M_HOSTAP) 
     349+                       retv = -EINVAL; 
     350+               else if (value) 
     351+                       vap->iv_flags_ext |= IEEE80211_FEXT_WDSSEP; 
     352+               else 
     353+                       vap->iv_flags_ext &= ~IEEE80211_FEXT_WDSSEP; 
     354+               break; 
     355 #ifdef ATH_REVERSE_ENGINEERING 
     356        case IEEE80211_PARAM_DUMPREGS: 
     357                ieee80211_dump_registers(dev, info, w, extra); 
     358@@ -3223,6 +3231,9 @@ ieee80211_ioctl_getparam(struct net_devi 
     359        case IEEE80211_PARAM_MINRATE: 
     360                param[0] = vap->iv_minrateindex; 
     361                break; 
     362+       case IEEE80211_PARAM_WDS_SEP: 
     363+               param[0] = !!(vap->iv_flags_ext & IEEE80211_FEXT_WDSSEP); 
     364+               break; 
     365        default: 
     366                return -EOPNOTSUPP; 
     367        } 
     368@@ -3801,74 +3812,54 @@ ieee80211_ioctl_setmlme(struct net_devic 
    233369        return 0; 
    234370 } 
     
    255391- 
    256392-       memcpy(vap->wds_mac, sa->sa_data, IEEE80211_ADDR_LEN); 
    257 - 
     393+       if (vap->iv_opmode != IEEE80211_M_HOSTAP) 
     394+               return -EINVAL; 
     395  
    258396-       printk("%s: Added WDS MAC: " MAC_FMT "\n", dev->name, 
    259397-               MAC_ADDR(vap->wds_mac)); 
     
    330468  
    331469 /* 
    332 @@ -5391,8 +5368,8 @@ 
     470@@ -4470,6 +4461,8 @@ get_sta_space(void *arg, struct ieee8021 
     471        struct ieee80211vap *vap = ni->ni_vap; 
     472        size_t ielen; 
     473  
     474+       if (req->vap->iv_wdsnode && ni->ni_subif) 
     475+               vap = ni->ni_subif; 
     476        if (vap != req->vap && vap != req->vap->iv_xrvap)       /* only entries for this vap */ 
     477                return; 
     478        if ((vap->iv_opmode == IEEE80211_M_HOSTAP || 
     479@@ -4489,6 +4482,8 @@ get_sta_info(void *arg, struct ieee80211 
     480        size_t ielen, len; 
     481        u_int8_t *cp; 
     482  
     483+       if (req->vap->iv_wdsnode && ni->ni_subif) 
     484+               vap = ni->ni_subif; 
     485        if (vap != req->vap && vap != req->vap->iv_xrvap)       /* only entries for this vap (or) xrvap */ 
     486                return; 
     487        if ((vap->iv_opmode == IEEE80211_M_HOSTAP || 
     488@@ -5391,8 +5386,8 @@ static const struct iw_priv_args ieee802 
    333489          IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "kickmac"}, 
    334490        { IEEE80211_IOCTL_WDSADDMAC, 
     
    341497          IW_PRIV_TYPE_CHANLIST | IW_PRIV_SIZE_FIXED, 0,"setchanlist" }, 
    342498        { IEEE80211_IOCTL_GETCHANLIST, 
    343 @@ -5884,8 +5861,8 @@ 
     499@@ -5790,6 +5785,10 @@ static const struct iw_priv_args ieee802 
     500         0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_minrate"}, 
     501        { IEEE80211_IOCTL_SETSCANLIST, 
     502         IW_PRIV_TYPE_CHAR | 255, 0, "setscanlist"}, 
     503+       { IEEE80211_PARAM_WDS_SEP, 
     504+        IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "wdssep"}, 
     505+       { IEEE80211_PARAM_WDS_SEP, 
     506+        0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_wdssep"}, 
     507  
     508 #ifdef ATH_REVERSE_ENGINEERING 
     509        /* 
     510@@ -5884,8 +5883,8 @@ static const iw_handler ieee80211_priv_h 
    344511 #endif 
    345512        set_priv(IEEE80211_IOCTL_ADDMAC, ieee80211_ioctl_addmac), 
     
    352519        set_priv(IEEE80211_IOCTL_SETSCANLIST, ieee80211_ioctl_setscanlist), 
    353520 #ifdef ATH_REVERSE_ENGINEERING 
    354 @@ -5956,7 +5933,7 @@ 
     521@@ -5913,6 +5912,8 @@ static int 
     522 ieee80211_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 
     523 { 
     524        struct ieee80211vap *vap = dev->priv; 
     525+       struct ieee80211com *ic = vap->iv_ic; 
     526+       struct ieee80211_node *ni; 
     527  
     528        switch (cmd) { 
     529        case SIOCG80211STATS: 
     530@@ -5921,8 +5922,20 @@ ieee80211_ioctl(struct net_device *dev,  
     531        case SIOC80211IFDESTROY: 
     532                if (!capable(CAP_NET_ADMIN)) 
     533                        return -EPERM; 
     534+               /* drop all node subifs */ 
     535+               TAILQ_FOREACH(ni, &ic->ic_sta.nt_node, ni_list) { 
     536+                       struct ieee80211vap *avp = ni->ni_subif; 
     537+ 
     538+                       if (ni->ni_vap != vap) 
     539+                               continue; 
     540+                       if (!avp) 
     541+                               continue; 
     542+                       ni->ni_subif = NULL; 
     543+                       ieee80211_stop(avp->iv_dev); 
     544+                       ic->ic_vap_delete(avp); 
     545+               } 
     546                ieee80211_stop(vap->iv_dev);    /* force state before cleanup */ 
     547-               vap->iv_ic->ic_vap_delete(vap); 
     548+               ic->ic_vap_delete(vap); 
     549                return 0; 
     550        case IEEE80211_IOCTL_GETKEY: 
     551                return ieee80211_ioctl_getkey(dev, (struct iwreq *) ifr); 
     552@@ -5956,7 +5969,7 @@ ieee80211_ioctl_create_vap(struct ieee80 
    355553  
    356554        strncpy(name, cp.icp_name, sizeof(name)); 
     
    361559                return -EIO; 
    362560  
    363 @@ -5973,9 +5950,9 @@ 
     561@@ -5973,9 +5986,9 @@ EXPORT_SYMBOL(ieee80211_ioctl_create_vap 
    364562  */ 
    365563 struct ieee80211vap* 
     
    375573--- a/net80211/ieee80211_input.c 
    376574+++ b/net80211/ieee80211_input.c 
    377 @@ -201,6 +201,7 @@ 
     575@@ -199,8 +199,10 @@ ieee80211_input(struct ieee80211vap * va 
     576 { 
     577 #define        HAS_SEQ(type)   ((type & 0x4) == 0) 
    378578        struct ieee80211_node * ni = ni_or_null; 
    379         struct ieee80211com *ic = vap->iv_ic; 
    380         struct net_device *dev = vap->iv_dev; 
     579-       struct ieee80211com *ic = vap->iv_ic; 
     580-       struct net_device *dev = vap->iv_dev; 
     581+       struct ieee80211com *ic; 
     582+       struct net_device *dev; 
    381583+       struct ieee80211_node *ni_wds = NULL; 
     584+       struct net_device_stats *stats; 
    382585        struct ieee80211_frame *wh; 
    383586        struct ieee80211_key *key; 
    384587        struct ether_header *eh; 
    385 @@ -545,11 +546,29 @@ 
     588@@ -212,6 +214,19 @@ ieee80211_input(struct ieee80211vap * va 
     589        u_int8_t *bssid; 
     590        u_int16_t rxseq; 
     591  
     592+       type = -1;                      /* undefined */ 
     593+ 
     594+       if (!vap) 
     595+               goto out; 
     596+ 
     597+       ic = vap->iv_ic; 
     598+       if (!ic) 
     599+               goto out; 
     600+ 
     601+       dev = vap->iv_dev; 
     602+       if (!dev) 
     603+               goto out; 
     604+ 
     605        /* initialize ni as in the previous API */ 
     606        if (ni_or_null == NULL) { 
     607                /* This function does not 'own' vap->iv_bss, so we cannot 
     608@@ -227,7 +242,6 @@ ieee80211_input(struct ieee80211vap * va 
     609  
     610        /* XXX adjust device in sk_buff? */ 
     611  
     612-       type = -1;                      /* undefined */ 
     613        /* 
     614         * In monitor mode, send everything directly to bpf. 
     615         * Also do not process frames w/o i_addr2 any further. 
     616@@ -434,7 +448,7 @@ ieee80211_input(struct ieee80211vap * va 
     617  
     618        switch (type) { 
     619        case IEEE80211_FC0_TYPE_DATA: 
     620-               hdrspace = ieee80211_hdrspace(ic, wh); 
     621+               hdrspace = ieee80211_hdrsize(wh); 
     622                if (skb->len < hdrspace) { 
     623                        IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY, 
     624                                wh, "data", "too short: len %u, expecting %u", 
     625@@ -444,16 +458,24 @@ ieee80211_input(struct ieee80211vap * va 
     626                } 
     627                switch (vap->iv_opmode) { 
     628                case IEEE80211_M_STA: 
     629-                       if ((dir != IEEE80211_FC1_DIR_FROMDS) && 
     630-                           (!((vap->iv_flags_ext & IEEE80211_FEXT_WDS) && 
     631-                           (dir == IEEE80211_FC1_DIR_DSTODS)))) { 
     632+                       switch(dir) { 
     633+                       case IEEE80211_FC1_DIR_FROMDS: 
     634+                               break; 
     635+                       case IEEE80211_FC1_DIR_DSTODS: 
     636+                               if (vap->iv_flags_ext & IEEE80211_FEXT_WDS) 
     637+                                       break; 
     638+                       default: 
     639                                IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY, 
     640                                        wh, "data", "invalid dir 0x%x", dir); 
     641                                vap->iv_stats.is_rx_wrongdir++; 
     642                                goto out; 
     643                        } 
     644  
     645-                       if (IEEE80211_IS_MULTICAST(wh->i_addr1)) { 
     646+                       if (IEEE80211_IS_MULTICAST(wh->i_addr1)) { 
     647+                               /* ignore 3-addr mcast if we're WDS STA */ 
     648+                               if (vap->iv_flags_ext & IEEE80211_FEXT_WDS) 
     649+                                       goto out; 
     650+ 
     651                                /* Discard multicast if IFF_MULTICAST not set */ 
     652                                if ((0 != memcmp(wh->i_addr3, dev->broadcast, ETH_ALEN)) &&  
     653                                        (0 == (dev->flags & IFF_MULTICAST))) { 
     654@@ -481,24 +503,10 @@ ieee80211_input(struct ieee80211vap * va 
     655                                        vap->iv_stats.is_rx_mcastecho++; 
     656                                        goto out; 
     657                                } 
     658-                               /*  
     659-                                * if it is brodcasted by me on behalf of 
     660-                                * a station behind me, drop it. 
     661-                                */ 
     662-                               if (vap->iv_flags_ext & IEEE80211_FEXT_WDS) { 
     663-                                       struct ieee80211_node_table *nt; 
     664-                                       struct ieee80211_node *ni_wds; 
     665-                                       nt = &ic->ic_sta; 
     666-                                       ni_wds = ieee80211_find_wds_node(nt, wh->i_addr3); 
     667-                                       if (ni_wds) { 
     668-                                               ieee80211_unref_node(&ni_wds); 
     669-                                               IEEE80211_DISCARD(vap, IEEE80211_MSG_INPUT, 
     670-                                                       wh, NULL, "%s", 
     671-                                                       "multicast echo originated from node behind me"); 
     672-                                               vap->iv_stats.is_rx_mcastecho++; 
     673-                                               goto out; 
     674-                                       } 
     675-                               } 
     676+                       } else { 
     677+                               /* Same BSSID, but not meant for us to receive */ 
     678+                               if (!IEEE80211_ADDR_EQ(wh->i_addr1, vap->iv_myaddr)) 
     679+                                       goto out; 
     680                        } 
     681                        break; 
     682                case IEEE80211_M_IBSS: 
     683@@ -540,16 +548,32 @@ ieee80211_input(struct ieee80211vap * va 
     684                                vap->iv_stats.is_rx_notassoc++; 
     685                                goto err; 
     686                        } 
     687+ 
     688+                       /* subif isn't fully set up yet, drop the frame */ 
     689+                       if (ni->ni_subif == ni->ni_vap) 
     690+                               goto err; 
     691+ 
     692                        /* 
     693                         * If we're a 4 address packet, make sure we have an entry in 
    386694                         * the node table for the packet source address (addr4). 
    387695                         * If not, add one. 
    388696                         */ 
    389 -                       /* XXX: Useless node mgmt API; make better */ 
    390 + 
    391697+                       /* check for wds link first */ 
    392                         if (dir == IEEE80211_FC1_DIR_DSTODS) { 
    393 -                               struct ieee80211_node_table *nt; 
    394 +                               struct ieee80211vap *avp; 
    395 + 
    396 +                               TAILQ_FOREACH(avp, &vap->iv_wdslinks, iv_wdsnext) { 
    397 +                                       if (!memcmp(avp->wds_mac, wh->i_addr2, IEEE80211_ADDR_LEN)) { 
    398 +                                               IEEE80211_LOCK_IRQ(ni->ni_ic); 
    399 +                                               ni_wds = avp->iv_wdsnode; 
    400 +                                               IEEE80211_UNLOCK_IRQ(ni->ni_ic); 
    401 +                                               break; 
    402 +                                       } 
    403 +                               } 
    404 +                               if (ni_wds != NULL) { 
    405 +                                       ieee80211_unref_node(&ni); 
    406 +                                       ni = ieee80211_ref_node(ni_wds); 
     698+                       if ((dir == IEEE80211_FC1_DIR_DSTODS) && !ni->ni_subif) { 
     699+                               if (vap->iv_flags_ext & IEEE80211_FEXT_WDSSEP) { 
     700+                                       ieee80211_wds_addif(ni); 
     701+                                       /* we must drop frames here until the interface has 
     702+                                        * been fully separated, otherwise a bridge might get 
     703+                                        * confused */ 
     704+                                       goto err; 
    407705+                               } 
    408706+                       } 
    409707+ 
    410 +                       /* XXX: Useless node mgmt API; make better */ 
    411 +                       if ((dir == IEEE80211_FC1_DIR_DSTODS) && !ni_wds) { 
     708                        /* XXX: Useless node mgmt API; make better */ 
     709-                       if (dir == IEEE80211_FC1_DIR_DSTODS) { 
     710-                               struct ieee80211_node_table *nt; 
     711+                       if ((dir == IEEE80211_FC1_DIR_DSTODS) && !vap->iv_wdsnode && 
     712+                                       !ni_wds && !ni->ni_subif) { 
    412713+                               struct ieee80211_node_table *nt = &ic->ic_sta; 
    413714                                struct ieee80211_frame_addr4 *wh4; 
     
    416717                                if (!(vap->iv_flags_ext & IEEE80211_FEXT_WDS)) { 
    417718                                        IEEE80211_DISCARD(vap, IEEE80211_MSG_INPUT, 
    418 @@ -557,7 +576,6 @@ 
     719@@ -557,7 +581,6 @@ ieee80211_input(struct ieee80211vap * va 
    419720                                        goto err; 
    420721                                } 
     
    424725                                /* Last call increments ref count if !NULL */ 
    425726                                if ((ni_wds != NULL) && (ni_wds != ni)) { 
    426 @@ -3084,8 +3102,7 @@ 
     727@@ -608,6 +631,11 @@ ieee80211_input(struct ieee80211vap * va 
     728                        goto out; 
     729                } 
     730  
     731+               /* check if there is any data left */ 
     732+               hdrspace = ieee80211_hdrspace(ic, wh); 
     733+               if (skb->len < hdrspace) 
     734+                       goto out; 
     735+ 
     736                /* 
     737                 * Handle privacy requirements.  Note that we 
     738                 * must not be preempted from here until after 
     739@@ -680,8 +708,12 @@ ieee80211_input(struct ieee80211vap * va 
     740                if (! accept_data_frame(vap, ni, key, skb, eh)) 
     741                        goto out; 
     742  
     743-               vap->iv_devstats.rx_packets++; 
     744-               vap->iv_devstats.rx_bytes += skb->len; 
     745+               if (ni->ni_subif && ((eh)->ether_type != __constant_htons(ETHERTYPE_PAE))) 
     746+                       stats = &ni->ni_subif->iv_devstats; 
     747+               else 
     748+                       stats = &vap->iv_devstats; 
     749+               stats->rx_packets++; 
     750+               stats->rx_bytes += skb->len; 
     751                IEEE80211_NODE_STAT(ni, rx_data); 
     752                IEEE80211_NODE_STAT_ADD(ni, rx_bytes, skb->len); 
     753                ic->ic_lastdata = jiffies; 
     754@@ -1114,6 +1146,13 @@ ieee80211_deliver_data(struct ieee80211_ 
     755                dev = vap->iv_xrvap->iv_dev; 
     756 #endif 
     757  
     758+       /* if the node has a wds subif, move data frames there, 
     759+        * but keep EAP traffic on the master */ 
     760+       if (ni->ni_subif && ((eh)->ether_type != __constant_htons(ETHERTYPE_PAE))) { 
     761+               vap = ni->ni_subif; 
     762+               dev = vap->iv_dev; 
     763+       } 
     764+ 
     765        /* perform as a bridge within the vap */ 
     766        /* XXX intra-vap bridging only */ 
     767        if (vap->iv_opmode == IEEE80211_M_HOSTAP && 
     768@@ -1139,7 +1178,16 @@ ieee80211_deliver_data(struct ieee80211_ 
     769                        if (ni1 != NULL) { 
     770                                if (ni1->ni_vap == vap && 
     771                                    ieee80211_node_is_authorized(ni1) && 
     772+                                       !ni1->ni_subif && 
     773                                    ni1 != vap->iv_bss) { 
     774+ 
     775+                                       /* tried to bridge to a subif, drop the packet */ 
     776+                                       if (ni->ni_subif) { 
     777+                                               ieee80211_unref_node(&ni1); 
     778+                                               ieee80211_dev_kfree_skb(&skb); 
     779+                                               return; 
     780+                                       } 
     781+ 
     782                                        skb1 = skb; 
     783                                        skb = NULL; 
     784                                } 
     785@@ -3084,8 +3132,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    427786                    (vap->iv_opmode == IEEE80211_M_STA && ni->ni_associd) || 
    428787                    (vap->iv_opmode == IEEE80211_M_IBSS) || 
     
    434793                        return; 
    435794                } 
    436 @@ -3471,13 +3488,53 @@ 
     795@@ -3471,13 +3518,54 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    437796                 */ 
    438797                if (ic->ic_flags & IEEE80211_F_SCAN) { 
     
    461820+                               TAILQ_FOREACH(avp, &vap->iv_wdslinks, iv_wdsnext) { 
    462821+                                       if (!memcmp(avp->wds_mac, wh->i_addr2, IEEE80211_ADDR_LEN)) { 
     822+                                               if (avp->iv_state != IEEE80211_S_RUN) 
     823+                                                       continue; 
    463824+                                               found = 1; 
    464825+                                               break; 
    465826+                                       } 
    466827+                               } 
    467 +                               if (found) { 
    468 +                                       if (!avp->iv_wdsnode) 
    469 +                                               break; 
    470 +                                       ni = ni_or_null = avp->iv_wdsnode; 
    471 +                               } else { 
    472 +                                       avp = NULL; 
    473 +                               } 
     828+                               if (!found) 
     829+                                       break; 
     830+ 
     831+                               ni = ni_or_null = avp->iv_wdsnode; 
     832+                       } else if (vap->iv_opmode == IEEE80211_M_WDS) { 
     833+                               ni = ni_or_null = vap->iv_wdsnode; 
    474834+                       } 
    475835+                       IEEE80211_UNLOCK_IRQ(vap->iv_ic); 
     
    493853                                /* 
    494854                                 * Copy data from beacon to neighbor table. 
    495 @@ -3490,6 +3547,7 @@ 
     855@@ -3490,6 +3578,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    496856                                IEEE80211_ADDR_COPY(ni->ni_bssid, wh->i_addr3); 
    497857                                memcpy(ni->ni_tstamp.data, scan.tstamp, 
     
    503863--- a/net80211/ieee80211_node.c 
    504864+++ b/net80211/ieee80211_node.c 
    505 @@ -1553,22 +1553,24 @@ 
     865@@ -47,6 +47,7 @@ 
     866 #include <linux/netdevice.h> 
     867 #include <linux/etherdevice.h> 
     868 #include <linux/random.h> 
     869+#include <linux/rtnetlink.h> 
     870