Changeset 16033


Ignore:
Timestamp:
2009-05-24T19:19:13+02:00 (7 years ago)
Author:
nbd
Message:

merge madwifi from trunk to 8.09

Location:
branches/8.09/package/madwifi
Files:
11 added
1 deleted
20 edited

Legend:

Unmodified
Added
Removed
  • branches/8.09/package/madwifi/Makefile

    r15833 r16033  
    1313PKG_REV:=3314 
    1414PKG_VERSION:=r$(PKG_REV) 
    15 PKG_RELEASE:=1.1 
     15PKG_RELEASE:=2 
    1616 
    1717PKG_SOURCE_PROTO:=svn 
     
    2525PATCH_DIR=./patches 
    2626 
     27HAL_VERSION:=20090508 
     28HAL_FILE:=ath_hal-$(HAL_VERSION).tgz 
     29HAL_MD5SUM:=4ab7ae8bdb96c0be388c98bf8f92d5ca 
     30 
    2731PKG_BUILD_DEPENDS:=wprobe 
    2832 
    2933include $(INCLUDE_DIR)/package.mk 
     34 
     35COMPRESSION:=1 
     36 
     37define Download/hal 
     38  FILE:=$(HAL_FILE) 
     39  URL:=http://mirror2.openwrt.org/sources 
     40  MD5SUM:=$(HAL_MD5SUM) 
     41endef 
     42$(eval $(call Download,hal)) 
     43 
    3044 
    3145ifneq ($(CONFIG_TARGET_atheros),) 
     
    126140endif 
    127141 
    128 MADWIFI_APPLETS:=80211stats athchans athctrl athkey athstats wlanconfig ath_info 
     142MADWIFI_APPLETS:=80211stats athchans athkey athstats wlanconfig ath_info 
    129143ifdef CONFIG_MADWIFI_DEBUG 
    130144  MADWIFI_APPLETS += athdebug 80211debug 
     
    164178        PATH="$(TARGET_PATH)" \ 
    165179        ARCH="$(LINUX_KARCH)" \ 
     180        ARCH-y="$(LINUX_KARCH)" \ 
    166181        CROSS_COMPILE="$(TARGET_CROSS)" \ 
    167182        TARGET="$(HAL_TARGET)" \ 
     
    171186        LDOPTS="--no-warn-mismatch " \ 
    172187        ATH_RATE="ath_rate/$(RATE_CONTROL)" \ 
     188        ATH_CAP_SUPERG_COMP="$(COMPRESSION)" \ 
    173189        DO_MULTI=1 \ 
    174190        INCS="$(MADWIFI_INC)" \ 
     
    179195 
    180196ifeq ($(CONFIG_MADWIFI_UPSTREAM),) 
    181   HALFILE:=$(lastword $(sort $(wildcard ./ath_hal-*.tgz))) 
    182 endif 
    183  
    184 ifneq ($(HALFILE),) 
    185197  define Build/Prepare/HAL 
    186198        rm -rf $(PKG_BUILD_DIR)/tmp 
    187199        mkdir -p $(PKG_BUILD_DIR)/tmp 
    188         tar xvzf $(HALFILE) -C $(PKG_BUILD_DIR)/tmp 
     200        tar xvzf $(DL_DIR)/$(HAL_FILE) -C $(PKG_BUILD_DIR)/tmp 
    189201        $(CP) $(PKG_BUILD_DIR)/tmp/ath_hal*/* $(PKG_BUILD_DIR)/hal/ 
    190202        rm -rf $(PKG_BUILD_DIR)/tmp 
  • branches/8.09/package/madwifi/patches/340-maxrate.patch

    r13708 r16033  
    5757        struct ieee80211_app_ie app_ie[IEEE80211_APPIE_NUM_OF_FRAME]; /* app-specified IEs by frame type */ 
    5858        u_int32_t app_filter;                           /* filters which management frames are forwarded to app */ 
    59 +       int iv_maxrateindex; 
     59+       u_int iv_maxrateindex; 
    6060 }; 
    6161  
  • branches/8.09/package/madwifi/patches/341-minrate.patch

    r13708 r16033  
    6363        IEEE80211_PARAM_BEACON_MISS_THRESH_MS   = 74,   /* Beacon miss threshold (in ms) */ 
    6464        IEEE80211_PARAM_MAXRATE                 = 75,   /* Maximum rate (by table index) */ 
    65 +       IEEE80211_PARAM_MINRATE                 = 76,   /* Maximum rate (by table index) */ 
     65+       IEEE80211_PARAM_MINRATE                 = 76,   /* Minimum rate (by table index) */ 
    6666 }; 
    6767  
     
    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 */ 
    74         int iv_maxrateindex; 
    75 +       int iv_minrateindex; 
     74        u_int iv_maxrateindex; 
     75+       u_int iv_minrateindex; 
    7676 }; 
    7777  
  • branches/8.09/package/madwifi/patches/346-protmode_trig.patch

    r13708 r16033  
    4343        IEEE80211_PARAM_BEACON_MISS_THRESH_MS   = 74,   /* Beacon miss threshold (in ms) */ 
    4444        IEEE80211_PARAM_MAXRATE                 = 75,   /* Maximum rate (by table index) */ 
    45         IEEE80211_PARAM_MINRATE                 = 76,   /* Maximum rate (by table index) */ 
     45        IEEE80211_PARAM_MINRATE                 = 76,   /* Minimum rate (by table index) */ 
    4646+       IEEE80211_PARAM_PROTMODE_RSSI           = 77,   /* RSSI Threshold for enabling protection mode */ 
    4747+       IEEE80211_PARAM_PROTMODE_TIMEOUT        = 78,   /* Timeout for expiring protection mode */ 
  • branches/8.09/package/madwifi/patches/357-bgscan_thresh.patch

    r13708 r16033  
    88+++ b/net80211/ieee80211_ioctl.h 
    99@@ -646,6 +646,7 @@ enum { 
    10         IEEE80211_PARAM_MINRATE                 = 76,   /* Maximum rate (by table index) */ 
     10        IEEE80211_PARAM_MINRATE                 = 76,   /* Minimum rate (by table index) */ 
    1111        IEEE80211_PARAM_PROTMODE_RSSI           = 77,   /* RSSI Threshold for enabling protection mode */ 
    1212        IEEE80211_PARAM_PROTMODE_TIMEOUT        = 78,   /* Timeout for expiring protection mode */ 
  • branches/8.09/package/madwifi/patches/389-autochannel.patch

    r15719 r16033  
    1717        sc->sc_curchan.channelFlags = ath_chan2flags(ic->ic_curchan); 
    1818        if (!ath_hal_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_FALSE, &status)) { 
    19 @@ -2914,6 +2916,40 @@ ath_hw_check_atim(struct ath_softc *sc,  
     19@@ -2913,6 +2915,48 @@ ath_hw_check_atim(struct ath_softc *sc,  
     20        return 0; 
    2021 } 
    2122  
    22   
     23+#define AR5K_MIBC       0x0040 
     24+#define AR5K_MIBC_FREEZE   (1 << 1) 
     25+#define AR5K_TXFC       0x80ec 
     26+#define AR5K_RXFC       0x80f0 
    2327+#define AR5K_RXCLEAR   0x80f4 
    2428+#define AR5K_CYCLES            0x80f8 
     
    3741+               return; 
    3842+ 
     43+       OS_REG_WRITE(ah, AR5K_MIBC, AR5K_MIBC_FREEZE); 
    3944+       rx = OS_REG_READ(ah, AR5K_RXCLEAR); 
    4045+       cc = OS_REG_READ(ah, AR5K_CYCLES); 
     46+ 
    4147+       if (!cc) 
    4248+               return; 
    4349+ 
    4450+       if (rx > cc) 
    45 +               return; /* wraparound */ 
     51+               return; /* should not happen */ 
    4652+ 
    4753+       if (sc->sc_last_chan) 
     
    5157+       OS_REG_WRITE(ah, AR5K_RXCLEAR, 0); 
    5258+       OS_REG_WRITE(ah, AR5K_CYCLES, 0); 
     59+       OS_REG_WRITE(ah, AR5K_TXFC, 0); 
     60+       OS_REG_WRITE(ah, AR5K_RXFC, 0); 
     61+       OS_REG_WRITE(ah, AR5K_MIBC, 0); 
    5362+} 
    5463+#undef AR5K_RXCLEAR 
    5564+#undef AR5K_CYCLES 
    56 + 
     65  
    5766 /* 
    5867  * Reset the hardware w/o losing operational state.  This is 
    59   * basically a more efficient way of doing ath_stop, ath_init, 
    60 @@ -2940,6 +2976,7 @@ ath_reset(struct net_device *dev) 
     68@@ -2940,6 +2984,7 @@ ath_reset(struct net_device *dev) 
    6169         * Convert to a HAL channel description with the flags 
    6270         * constrained to reflect the current operating mode. 
     
    6674        sc->sc_curchan.channel = c->ic_freq; 
    6775        sc->sc_curchan.channelFlags = ath_chan2flags(c); 
    68 @@ -9022,6 +9059,7 @@ ath_chan_set(struct ath_softc *sc, struc 
     76@@ -9022,6 +9067,7 @@ ath_chan_set(struct ath_softc *sc, struc 
    6977        u_int8_t channel_change_required = 0; 
    7078        struct timeval tv; 
    7179  
    72 +       ath_fetch_idle_time(sc); 
     80+ 
    7381        /* 
    7482         * Convert to a HAL channel description with 
    7583         * the flags constrained to reflect the current 
     84@@ -9030,6 +9076,14 @@ ath_chan_set(struct ath_softc *sc, struc 
     85        memset(&hchan, 0, sizeof(HAL_CHANNEL)); 
     86        hchan.channel = chan->ic_freq; 
     87        hchan.channelFlags = ath_chan2flags(chan); 
     88+ 
     89+       /* don't do duplicate channel changes, but do 
     90+        * store the available idle time */ 
     91+       ath_fetch_idle_time(sc); 
     92+       if ((sc->sc_curchan.channel == hchan.channel) && 
     93+               (sc->sc_curchan.channelFlags == hchan.channelFlags)) 
     94+               return 0; 
     95+ 
     96        KASSERT(hchan.channel != 0, 
     97                ("bogus channel %u/0x%x", hchan.channel, hchan.channelFlags)); 
     98        do_gettimeofday(&tv); 
    7699--- a/ath/if_athvar.h 
    77100+++ b/ath/if_athvar.h 
     
    124147        /* XXX: rssi useless? pick_channel evaluates it anyway */ 
    125148        EVALUATE_CRITERION(rssi, params->ss->ss_priv, a, b); 
     149@@ -519,16 +533,9 @@ pick_channel(struct ieee80211_scan_state 
     150 #endif 
     151  
     152        best = NULL; 
     153-       best_rssi = 0xff; /* If signal is bigger than 0xff, we'd be melting. */ 
     154  
     155        for (i = 0; i < ss_last; i++) { 
     156                c = &chans[i]; 
     157-               benefit = best_rssi - as->as_maxrssi[c->chan->ic_ieee]; 
     158-               sta_assoc = ic->ic_sta_assoc; 
     159- 
     160-               /* Don't switch... */ 
     161-               if (benefit <= 0) 
     162-                       continue; 
     163  
     164                /* Verify channel is not marked for non-occupancy */ 
     165                if (IEEE80211_IS_CHAN_RADAR(c->chan)) 
     166@@ -546,31 +553,8 @@ pick_channel(struct ieee80211_scan_state 
     167                                break; 
     168                } 
     169  
     170-               if (sta_assoc != 0) { 
     171-                       int sl = ic->ic_cn_total -  
     172-                               ic->ic_chan_nodes[c->chan->ic_ieee]; /* count */ 
     173-                       if (ic->ic_sc_algorithm == IEEE80211_SC_LOOSE) { 
     174-                               int sl_max = ic->ic_sc_sldg * benefit; 
     175-                               sl = 1000 * sl / sta_assoc; /* permil */ 
     176-                               IEEE80211_DPRINTF(vap, IEEE80211_MSG_SCAN, 
     177-                                               "%s: chan %d, dB gained: %d, " 
     178-                                               "STAs lost: %d permil (max %d)\n", 
     179-                                               __func__, c->chan->ic_ieee,  
     180-                                               benefit, sl, sl_max); 
     181-                               if (sl > sl_max) 
     182-                                       continue; 
     183-                       } else if (((ic->ic_sc_algorithm ==  
     184-                                                IEEE80211_SC_TIGHT) || 
     185-                                       (ic->ic_sc_algorithm ==  
     186-                                                IEEE80211_SC_STRICT)) &&  
     187-                                       (sl > 0)) { 
     188-                               /* Break the loop as the subsequent chans  
     189-                                * won't be better. */ 
     190-                               break; 
     191-                       } 
     192-               } 
     193                best = c->chan; 
     194-               best_rssi = as->as_maxrssi[best->ic_ieee]; 
     195+               break; 
     196        } 
     197  
     198        if (best != NULL) { 
     199@@ -599,6 +583,9 @@ ap_end(struct ieee80211_scan_state *ss,  
     200                ("wrong opmode %u", vap->iv_opmode)); 
     201  
     202        ic = vap->iv_ic; 
     203+ 
     204+       /* record stats for the channel that was scanned last */ 
     205+       ic->ic_set_channel(ic); 
     206        bestchan = pick_channel(ss, vap, flags); 
     207        if (bestchan == NULL) { 
     208                if (ss->ss_last > 0) { 
     209--- a/net80211/ieee80211_scan.c 
     210+++ b/net80211/ieee80211_scan.c 
     211@@ -1002,20 +1002,34 @@ ieee80211_scan_add_channels(struct ieee8 
     212 { 
     213        struct ieee80211_channel *c, *cg; 
     214        u_int modeflags; 
     215+       int has_non_turbo = 0; 
     216        int i; 
     217  
     218        KASSERT(mode < ARRAY_SIZE(chanflags), ("Unexpected mode %u", mode)); 
     219        modeflags = chanflags[mode]; 
     220        for (i = 0; i < ic->ic_nchans; i++) { 
     221                c = &ic->ic_channels[i]; 
     222+               if (c->ic_flags & (IEEE80211_CHAN_TURBO | IEEE80211_CHAN_STURBO)) 
     223+                       continue; 
     224+ 
     225+               has_non_turbo = 1; 
     226+               break; 
     227+       } 
     228+       for (i = 0; i < ic->ic_nchans; i++) { 
     229+               c = &ic->ic_channels[i]; 
     230                if (c == NULL || isclr(ic->ic_chan_active, c->ic_ieee)) 
     231                        continue; 
     232                if (c->ic_scanflags & IEEE80211_NOSCAN_SET) 
     233                        continue; 
     234-               if (modeflags && 
     235-                       ((c->ic_flags & IEEE80211_CHAN_ALLTURBO) != 
     236-                        (modeflags & IEEE80211_CHAN_ALLTURBO))) 
     237-                       continue; 
     238+               if (modeflags) { 
     239+                       if ((c->ic_flags & IEEE80211_CHAN_ALLTURBO) != 
     240+                                (modeflags & IEEE80211_CHAN_ALLTURBO)) 
     241+                               continue; 
     242+               } else if (has_non_turbo) { 
     243+                       if ((ss->ss_vap->iv_opmode == IEEE80211_M_HOSTAP) && 
     244+                               (c->ic_flags & (IEEE80211_CHAN_TURBO | IEEE80211_CHAN_STURBO))) 
     245+                               continue; 
     246+               } 
     247                if (mode == IEEE80211_MODE_AUTO) { 
     248                        /* 
     249                         * XXX special-case 11b/g channels so we select 
  • branches/8.09/package/madwifi/patches/393-mbss_vap_auth.patch

    r15465 r16033  
    320320--- a/ath/if_ath.c 
    321321+++ b/ath/if_ath.c 
    322 @@ -6580,9 +6580,8 @@ ath_recv_mgmt(struct ieee80211vap * vap, 
     322@@ -6588,9 +6588,8 @@ ath_recv_mgmt(struct ieee80211vap * vap, 
    323323  
    324324        sc->sc_recv_mgmt(vap, ni_or_null, skb, subtype, rssi, rtsf); 
     
    331331        if (ni == NULL) { 
    332332                DPRINTF(sc, ATH_DEBUG_BEACON, "Dropping; node unknown.\n"); 
    333 @@ -6737,7 +6736,9 @@ ath_rx_poll(struct net_device *dev, int  
     333@@ -6745,7 +6744,9 @@ ath_rx_poll(struct net_device *dev, int  
    334334        struct ath_desc *ds; 
    335335        struct ath_rx_status *rs; 
     
    341341        int type; 
    342342        u_int phyerr; 
    343 @@ -6892,12 +6893,15 @@ rx_accept: 
     343@@ -6900,12 +6901,15 @@ rx_accept: 
    344344                skb_trim(skb, skb->len - IEEE80211_CRC_LEN); 
    345345  
     
    359359                        if (ni && ni->ni_table) { 
    360360                                ieee80211_check_mic(ni, skb); 
    361 @@ -6959,11 +6963,24 @@ drop_micfail: 
     361@@ -6967,11 +6971,24 @@ drop_micfail: 
    362362                 * for its use.  If the sender is unknown spam the 
    363363                 * frame; it'll be dropped where it's not wanted. 
     
    386386                        type = ieee80211_input(ni->ni_vap, ni, skb, rs->rs_rssi, bf->bf_tsf); 
    387387                        ieee80211_unref_node(&ni); 
    388 @@ -6972,24 +6989,35 @@ drop_micfail: 
     388@@ -6980,24 +6997,35 @@ drop_micfail: 
    389389                         * No key index or no entry, do a lookup and 
    390390                         * add the node to the mapping table if possible. 
  • branches/8.09/package/madwifi/patches/395-ath_ff_unmap.patch

    r15465 r16033  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -13511,7 +13511,7 @@ cleanup_ath_buf(struct ath_softc *sc, st 
     3@@ -13527,7 +13527,7 @@ cleanup_ath_buf(struct ath_softc *sc, st 
    44                                bus_unmap_single( 
    55                                        sc->sc_bdev, 
  • branches/8.09/package/madwifi/patches/396-napi_ff_fix.patch

    r15465 r16033  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -6725,10 +6725,10 @@ ath_rx_poll(struct net_device *dev, int  
     3@@ -6733,10 +6733,10 @@ ath_rx_poll(struct net_device *dev, int  
    44 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) 
    55        struct ath_softc *sc = container_of(napi, struct ath_softc, sc_napi); 
     
    1414        struct ath_buf *bf; 
    1515        struct ieee80211com *ic = &sc->sc_ic; 
    16 @@ -6771,13 +6771,15 @@ process_rx_again: 
     16@@ -6779,13 +6779,15 @@ process_rx_again: 
    1717                        break; 
    1818                } 
     
    3434                skb = bf->bf_skb; 
    3535                if (skb == NULL) { 
    36 @@ -7061,8 +7063,8 @@ rx_next: 
     36@@ -7069,8 +7071,8 @@ rx_next: 
    3737                if (sc->sc_isr & HAL_INT_RX) { 
    3838                        u_int64_t hw_tsf = ath_hal_gettsf64(ah); 
  • branches/8.09/package/madwifi/patches/400-new_hal.patch

    r15465 r16033  
    1616         * Check if the MAC has multi-rate retry support. 
    1717         * We do this by trying to setup a fake extended 
    18 @@ -7555,7 +7563,7 @@ ath_txq_setup(struct ath_softc *sc, int  
     18@@ -7563,7 +7571,7 @@ ath_txq_setup(struct ath_softc *sc, int  
    1919        if (qtype == HAL_TX_QUEUE_UAPSD) 
    2020                qi.tqi_qflags = HAL_TXQ_TXDESCINT_ENABLE; 
     
    123123 /* 
    124124  * The functions in this section are not intended to be invoked by MadWifi 
     125--- a/ath/if_ath_hal.h 
     126+++ b/ath/if_ath_hal.h 
     127@@ -778,17 +778,6 @@ static inline HAL_STATUS ath_hal_getcapa 
     128        return ret; 
     129 } 
     130  
     131-static inline HAL_BOOL ath_hal_radar_wait(struct ath_hal *ah, HAL_CHANNEL *a1) 
     132-{ 
     133-       HAL_BOOL ret; 
     134-       ATH_HAL_LOCK_IRQ(ah->ah_sc); 
     135-       ath_hal_set_function(__func__); 
     136-       ret = ah->ah_radarWait(ah, a1); 
     137-       ath_hal_set_function(NULL); 
     138-       ATH_HAL_UNLOCK_IRQ(ah->ah_sc); 
     139-       return ret; 
     140-} 
     141- 
     142 static inline HAL_BOOL ath_hal_setmcastfilterindex(struct ath_hal *ah, 
     143                                                   u_int32_t index) 
     144 { 
     145@@ -1268,8 +1257,6 @@ static inline void ath_hal_dump_map(stru 
     146        /* HAL_STATUS ah_getCapability(struct ath_hal *ah, HAL_CAPABILITY_TYPE a1, u_int32_t capability, u_int32_t *result) */ 
     147        __print_symbol("%s=ah_getCapability\n", 
     148                       (unsigned long)ah->ah_getCapability); 
     149-       /* HAL_BOOL ah_radarWait(struct ath_hal *ah, HAL_CHANNEL *a1) */ 
     150-       __print_symbol("%s=ah_radarWait\n", (unsigned long)ah->ah_radarWait); 
     151        /* HAL_BOOL ah_setMulticastFilterIndex(struct ath_hal *ah, u_int32_t index) */ 
     152        __print_symbol("%s=ah_setMulticastFilterIndex\n", 
     153                       (unsigned long)ah->ah_setMulticastFilterIndex); 
  • branches/8.09/package/madwifi/patches/406-monitor_r3711.patch

    r15465 r16033  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -6521,7 +6521,7 @@ ath_capture(struct net_device *dev, cons 
     3@@ -6529,7 +6529,7 @@ ath_capture(struct net_device *dev, cons 
    44  
    55        /* Never copy the SKB, as it is ours on the RX side, and this is the  
     
    1010                DPRINTF(sc, ATH_DEBUG_ANY, 
    1111                        "Dropping; ath_skb_removepad failed!\n"); 
    12 @@ -6529,6 +6529,8 @@ ath_capture(struct net_device *dev, cons 
     12@@ -6537,6 +6537,8 @@ ath_capture(struct net_device *dev, cons 
    1313        } 
    1414         
  • branches/8.09/package/madwifi/patches/408-changeset_r3337.patch

    r15465 r16033  
    1111--- a/ath/if_ath.c 
    1212+++ b/ath/if_ath.c 
    13 @@ -3138,7 +3138,7 @@ ath_tx_startraw(struct net_device *dev,  
     13@@ -3146,7 +3146,7 @@ ath_tx_startraw(struct net_device *dev,  
    1414        struct ath_softc *sc = dev->priv; 
    1515        struct ath_hal *ah = sc->sc_ah; 
  • branches/8.09/package/madwifi/patches/411-autochannel_multi.patch

    r15719 r16033  
    8888+                       bias += get_overlap(ch->freq, c->ic_freq, ch->bw, bw); 
    8989+       } 
    90 +       return min(bias, (u32) 100); 
     90+       return bias; 
    9191+} 
    9292+EXPORT_SYMBOL(ieee80211_scan_get_bias); 
     
    125125 ieee80211_scan_attach(struct ieee80211com *ic) 
    126126 { 
    127 @@ -1155,7 +1272,7 @@ ieee80211_scan_dfs_action(struct ieee802 
     127@@ -1169,7 +1286,7 @@ ieee80211_scan_dfs_action(struct ieee802 
    128128                                IEEE80211_RADAR_CHANCHANGE_TBTT_COUNT; 
    129129                        ic->ic_flags |= IEEE80211_F_CHANSWITCH; 
     
    134134                                        "%s: directly switching to channel " 
    135135                                        "%3d (%4d MHz)\n", __func__, 
    136 @@ -1166,6 +1283,9 @@ ieee80211_scan_dfs_action(struct ieee802 
     136@@ -1180,6 +1297,9 @@ ieee80211_scan_dfs_action(struct ieee802 
    137137                         * change the channel here. */ 
    138138                        change_channel(ic, new_channel); 
     
    308308  
    309309  
    310 @@ -605,6 +613,7 @@ ap_end(struct ieee80211_scan_state *ss,  
     310@@ -575,6 +583,7 @@ ap_end(struct ieee80211_scan_state *ss,  
    311311        struct ap_state *as = ss->ss_priv; 
    312312        struct ieee80211_channel *bestchan = NULL; 
     
    316316  
    317317        SCAN_AP_LOCK_IRQ(as); 
    318 @@ -613,8 +622,11 @@ ap_end(struct ieee80211_scan_state *ss,  
    319                 ("wrong opmode %u", vap->iv_opmode)); 
    320   
    321         ic = vap->iv_ic; 
     318@@ -586,8 +595,11 @@ ap_end(struct ieee80211_scan_state *ss,  
     319  
     320        /* record stats for the channel that was scanned last */ 
     321        ic->ic_set_channel(ic); 
    322322+       spin_lock_irqsave(&channel_lock, sflags); 
    323323+       ieee80211_scan_set_bss_channel(ic, NULL); 
     
    328328                        /* no suitable channel, should not happen */ 
    329329                        printk(KERN_ERR "%s: %s: no suitable channel! " 
    330 @@ -633,6 +645,7 @@ ap_end(struct ieee80211_scan_state *ss,  
     330@@ -606,6 +618,7 @@ ap_end(struct ieee80211_scan_state *ss,  
    331331                                        bestchan->ic_freq, bestchan->ic_flags & 
    332332                                        ~IEEE80211_CHAN_TURBO)) == NULL) { 
     
    336336                                return 0; 
    337337                        } 
    338 @@ -645,6 +658,9 @@ ap_end(struct ieee80211_scan_state *ss,  
     338@@ -618,6 +631,9 @@ ap_end(struct ieee80211_scan_state *ss,  
    339339                        as->as_action = action; 
    340340                as->as_selbss = se; 
  • branches/8.09/package/madwifi/patches/412-fragmentation_fix.patch

    r15465 r16033  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -3675,6 +3675,7 @@ ff_bypass: 
     3@@ -3683,6 +3683,7 @@ ff_bypass: 
    44                 *  already alloc'd 
    55                 */ 
  • branches/8.09/package/madwifi/patches/414-txpower.patch

    r15465 r16033  
    166166 static void ath_poll_disable(struct net_device *dev); 
    167167 static void ath_poll_enable(struct net_device *dev); 
    168 @@ -3159,7 +3158,7 @@ ath_tx_startraw(struct net_device *dev,  
     168@@ -3167,7 +3166,7 @@ ath_tx_startraw(struct net_device *dev,  
    169169        try0 = ph->try0; 
    170170        rt = sc->sc_currates; 
     
    175175        pktlen = skb->len + IEEE80211_CRC_LEN; 
    176176  
    177 @@ -8381,7 +8380,7 @@ ath_tx_start(struct net_device *dev, str 
     177@@ -8389,7 +8388,7 @@ ath_tx_start(struct net_device *dev, str 
    178178                            pktlen,                     /* packet length */ 
    179179                            hdrlen,                     /* header length */ 
     
    184184                            keyix,                      /* key cache index */ 
    185185                            antenna,                    /* antenna mode */ 
    186 @@ -10364,59 +10363,16 @@ ath_get_clamped_maxtxpower(struct ath_so 
     186@@ -10380,59 +10379,16 @@ ath_get_clamped_maxtxpower(struct ath_so 
    187187  
    188188 /* XXX: this function needs some locking to avoid being called  
  • branches/8.09/package/madwifi/patches/416-wprobe.patch

    r15719 r16033  
    420420        if (decrease) 
    421421                sc->sc_nvaps--; 
    422 @@ -5931,6 +5934,7 @@ ath_node_cleanup(struct ieee80211_node * 
     422@@ -5939,6 +5942,7 @@ ath_node_cleanup(struct ieee80211_node * 
    423423        /* Clean up node-specific rate things - this currently appears to  
    424424         * always be a no-op */ 
     
    428428        ATH_NODE_UAPSD_LOCK_IRQ(an); 
    429429 #ifdef IEEE80211_DEBUG_REFCNT 
    430 @@ -7001,6 +7005,8 @@ drop_micfail: 
     430@@ -7009,6 +7013,8 @@ drop_micfail: 
    431431                                goto lookup_slowpath; 
    432432                        } 
     
    437437                        ieee80211_unref_node(&ni); 
    438438                } else { 
    439 @@ -7011,15 +7017,22 @@ drop_micfail: 
     439@@ -7019,15 +7025,22 @@ drop_micfail: 
    440440  
    441441 lookup_slowpath: 
     
    462462                                /* 
    463463                                 * If the station has a key cache slot assigned 
    464 @@ -8599,6 +8612,7 @@ ath_tx_processq(struct ath_softc *sc, st 
     464@@ -8607,6 +8620,7 @@ ath_tx_processq(struct ath_softc *sc, st 
    465465                                sc->sc_stats.ast_tx_rssi = ts->ts_rssi; 
    466466                                ATH_RSSI_LPF(an->an_halstats.ns_avgtxrssi, 
     
    470470                                    bf->bf_skb->priority == WME_AC_VI) 
    471471                                        ni->ni_ic->ic_wme.wme_hipri_traffic++; 
    472 @@ -10090,6 +10104,7 @@ ath_newassoc(struct ieee80211_node *ni,  
     472@@ -10106,6 +10120,7 @@ ath_newassoc(struct ieee80211_node *ni,  
    473473        struct ath_softc *sc = ic->ic_dev->priv; 
    474474  
  • branches/8.09/package/madwifi/patches/417-beacon_txpower.patch

    r15465 r16033  
    1010 static int maxvaps = -1; 
    1111 static int outdoor = -1; 
    12 @@ -4923,6 +4923,7 @@ ath_beacon_setup(struct ath_softc *sc, s 
     12@@ -4931,6 +4931,7 @@ ath_beacon_setup(struct ath_softc *sc, s 
    1313        (((_ic)->ic_flags & (IEEE80211_F_SHPREAMBLE | IEEE80211_F_USEBARKER))\ 
    1414                == IEEE80211_F_SHPREAMBLE) 
     
    1818        struct ath_hal *ah = sc->sc_ah; 
    1919        struct ath_desc *ds; 
    20 @@ -4990,7 +4991,7 @@ ath_beacon_setup(struct ath_softc *sc, s 
     20@@ -4998,7 +4999,7 @@ ath_beacon_setup(struct ath_softc *sc, s 
    2121                skb->len + IEEE80211_CRC_LEN,   /* frame length */ 
    2222                sizeof(struct ieee80211_frame), /* header length */ 
  • branches/8.09/package/madwifi/patches/419-skb_unmap_crash.patch

    r15465 r16033  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -13477,7 +13477,7 @@ cleanup_ath_buf(struct ath_softc *sc, st 
     3@@ -13493,7 +13493,7 @@ cleanup_ath_buf(struct ath_softc *sc, st 
    44        if (bf == NULL)  
    55                return bf; 
     
    1010                        sc->sc_bdev, 
    1111                        bf->bf_skbaddr,  
    12 @@ -13485,8 +13485,6 @@ cleanup_ath_buf(struct ath_softc *sc, st 
     12@@ -13501,8 +13501,6 @@ cleanup_ath_buf(struct ath_softc *sc, st 
    1313                                sc->sc_rxbufsize : bf->bf_skb->len), 
    1414                        direction); 
  • branches/8.09/package/madwifi/patches/420-diversity_fix.patch

    r15719 r16033  
    1919         * Setup the hardware after reset: the key cache 
    2020         * is filled as needed and the receive engine is 
    21 @@ -3010,7 +3006,6 @@ ath_reset(struct net_device *dev) 
     21@@ -3018,7 +3014,6 @@ ath_reset(struct net_device *dev) 
    2222        ath_setintmit(sc); 
    2323        ath_update_txpow(sc);           /* update tx power state */ 
     
    2727                EPRINTF(sc, "Unable to start receive logic.\n"); 
    2828        if (sc->sc_softled) 
    29 @@ -5344,27 +5339,6 @@ ath_beacon_send(struct ath_softc *sc, in 
     29@@ -5352,27 +5347,6 @@ ath_beacon_send(struct ath_softc *sc, in 
    3030        } else if ((sc->sc_updateslot == COMMIT) && (sc->sc_slotupdate == slot)) 
    3131                ath_setslottime(sc);            /* commit change to hardware */ 
     
    5555                /* 
    5656                 * Stop any current DMA and put the new frame(s) on the queue. 
    57 @@ -6725,9 +6699,8 @@ ath_setdefantenna(struct ath_softc *sc,  
     57@@ -6733,9 +6707,8 @@ ath_setdefantenna(struct ath_softc *sc,  
    5858 { 
    5959        struct ath_hal *ah = sc->sc_ah; 
     
    6666                sc->sc_stats.ast_ant_defswitch++; 
    6767        sc->sc_defant = antenna; 
    68 @@ -11138,7 +11111,7 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     68@@ -11154,7 +11127,7 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    6969                                        break; 
    7070                                } 
  • branches/8.09/package/madwifi/patches/421-channel_handling.patch

    r15808 r16033  
    185185        ic->ic_ath_cap |= (ath_hal_xrsupported(ah) ? IEEE80211_ATHC_XR : 0); 
    186186 #endif 
    187 @@ -4461,17 +4477,17 @@ ath_mode_init(struct net_device *dev) 
     187@@ -4469,17 +4485,17 @@ ath_mode_init(struct net_device *dev) 
    188188  * Set the slot time based on the current setting. 
    189189  */ 
     
    211211 } 
    212212  
    213 @@ -4493,7 +4509,7 @@ ath_updateslot(struct net_device *dev) 
     213@@ -4501,7 +4517,7 @@ ath_updateslot(struct net_device *dev) 
    214214        if (ic->ic_opmode == IEEE80211_M_HOSTAP) 
    215215                sc->sc_updateslot = UPDATE; 
     
    220220  
    221221 #ifdef ATH_SUPERG_DYNTURBO 
    222 @@ -5337,7 +5353,7 @@ ath_beacon_send(struct ath_softc *sc, in 
     222@@ -5345,7 +5361,7 @@ ath_beacon_send(struct ath_softc *sc, in 
    223223                sc->sc_updateslot = COMMIT;     /* commit next beacon */ 
    224224                sc->sc_slotupdate = slot; 
     
    229229        if (bfaddr != 0) { 
    230230                /* 
    231 @@ -7790,12 +7806,14 @@ ath_get_ivlen(struct ieee80211_key *k) 
     231@@ -7798,12 +7814,14 @@ ath_get_ivlen(struct ieee80211_key *k) 
    232232  * Get transmit rate index using rate in Kbps 
    233233  */ 
     
    246246                        break; 
    247247                } 
    248 @@ -8088,7 +8106,7 @@ ath_tx_start(struct net_device *dev, str 
     248@@ -8096,7 +8114,7 @@ ath_tx_start(struct net_device *dev, str 
    249249                atype = HAL_PKT_TYPE_NORMAL;            /* default */ 
    250250  
     
    255255                        if (shortPreamble) 
    256256                                txrate |= rt->info[rix].shortPreamble; 
    257 @@ -9055,7 +9073,7 @@ ath_chan_change(struct ath_softc *sc, st 
     257@@ -9063,7 +9081,7 @@ ath_chan_change(struct ath_softc *sc, st 
    258258        struct net_device *dev = sc->sc_dev; 
    259259        enum ieee80211_phymode mode; 
     
    264264        ath_rate_setup(dev, mode); 
    265265        ath_setcurmode(sc, mode); 
    266 @@ -10104,8 +10122,7 @@ ath_newassoc(struct ieee80211_node *ni,  
     266@@ -10120,8 +10138,7 @@ ath_newassoc(struct ieee80211_node *ni,  
    267267 } 
    268268  
     
    274274        struct ath_softc *sc = dev->priv; 
    275275        struct ieee80211com *ic = &sc->sc_ic; 
    276 @@ -10119,17 +10136,31 @@ ath_getchannels(struct net_device *dev,  
     276@@ -10135,17 +10152,31 @@ ath_getchannels(struct net_device *dev,  
    277277                EPRINTF(sc, "Insufficient memory for channel table!\n"); 
    278278                return -ENOMEM; 
     
    308308         * Convert HAL channels to ieee80211 ones. 
    309309         */ 
    310 @@ -10373,7 +10404,7 @@ ath_xr_rate_setup(struct net_device *dev 
     310@@ -10389,7 +10420,7 @@ ath_xr_rate_setup(struct net_device *dev 
    311311        struct ieee80211com *ic = &sc->sc_ic; 
    312312        const HAL_RATE_TABLE *rt; 
     
    317317        rt = sc->sc_xr_rates; 
    318318        if (rt == NULL) 
    319 @@ -10386,57 +10417,16 @@ ath_xr_rate_setup(struct net_device *dev 
     319@@ -10402,57 +10433,16 @@ ath_xr_rate_setup(struct net_device *dev 
    320320        } else 
    321321                maxrates = rt->rateCount; 
     
    381381 ath_rate_setup(struct net_device *dev, u_int mode) 
    382382 { 
    383 @@ -10445,7 +10435,7 @@ ath_rate_setup(struct net_device *dev, u 
     383@@ -10461,7 +10451,7 @@ ath_rate_setup(struct net_device *dev, u 
    384384        struct ieee80211com *ic = &sc->sc_ic; 
    385385        const HAL_RATE_TABLE *rt; 
     
    390390        switch (mode) { 
    391391        case IEEE80211_MODE_11A: 
    392 @@ -10463,6 +10453,12 @@ ath_rate_setup(struct net_device *dev, u 
     392@@ -10479,6 +10469,12 @@ ath_rate_setup(struct net_device *dev, u 
    393393        case IEEE80211_MODE_TURBO_G: 
    394394                sc->sc_rates[mode] = ath_hal_getratetable(ah, HAL_MODE_108G); 
     
    403403                DPRINTF(sc, ATH_DEBUG_ANY, "Invalid mode %u\n", mode); 
    404404                return 0; 
    405 @@ -10477,10 +10473,16 @@ ath_rate_setup(struct net_device *dev, u 
     405@@ -10493,10 +10489,16 @@ ath_rate_setup(struct net_device *dev, u 
    406406                maxrates = IEEE80211_RATE_MAXSIZE; 
    407407        } else 
     
    420420 } 
    421421  
    422 @@ -10509,13 +10511,18 @@ ath_setcurmode(struct ath_softc *sc, enu 
     422@@ -10525,13 +10527,18 @@ ath_setcurmode(struct ath_softc *sc, enu 
    423423                {   0, 500, 130 }, 
    424424        }; 
     
    441441        for (i = 0; i < 32; i++) { 
    442442                u_int8_t ix = rt->rateCodeToIndex[i]; 
    443 @@ -10525,7 +10532,7 @@ ath_setcurmode(struct ath_softc *sc, enu 
     443@@ -10541,7 +10548,7 @@ ath_setcurmode(struct ath_softc *sc, enu 
    444444                        continue; 
    445445                } 
     
    450450                    rt->info[ix].phy == IEEE80211_T_OFDM) 
    451451                        sc->sc_hwmap[i].flags |= IEEE80211_RADIOTAP_F_SHORTPRE; 
    452 @@ -10926,9 +10933,106 @@ enum { 
     452@@ -10942,9 +10949,106 @@ enum { 
    453453        ATH_MAXVAPS             = 26, 
    454454        ATH_INTMIT                      = 27, 
     
    558558 ath_sysctl_set_intmit(struct ath_softc *sc, long ctl, u_int val) 
    559559 { 
    560 @@ -11007,6 +11111,7 @@ static int 
     560@@ -11023,6 +11127,7 @@ static int 
    561561 ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl, write, filp, buffer, lenp, ppos) 
    562562 { 
     
    566566        u_int val; 
    567567        u_int tab_3_val[3]; 
    568 @@ -11030,25 +11135,34 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     568@@ -11046,25 +11151,34 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    569569                                lenp, ppos); 
    570570                if (ret == 0) { 
     
    614614                        case ATH_SOFTLED: 
    615615                                if (val != sc->sc_softled) { 
    616 @@ -11201,6 +11315,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     616@@ -11217,6 +11331,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    617617                } 
    618618        } else { 
     
    624624                        val = ath_hal_getslottime(ah); 
    625625                        break; 
    626 @@ -11219,6 +11336,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     626@@ -11235,6 +11352,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    627627                case ATH_COUNTRYCODE: 
    628628                        ath_hal_getcountrycode(ah, &val); 
     
    634634                        val = ath_maxvaps; 
    635635                        break; 
    636 @@ -11332,11 +11452,17 @@ static const ctl_table ath_sysctl_templa 
     636@@ -11348,11 +11468,17 @@ static const ctl_table ath_sysctl_templa 
    637637        }, 
    638638        { .ctl_name     = CTL_AUTO, 
     
    653653          .mode         = 0444, 
    654654          .proc_handler = ath_sysctl_halparam, 
    655 @@ -11344,7 +11470,7 @@ static const ctl_table ath_sysctl_templa 
     655@@ -11360,7 +11486,7 @@ static const ctl_table ath_sysctl_templa 
    656656        }, 
    657657        { .ctl_name     = CTL_AUTO, 
     
    662662          .extra2       = (void *)ATH_REGDOMAIN, 
    663663        }, 
    664 @@ -11407,6 +11533,12 @@ static const ctl_table ath_sysctl_templa 
     664@@ -11423,6 +11549,12 @@ static const ctl_table ath_sysctl_templa 
    665665          .extra2       = (void *)ATH_ACKRATE, 
    666666        }, 
     
    675675          .mode         = 0200, 
    676676          .proc_handler = ath_sysctl_halparam, 
    677 @@ -11647,13 +11779,6 @@ static ctl_table ath_static_sysctls[] =  
     677@@ -11663,13 +11795,6 @@ static ctl_table ath_static_sysctls[] =  
    678678        }, 
    679679 #endif 
     
    689689          .mode         = 0444, 
    690690          .data         = &ath_maxvaps, 
    691 @@ -11661,13 +11786,6 @@ static ctl_table ath_static_sysctls[] =  
     691@@ -11677,13 +11802,6 @@ static ctl_table ath_static_sysctls[] =  
    692692          .proc_handler = proc_dointvec 
    693693        }, 
     
    12851285                chans[i].chan = ss->ss_chans[i]; 
    12861286                chans[i].orig = i; 
    1287 @@ -601,6 +602,7 @@ pick_channel(struct ieee80211_scan_state 
     1287@@ -571,6 +572,7 @@ pick_channel(struct ieee80211_scan_state 
    12881288                                "%s: best: channel %u rssi %d\n", 
    12891289                                __func__, i, as->as_maxrssi[i]); 
     
    12931293 } 
    12941294  
    1295 @@ -636,6 +638,7 @@ ap_end(struct ieee80211_scan_state *ss,  
     1295@@ -609,6 +611,7 @@ ap_end(struct ieee80211_scan_state *ss,  
    12961296                res = 1; /* Do NOT restart scan */ 
    12971297        } else { 
     
    13011301                /* if this is a dynamic turbo frequency , start with normal  
    13021302                 * mode first */ 
    1303 @@ -650,6 +653,11 @@ ap_end(struct ieee80211_scan_state *ss,  
     1303@@ -623,6 +626,11 @@ ap_end(struct ieee80211_scan_state *ss,  
    13041304                                return 0; 
    13051305                        } 
Note: See TracChangeset for help on using the changeset viewer.