Changeset 17545


Ignore:
Timestamp:
2009-09-09T02:17:13+02:00 (7 years ago)
Author:
nbd
Message:

madwifi: fix several noderef and ibss merge issues that led to memory leaks and high system load

Location:
trunk/package/madwifi/patches
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/madwifi/patches/393-mbss_vap_auth.patch

    r16224 r17545  
    292292                        skb1 = skb_copy(skb, GFP_ATOMIC); 
    293293                        if (skb1 == NULL) { 
    294 @@ -950,8 +957,10 @@ ieee80211_input_all(struct ieee80211com  
     294@@ -950,8 +957,12 @@ ieee80211_input_all(struct ieee80211com  
    295295                        skb1 = skb; 
    296296                        skb = NULL; 
     
    298298-               type = ieee80211_input(vap, NULL, skb1, rssi, rtsf); 
    299299+               type = ieee80211_input(vap, ni, skb1, rssi, rtsf); 
     300+               if (ni) 
     301+                       ieee80211_unref_node(&ni); 
    300302        } 
    301303+ 
     
    304306                ieee80211_dev_kfree_skb(&skb); 
    305307        return type; 
    306 @@ -1146,11 +1155,9 @@ ieee80211_deliver_data(struct ieee80211_ 
     308@@ -1146,11 +1157,9 @@ ieee80211_deliver_data(struct ieee80211_ 
    307309                         * sending it will not work; just let it be 
    308310                         * delivered normally. 
     
    318320                                    ni1 != vap->iv_bss) { 
    319321  
     322@@ -3519,6 +3528,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  
     323                                 (vap->iv_opmode == IEEE80211_M_WDS)) && 
     324                                (scan.capinfo & IEEE80211_CAPINFO_ESS))) { 
     325                        struct ieee80211vap *avp = NULL; 
     326+                       int do_unref = 0; 
     327                        int found = 0; 
     328  
     329                        IEEE80211_LOCK_IRQ(vap->iv_ic); 
     330@@ -3550,10 +3560,12 @@ ieee80211_recv_mgmt(struct ieee80211vap  
     331                                        ni->ni_associd |= 0xc000; 
     332                                        avp->iv_wdsnode = ieee80211_ref_node(ni); 
     333                                        IEEE80211_UNLOCK_IRQ(ic); 
     334-                               } else if (vap->iv_opmode == IEEE80211_M_IBSS) { 
     335+                               } else if ((vap->iv_opmode == IEEE80211_M_IBSS) && 
     336+                                          IEEE80211_ADDR_EQ(wh->i_addr3, vap->iv_bssid)) { 
     337                                        /* Create a new entry in the neighbor table. */ 
     338                                        ni = ieee80211_add_neighbor(vap, wh, &scan); 
     339                                } 
     340+                               do_unref = 1; 
     341                        } else { 
     342                                /* 
     343                                 * Copy data from beacon to neighbor table. 
     344@@ -3592,6 +3604,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  
     345                                ni->ni_rssi = rssi; 
     346                                ni->ni_rtsf = rtsf; 
     347                                ni->ni_last_rx = jiffies; 
     348+                               if (do_unref) 
     349+                                       ieee80211_unref_node(&ni); 
     350                        } 
     351                } 
     352                break; 
    320353--- a/ath/if_ath.c 
    321354+++ b/ath/if_ath.c 
     
    386419                        type = ieee80211_input(ni->ni_vap, ni, skb, rs->rs_rssi, bf->bf_tsf); 
    387420                        ieee80211_unref_node(&ni); 
    388 @@ -6981,24 +6998,35 @@ drop_micfail: 
     421@@ -6981,24 +6998,39 @@ drop_micfail: 
    389422                         * No key index or no entry, do a lookup and 
    390423                         * add the node to the mapping table if possible. 
     
    394427+ 
    395428+lookup_slowpath: 
    396 +                       vap = ieee80211_find_rxvap(ic, wh->i_addr1); 
     429+                       if (IEEE80211_IS_MULTICAST(wh->i_addr1)) 
     430+                               vap = NULL; 
     431+                       else 
     432+                               vap = ieee80211_find_rxvap(ic, wh->i_addr1); 
     433+ 
    397434+                       if (vap) 
    398435+                               ni = ieee80211_find_rxnode(ic, vap, wh); 
  • trunk/package/madwifi/patches/394-probereq.patch

    r14193 r17545  
    11--- a/net80211/ieee80211_input.c 
    22+++ b/net80211/ieee80211_input.c 
    3 @@ -3611,6 +3611,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  
     3@@ -3618,6 +3618,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    44                        vap->iv_stats.is_rx_mgtdiscard++; 
    55                        return; 
  • trunk/package/madwifi/patches/395-ath_ff_unmap.patch

    r16224 r17545  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -13530,7 +13530,7 @@ cleanup_ath_buf(struct ath_softc *sc, st 
     3@@ -13534,7 +13534,7 @@ cleanup_ath_buf(struct ath_softc *sc, st 
    44                                bus_unmap_single( 
    55                                        sc->sc_bdev, 
  • trunk/package/madwifi/patches/396-napi_ff_fix.patch

    r16224 r17545  
    3434                skb = bf->bf_skb; 
    3535                if (skb == NULL) { 
    36 @@ -7070,8 +7072,8 @@ rx_next: 
     36@@ -7074,8 +7076,8 @@ rx_next: 
    3737                if (sc->sc_isr & HAL_INT_RX) { 
    3838                        u_int64_t hw_tsf = ath_hal_gettsf64(ah); 
     
    4646--- a/net80211/ieee80211_input.c 
    4747+++ b/net80211/ieee80211_input.c 
    48 @@ -1203,6 +1203,7 @@ ieee80211_deliver_data(struct ieee80211_ 
     48@@ -1205,6 +1205,7 @@ ieee80211_deliver_data(struct ieee80211_ 
    4949                } 
    5050        } 
  • trunk/package/madwifi/patches/400-new_hal.patch

    r16224 r17545  
    1616         * Check if the MAC has multi-rate retry support. 
    1717         * We do this by trying to setup a fake extended 
    18 @@ -7564,7 +7572,7 @@ ath_txq_setup(struct ath_softc *sc, int  
     18@@ -7568,7 +7576,7 @@ ath_txq_setup(struct ath_softc *sc, int  
    1919        if (qtype == HAL_TX_QUEUE_UAPSD) 
    2020                qi.tqi_qflags = HAL_TXQ_TXDESCINT_ENABLE; 
  • trunk/package/madwifi/patches/411-autochannel_multi.patch

    r17311 r17545  
    184184--- a/net80211/ieee80211_input.c 
    185185+++ b/net80211/ieee80211_input.c 
    186 @@ -2772,6 +2772,7 @@ static void 
     186@@ -2774,6 +2774,7 @@ static void 
    187187 ieee80211_doth_switch_channel(struct ieee80211vap *vap) 
    188188 { 
     
    192192        IEEE80211_DPRINTF(vap, IEEE80211_MSG_DOTH, 
    193193                          "%s: Channel switch to %3d (%4d MHz) NOW!\n", 
    194 @@ -2794,6 +2795,9 @@ ieee80211_doth_switch_channel(struct iee 
     194@@ -2796,6 +2797,9 @@ ieee80211_doth_switch_channel(struct iee 
    195195  
    196196        ic->ic_curchan = ic->ic_bsschan = vap->iv_csa_chan; 
  • trunk/package/madwifi/patches/414-txpower.patch

    r17221 r17545  
    175175        pktlen = skb->len + IEEE80211_CRC_LEN; 
    176176  
    177 @@ -8390,7 +8389,7 @@ ath_tx_start(struct net_device *dev, str 
     177@@ -8394,7 +8393,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 @@ -10383,59 +10382,16 @@ ath_get_clamped_maxtxpower(struct ath_so 
     186@@ -10387,59 +10386,16 @@ ath_get_clamped_maxtxpower(struct ath_so 
    187187  
    188188 /* XXX: this function needs some locking to avoid being called  
  • trunk/package/madwifi/patches/416-wprobe.patch

    r16719 r17545  
    478478                        ieee80211_unref_node(&ni); 
    479479                } else { 
    480 @@ -7020,15 +7026,22 @@ drop_micfail: 
    481   
    482  lookup_slowpath: 
    483                         vap = ieee80211_find_rxvap(ic, wh->i_addr1); 
     480@@ -7024,15 +7030,21 @@ lookup_slowpath: 
     481                        else 
     482                                vap = ieee80211_find_rxvap(ic, wh->i_addr1); 
     483  
    484484-                       if (vap) 
    485485+                       if (vap) { 
     
    491491+                                       ath_wprobe_report_rx(vap, rs, skb); 
    492492+                               } 
    493 +                               vap = NULL; 
    494493                                ni = NULL; 
    495494+                       } 
     
    503502                                /* 
    504503                                 * If the station has a key cache slot assigned 
    505 @@ -8608,6 +8621,7 @@ ath_tx_processq(struct ath_softc *sc, st 
     504@@ -8612,6 +8624,7 @@ ath_tx_processq(struct ath_softc *sc, st 
    506505                                sc->sc_stats.ast_tx_rssi = ts->ts_rssi; 
    507506                                ATH_RSSI_LPF(an->an_halstats.ns_avgtxrssi, 
     
    511510                                    bf->bf_skb->priority == WME_AC_VI) 
    512511                                        ni->ni_ic->ic_wme.wme_hipri_traffic++; 
    513 @@ -10107,6 +10121,7 @@ ath_newassoc(struct ieee80211_node *ni,  
     512@@ -10111,6 +10124,7 @@ ath_newassoc(struct ieee80211_node *ni,  
    514513        struct ath_softc *sc = ic->ic_dev->priv; 
    515514  
  • trunk/package/madwifi/patches/419-skb_unmap_crash.patch

    r16224 r17545  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -13496,7 +13496,7 @@ cleanup_ath_buf(struct ath_softc *sc, st 
     3@@ -13499,7 +13499,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 @@ -13504,8 +13504,6 @@ cleanup_ath_buf(struct ath_softc *sc, st 
     12@@ -13507,8 +13507,6 @@ cleanup_ath_buf(struct ath_softc *sc, st 
    1313                                sc->sc_rxbufsize : bf->bf_skb->len), 
    1414                        direction); 
  • trunk/package/madwifi/patches/420-diversity_fix.patch

    r16846 r17545  
    6666                sc->sc_stats.ast_ant_defswitch++; 
    6767        sc->sc_defant = antenna; 
    68 @@ -11157,7 +11130,7 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     68@@ -11160,7 +11133,7 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    6969                                        break; 
    7070                                } 
  • trunk/package/madwifi/patches/421-channel_handling.patch

    r17311 r17545  
    229229        if (bfaddr != 0) { 
    230230                /* 
    231 @@ -7799,12 +7815,14 @@ ath_get_ivlen(struct ieee80211_key *k) 
     231@@ -7802,12 +7818,14 @@ ath_get_ivlen(struct ieee80211_key *k) 
    232232  * Get transmit rate index using rate in Kbps 
    233233  */ 
     
    246246                        break; 
    247247                } 
    248 @@ -8097,7 +8115,7 @@ ath_tx_start(struct net_device *dev, str 
     248@@ -8100,7 +8118,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 @@ -9064,7 +9082,7 @@ ath_chan_change(struct ath_softc *sc, st 
     257@@ -9067,7 +9085,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 @@ -10121,8 +10139,7 @@ ath_newassoc(struct ieee80211_node *ni,  
     266@@ -10124,8 +10142,7 @@ ath_newassoc(struct ieee80211_node *ni,  
    267267 } 
    268268  
     
    274274        struct ath_softc *sc = dev->priv; 
    275275        struct ieee80211com *ic = &sc->sc_ic; 
    276 @@ -10136,17 +10153,31 @@ ath_getchannels(struct net_device *dev,  
     276@@ -10139,17 +10156,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 @@ -10392,7 +10423,7 @@ ath_xr_rate_setup(struct net_device *dev 
     310@@ -10395,7 +10426,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 @@ -10405,57 +10436,16 @@ ath_xr_rate_setup(struct net_device *dev 
     319@@ -10408,57 +10439,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 @@ -10464,7 +10454,7 @@ ath_rate_setup(struct net_device *dev, u 
     383@@ -10467,7 +10457,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 @@ -10482,6 +10472,12 @@ ath_rate_setup(struct net_device *dev, u 
     392@@ -10485,6 +10475,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 @@ -10496,10 +10492,16 @@ ath_rate_setup(struct net_device *dev, u 
     405@@ -10499,10 +10495,16 @@ ath_rate_setup(struct net_device *dev, u 
    406406                maxrates = IEEE80211_RATE_MAXSIZE; 
    407407        } else 
     
    420420 } 
    421421  
    422 @@ -10528,13 +10530,18 @@ ath_setcurmode(struct ath_softc *sc, enu 
     422@@ -10531,13 +10533,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 @@ -10544,7 +10551,7 @@ ath_setcurmode(struct ath_softc *sc, enu 
     443@@ -10547,7 +10554,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 @@ -10945,9 +10952,106 @@ enum { 
     452@@ -10948,9 +10955,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 @@ -11026,6 +11130,7 @@ static int 
     560@@ -11029,6 +11133,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 @@ -11049,25 +11154,34 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     568@@ -11052,25 +11157,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 @@ -11220,6 +11334,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     616@@ -11223,6 +11337,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    617617                } 
    618618        } else { 
     
    624624                        val = ath_hal_getslottime(ah); 
    625625                        break; 
    626 @@ -11238,6 +11355,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     626@@ -11241,6 +11358,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 @@ -11351,11 +11471,17 @@ static const ctl_table ath_sysctl_templa 
     636@@ -11354,11 +11474,17 @@ static const ctl_table ath_sysctl_templa 
    637637        }, 
    638638        { .ctl_name     = CTL_AUTO, 
     
    653653          .mode         = 0444, 
    654654          .proc_handler = ath_sysctl_halparam, 
    655 @@ -11363,7 +11489,7 @@ static const ctl_table ath_sysctl_templa 
     655@@ -11366,7 +11492,7 @@ static const ctl_table ath_sysctl_templa 
    656656        }, 
    657657        { .ctl_name     = CTL_AUTO, 
     
    662662          .extra2       = (void *)ATH_REGDOMAIN, 
    663663        }, 
    664 @@ -11426,6 +11552,12 @@ static const ctl_table ath_sysctl_templa 
     664@@ -11429,6 +11555,12 @@ static const ctl_table ath_sysctl_templa 
    665665          .extra2       = (void *)ATH_ACKRATE, 
    666666        }, 
     
    675675          .mode         = 0200, 
    676676          .proc_handler = ath_sysctl_halparam, 
    677 @@ -11666,13 +11798,6 @@ static ctl_table ath_static_sysctls[] =  
     677@@ -11669,13 +11801,6 @@ static ctl_table ath_static_sysctls[] =  
    678678        }, 
    679679 #endif 
     
    689689          .mode         = 0444, 
    690690          .data         = &ath_maxvaps, 
    691 @@ -11680,13 +11805,6 @@ static ctl_table ath_static_sysctls[] =  
     691@@ -11683,13 +11808,6 @@ static ctl_table ath_static_sysctls[] =  
    692692          .proc_handler = proc_dointvec 
    693693        }, 
  • trunk/package/madwifi/patches/424-timing.patch

    r16224 r17545  
    101101        if (bfaddr != 0) { 
    102102                /* 
    103 @@ -9430,7 +9468,8 @@ ath_set_coverageclass(struct ieee80211co 
     103@@ -9433,7 +9471,8 @@ ath_set_coverageclass(struct ieee80211co 
    104104 { 
    105105        struct ath_softc *sc = ic->ic_dev->priv; 
     
    111111        return; 
    112112 } 
    113 @@ -10953,6 +10992,7 @@ enum { 
     113@@ -10956,6 +10995,7 @@ enum { 
    114114        ATH_OFDM_WEAK_DET       = 29, 
    115115        ATH_CHANBW              = 30, 
     
    119119  
    120120 /* 
    121 @@ -11165,21 +11205,31 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     121@@ -11168,21 +11208,31 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    122122                                        sc->sc_slottimeconf = val; 
    123123                                else 
     
    154154                        case ATH_SOFTLED: 
    155155                                if (val != sc->sc_softled) { 
    156 @@ -11335,6 +11385,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     156@@ -11338,6 +11388,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    157157                case ATH_CHANBW: 
    158158                        val = sc->sc_chanbw ?: 20; 
     
    164164                        val = ath_hal_getslottime(ah); 
    165165                        break; 
    166 @@ -11456,6 +11509,12 @@ static const ctl_table ath_sysctl_templa 
     166@@ -11459,6 +11512,12 @@ static const ctl_table ath_sysctl_templa 
    167167          .extra2       = (void *)ATH_CTSTIMEOUT, 
    168168        }, 
  • trunk/package/madwifi/patches/425-rc_rexmit.patch

    r16224 r17545  
    2121--- a/ath/if_ath.c 
    2222+++ b/ath/if_ath.c 
    23 @@ -8635,6 +8635,8 @@ ath_tx_processq(struct ath_softc *sc, st 
     23@@ -8638,6 +8638,8 @@ ath_tx_processq(struct ath_softc *sc, st 
    2424  
    2525                ni = bf->bf_node; 
     
    3030                        if (ts->ts_status == 0) { 
    3131                                u_int8_t txant = ts->ts_antenna; 
    32 @@ -8687,15 +8689,43 @@ ath_tx_processq(struct ath_softc *sc, st 
     32@@ -8690,15 +8692,43 @@ ath_tx_processq(struct ath_softc *sc, st 
    3333                        lr = ts->ts_longretry; 
    3434                        sc->sc_stats.ast_tx_shortretry += sr; 
  • trunk/package/madwifi/patches/430-use_netdev_priv.patch

    r17311 r17545  
    382382 #endif 
    383383        struct ath_buf *bf; 
    384 @@ -7302,7 +7302,7 @@ static void ath_grppoll_start(struct iee 
     384@@ -7305,7 +7305,7 @@ static void ath_grppoll_start(struct iee 
    385385        struct sk_buff *skb = NULL; 
    386386        struct ath_buf *bf, *head = NULL; 
     
    391391        u_int8_t rate; 
    392392        unsigned int ctsrate = 0, ctsduration = 0; 
    393 @@ -7520,7 +7520,7 @@ static void ath_grppoll_start(struct iee 
     393@@ -7523,7 +7523,7 @@ static void ath_grppoll_start(struct iee 
    394394 static void ath_grppoll_stop(struct ieee80211vap *vap) 
    395395 { 
     
    400400        struct ath_txq *txq = &sc->sc_grpplq; 
    401401        struct ath_buf *bf; 
    402 @@ -7732,7 +7732,7 @@ ath_txq_update(struct ath_softc *sc, str 
     402@@ -7735,7 +7735,7 @@ ath_txq_update(struct ath_softc *sc, str 
    403403 static int 
    404404 ath_wme_update(struct ieee80211com *ic) 
     
    409409        if (sc->sc_uapsdq) 
    410410                ath_txq_update(sc, sc->sc_uapsdq, WME_AC_VO); 
    411 @@ -7751,7 +7751,7 @@ ath_uapsd_flush(struct ieee80211_node *n 
     411@@ -7754,7 +7754,7 @@ ath_uapsd_flush(struct ieee80211_node *n 
    412412 { 
    413413        struct ath_node *an = ATH_NODE(ni); 
     
    418418  
    419419        ATH_NODE_UAPSD_LOCK_IRQ(an); 
    420 @@ -7942,7 +7942,7 @@ ath_tx_start(struct net_device *dev, str 
     420@@ -7945,7 +7945,7 @@ ath_tx_start(struct net_device *dev, str 
    421421                struct ath_buf *bf, struct sk_buff *skb, int nextfraglen) 
    422422 { 
     
    427427        struct ieee80211vap *vap = ni->ni_vap; 
    428428        struct ath_hal *ah = sc->sc_ah; 
    429 @@ -8851,7 +8851,7 @@ static void 
     429@@ -8854,7 +8854,7 @@ static void 
    430430 ath_tx_tasklet_q0(TQUEUE_ARG data) 
    431431 { 
     
    436436  
    437437 process_tx_again: 
    438 @@ -8882,7 +8882,7 @@ static void 
     438@@ -8885,7 +8885,7 @@ static void 
    439439 ath_tx_tasklet_q0123(TQUEUE_ARG data) 
    440440 { 
     
    445445  
    446446 process_tx_again: 
    447 @@ -8927,7 +8927,7 @@ static void 
     447@@ -8930,7 +8930,7 @@ static void 
    448448 ath_tx_tasklet(TQUEUE_ARG data) 
    449449 { 
     
    454454        unsigned long flags; 
    455455  
    456 @@ -8955,7 +8955,7 @@ process_tx_again: 
     456@@ -8958,7 +8958,7 @@ process_tx_again: 
    457457 static void 
    458458 ath_tx_timeout(struct net_device *dev) 
     
    463463        if (ath_chan_unavail(sc)) 
    464464                return; 
    465 @@ -9363,7 +9363,7 @@ static void 
     465@@ -9366,7 +9366,7 @@ static void 
    466466 ath_calibrate(unsigned long arg) 
    467467 { 
     
    472472        struct ieee80211com *ic = &sc->sc_ic; 
    473473        /* u_int32_t nchans; */ 
    474 @@ -9438,7 +9438,7 @@ static void 
     474@@ -9441,7 +9441,7 @@ static void 
    475475 ath_scan_start(struct ieee80211com *ic) 
    476476 { 
     
    481481        u_int32_t rfilt; 
    482482  
    483 @@ -9458,7 +9458,7 @@ static void 
     483@@ -9461,7 +9461,7 @@ static void 
    484484 ath_scan_end(struct ieee80211com *ic) 
    485485 { 
     
    490490        u_int32_t rfilt; 
    491491  
    492 @@ -9476,7 +9476,7 @@ static void 
     492@@ -9479,7 +9479,7 @@ static void 
    493493 ath_set_channel(struct ieee80211com *ic) 
    494494 { 
     
    499499        (void) ath_chan_set(sc, ic->ic_curchan); 
    500500        ic->ic_channoise = ath_hal_get_channel_noise(sc->sc_ah, &(sc->sc_curchan)); 
    501 @@ -9493,7 +9493,7 @@ ath_set_channel(struct ieee80211com *ic) 
     501@@ -9496,7 +9496,7 @@ ath_set_channel(struct ieee80211com *ic) 
    502502 static void 
    503503 ath_set_coverageclass(struct ieee80211com *ic) 
     
    508508        sc->sc_coverage = ic->ic_coverageclass * 3; 
    509509        ath_set_timing(sc); 
    510 @@ -9504,7 +9504,7 @@ ath_set_coverageclass(struct ieee80211co 
     510@@ -9507,7 +9507,7 @@ ath_set_coverageclass(struct ieee80211co 
    511511 static u_int 
    512512 ath_mhz2ieee(struct ieee80211com *ic, u_int freq, u_int flags) 
     
    517517        return (ath_hal_mhz2ieee(sc->sc_ah, freq, flags)); 
    518518 } 
    519 @@ -9519,7 +9519,7 @@ ath_newstate(struct ieee80211vap *vap, e 
     519@@ -9522,7 +9522,7 @@ ath_newstate(struct ieee80211vap *vap, e 
    520520        struct ath_vap *avp = ATH_VAP(vap); 
    521521        struct ieee80211com *ic = vap->iv_ic; 
     
    526526        struct ieee80211_node *ni, *wds_ni; 
    527527        unsigned int i; 
    528 @@ -9959,7 +9959,7 @@ ath_setup_comp(struct ieee80211_node *ni 
     528@@ -9962,7 +9962,7 @@ ath_setup_comp(struct ieee80211_node *ni 
    529529 { 
    530530 #define        IEEE80211_KEY_XR        (IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV) 
     
    535535        ieee80211_keyix_t keyix; 
    536536  
    537 @@ -10013,7 +10013,7 @@ static void 
     537@@ -10016,7 +10016,7 @@ static void 
    538538 ath_setup_stationkey(struct ieee80211_node *ni) 
    539539 { 
     
    544544  
    545545        keyix = ath_key_alloc(vap, &ni->ni_ucastkey); 
    546 @@ -10174,7 +10174,7 @@ ath_newassoc(struct ieee80211_node *ni,  
     546@@ -10177,7 +10177,7 @@ ath_newassoc(struct ieee80211_node *ni,  
    547547 { 
    548548        struct ieee80211com *ic = ni->ni_ic; 
     
    553553        sc->sc_rc->ops->newassoc(sc, ATH_NODE(ni), isnew); 
    554554        ath_wprobe_node_join(ni->ni_vap, ni); 
    555 @@ -10205,7 +10205,7 @@ ath_newassoc(struct ieee80211_node *ni,  
     555@@ -10208,7 +10208,7 @@ ath_newassoc(struct ieee80211_node *ni,  
    556556 static int 
    557557 ath_getchannels(struct net_device *dev) 
     
    562562        struct ath_hal *ah = sc->sc_ah; 
    563563        HAL_CHANNEL *chans; 
    564 @@ -10482,7 +10482,7 @@ ath_update_txpow(struct ath_softc *sc) 
     564@@ -10485,7 +10485,7 @@ ath_update_txpow(struct ath_softc *sc) 
    565565 static int 
    566566 ath_xr_rate_setup(struct net_device *dev) 
     
    571571        struct ieee80211com *ic = &sc->sc_ic; 
    572572        const HAL_RATE_TABLE *rt; 
    573 @@ -10513,7 +10513,7 @@ ath_xr_rate_setup(struct net_device *dev 
     573@@ -10516,7 +10516,7 @@ ath_xr_rate_setup(struct net_device *dev 
    574574 static int 
    575575 ath_rate_setup(struct net_device *dev, u_int mode) 
     
    580580        struct ieee80211com *ic = &sc->sc_ic; 
    581581        const HAL_RATE_TABLE *rt; 
    582 @@ -10760,7 +10760,7 @@ ath_printtxbuf(const struct ath_buf *bf, 
     582@@ -10763,7 +10763,7 @@ ath_printtxbuf(const struct ath_buf *bf, 
    583583 { 
    584584        const struct ath_tx_status *ts = &bf->bf_dsstatus.ds_txstat; 
     
    589589  
    590590        DPRINTF(sc, ATH_DEBUG_ANY,  
    591 @@ -10787,7 +10787,7 @@ ath_printtxbuf(const struct ath_buf *bf, 
     591@@ -10790,7 +10790,7 @@ ath_printtxbuf(const struct ath_buf *bf, 
    592592 static struct net_device_stats * 
    593593 ath_getstats(struct net_device *dev) 
     
    598598  
    599599        /* update according to private statistics */ 
    600 @@ -10810,7 +10810,7 @@ ath_getstats(struct net_device *dev) 
     600@@ -10813,7 +10813,7 @@ ath_getstats(struct net_device *dev) 
    601601 static int 
    602602 ath_set_mac_address(struct net_device *dev, void *addr) 
     
    607607        struct ath_hal *ah = sc->sc_ah; 
    608608        struct sockaddr *mac = addr; 
    609 @@ -10839,7 +10839,7 @@ ath_set_mac_address(struct net_device *d 
     609@@ -10842,7 +10842,7 @@ ath_set_mac_address(struct net_device *d 
    610610 static int 
    611611 ath_change_mtu(struct net_device *dev, int mtu) 
     
    616616  
    617617        if (!(ATH_MIN_MTU < mtu && mtu <= ATH_MAX_MTU)) { 
    618 @@ -10926,7 +10926,7 @@ bad: 
     618@@ -10929,7 +10929,7 @@ bad: 
    619619 static int 
    620620 ath_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 
     
    625625        int error; 
    626626  
    627 @@ -11807,7 +11807,7 @@ static void 
     627@@ -11810,7 +11810,7 @@ static void 
    628628 ath_announce(struct net_device *dev) 
    629629 { 
     
    634634        u_int modes, cc; 
    635635        static const int MLEN = 1024; 
    636 @@ -11994,7 +11994,7 @@ static void 
     636@@ -11997,7 +11997,7 @@ static void 
    637637 txcont_configure_radio(struct ieee80211com *ic) 
    638638 { 
     
    643643        struct ieee80211_wme_state  *wme = &ic->ic_wme; 
    644644        struct ieee80211vap         *vap = TAILQ_FIRST(&ic->ic_vaps); 
    645 @@ -12268,7 +12268,7 @@ static void 
     645@@ -12271,7 +12271,7 @@ static void 
    646646 txcont_queue_packet(struct ieee80211com *ic, struct ath_txq* txq) 
    647647 { 
     
    652652        struct ath_buf *bf                 = NULL; 
    653653        struct sk_buff *skb                = NULL; 
    654 @@ -12401,7 +12401,7 @@ static void 
     654@@ -12404,7 +12404,7 @@ static void 
    655655 txcont_on(struct ieee80211com *ic) 
    656656 { 
     
    661661        if (IFF_RUNNING != (ic->ic_dev->flags & IFF_RUNNING)) { 
    662662                EPRINTF(sc, "Cannot enable txcont when" 
    663 @@ -12422,7 +12422,7 @@ static void 
     663@@ -12425,7 +12425,7 @@ static void 
    664664 txcont_off(struct ieee80211com *ic) 
    665665 { 
     
    670670        if (TAILQ_FIRST(&ic->ic_vaps)->iv_opmode != IEEE80211_M_WDS) 
    671671                sc->sc_beacons = 1; 
    672 @@ -12436,7 +12436,7 @@ static int 
     672@@ -12439,7 +12439,7 @@ static int 
    673673 ath_get_dfs_testmode(struct ieee80211com *ic) 
    674674 { 
     
    679679 } 
    680680  
    681 @@ -12463,7 +12463,7 @@ static void 
     681@@ -12466,7 +12466,7 @@ static void 
    682682 ath_set_dfs_testmode(struct ieee80211com *ic, int value) 
    683683 { 
     
    688688 } 
    689689  
    690 @@ -12473,7 +12473,7 @@ static int 
     690@@ -12476,7 +12476,7 @@ static int 
    691691 ath_get_txcont(struct ieee80211com *ic) 
    692692 { 
     
    697697 } 
    698698  
    699 @@ -12491,7 +12491,7 @@ static void 
     699@@ -12494,7 +12494,7 @@ static void 
    700700 ath_set_txcont_power(struct ieee80211com *ic, unsigned int txpower) 
    701701 { 
     
    706706                IEEE80211_TXPOWER_MAX : txpower; 
    707707        if (sc->sc_txcont_power != new_txcont_power) { 
    708 @@ -12509,7 +12509,7 @@ static int 
     708@@ -12512,7 +12512,7 @@ static int 
    709709 ath_get_txcont_power(struct ieee80211com *ic) 
    710710 { 
     
    715715        return sc->sc_txcont_power ? sc->sc_txcont_power : 0; 
    716716 } 
    717 @@ -12519,7 +12519,7 @@ ath_get_txcont_power(struct ieee80211com 
     717@@ -12522,7 +12522,7 @@ ath_get_txcont_power(struct ieee80211com 
    718718 ath_set_txcont_rate(struct ieee80211com *ic, unsigned int new_rate) 
    719719 { 
     
    724724                /*  NOTE: This value is sanity checked and dropped down to  
    725725                 *  closest rate in txcont_on. */ 
    726 @@ -12536,7 +12536,7 @@ ath_set_txcont_rate(struct ieee80211com  
     726@@ -12539,7 +12539,7 @@ ath_set_txcont_rate(struct ieee80211com  
    727727 ath_get_txcont_rate(struct ieee80211com *ic) 
    728728 { 
     
    733733 } 
    734734  
    735 @@ -12546,7 +12546,7 @@ static void 
     735@@ -12549,7 +12549,7 @@ static void 
    736736 ath_set_dfs_cac_time(struct ieee80211com *ic, unsigned int time_s) 
    737737 { 
     
    742742 } 
    743743  
    744 @@ -12556,7 +12556,7 @@ static unsigned int 
     744@@ -12559,7 +12559,7 @@ static unsigned int 
    745745 ath_get_dfs_cac_time(struct ieee80211com *ic) 
    746746 { 
     
    751751 } 
    752752  
    753 @@ -12576,7 +12576,7 @@ static void 
     753@@ -12579,7 +12579,7 @@ static void 
    754754 ath_set_dfs_excl_period(struct ieee80211com *ic, unsigned int time_s) 
    755755 { 
     
    760760 } 
    761761  
    762 @@ -12585,7 +12585,7 @@ static unsigned int 
     762@@ -12588,7 +12588,7 @@ static unsigned int 
    763763 ath_get_dfs_excl_period(struct ieee80211com *ic) 
    764764 { 
     
    769769 } 
    770770  
    771 @@ -12597,7 +12597,7 @@ static unsigned int 
     771@@ -12600,7 +12600,7 @@ static unsigned int 
    772772 ath_test_radar(struct ieee80211com *ic) 
    773773 { 
     
    778778                ath_radar_detected(sc, "ath_test_radar from user space"); 
    779779        else 
    780 @@ -12613,7 +12613,7 @@ static unsigned int 
     780@@ -12616,7 +12616,7 @@ static unsigned int 
    781781 ath_dump_hal_map(struct ieee80211com *ic) 
    782782 { 
     
    787787        return 0; 
    788788 } 
    789 @@ -12721,7 +12721,7 @@ ath_rcv_dev_event(struct notifier_block  
     789@@ -12724,7 +12724,7 @@ ath_rcv_dev_event(struct notifier_block  
    790790        void *ptr) 
    791791 { 
     
    796796        if (!dev || !sc || dev->open != &ath_init) 
    797797                return 0; 
    798 @@ -13456,7 +13456,7 @@ static unsigned int 
     798@@ -13459,7 +13459,7 @@ static unsigned int 
    799799 ath_read_register(struct ieee80211com *ic, unsigned int address,  
    800800                unsigned int* value) 
     
    805805                IPRINTF(sc, "Illegal Atheros register access " 
    806806                                "attempted: 0x%04x >= 0x%04x\n", 
    807 @@ -13486,7 +13486,7 @@ static unsigned int 
     807@@ -13489,7 +13489,7 @@ static unsigned int 
    808808 ath_write_register(struct ieee80211com *ic, unsigned int address,  
    809809                unsigned int value) 
     
    814814                IPRINTF(sc, "Illegal Atheros register access " 
    815815                                "attempted: 0x%04x >= 0x%04x\n", 
    816 @@ -13514,7 +13514,7 @@ static void 
     816@@ -13517,7 +13517,7 @@ static void 
    817817 ath_registers_dump(struct ieee80211com *ic) 
    818818 { 
     
    823823 } 
    824824 #endif /* #ifdef ATH_REVERSE_ENGINEERING */ 
    825 @@ -13526,7 +13526,7 @@ static void 
     825@@ -13529,7 +13529,7 @@ static void 
    826826 ath_registers_mark(struct ieee80211com *ic) 
    827827 { 
     
    832832 } 
    833833 #endif /* #ifdef ATH_REVERSE_ENGINEERING */ 
    834 @@ -13538,7 +13538,7 @@ static void 
     834@@ -13541,7 +13541,7 @@ static void 
    835835 ath_registers_dump_delta(struct ieee80211com *ic) 
    836836 { 
  • trunk/package/madwifi/patches/431-compile_fixes.patch

    r16224 r17545  
    2323 #else 
    2424                                __netif_rx_schedule(dev); 
    25 @@ -7132,7 +7136,9 @@ rx_next: 
     25@@ -7135,7 +7139,9 @@ rx_next: 
    2626                local_irq_restore(flags); 
    2727        } 
  • trunk/package/madwifi/patches/432-netdev_ops.patch

    r17431 r17545  
    5454        return 0; 
    5555 } 
    56 @@ -12729,8 +12746,13 @@ ath_rcv_dev_event(struct notifier_block  
     56@@ -12732,8 +12749,13 @@ ath_rcv_dev_event(struct notifier_block  
    5757        struct net_device *dev = (struct net_device *)ptr; 
    5858        struct ath_softc *sc = (struct ath_softc *)netdev_priv(dev); 
     
    171171--- a/net80211/ieee80211_input.c 
    172172+++ b/net80211/ieee80211_input.c 
    173 @@ -1185,7 +1185,11 @@ ieee80211_deliver_data(struct ieee80211_ 
     173@@ -1187,7 +1187,11 @@ ieee80211_deliver_data(struct ieee80211_ 
    174174                        skb1->protocol = __constant_htons(ETH_P_802_2); 
    175175                        /* XXX insert vlan tag before queue it? */ 
  • trunk/package/madwifi/patches/437-sysctl_cleanup.patch

    r17219 r17545  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -11018,38 +11018,38 @@ enum { 
     3@@ -11021,38 +11021,38 @@ enum { 
    44  * mirrored in /proc/sys. 
    55  */ 
  • trunk/package/madwifi/patches/438-poweroffset_sysctl.patch

    r17219 r17545  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -10473,11 +10473,11 @@ set_node_txpower(void *arg, struct ieee8 
     3@@ -10476,11 +10476,11 @@ set_node_txpower(void *arg, struct ieee8 
    44  * XXX: this function needs some locking to avoid being called  
    55  * twice/interrupted. Returns the value actually stored. */ 
     
    1717 } 
    1818  
    19 @@ -11028,6 +11028,7 @@ enum { 
     19@@ -11031,6 +11031,7 @@ enum { 
    2020        ATH_DEBUG, 
    2121        ATH_TXANTENNA, 
     
    2525        ATH_TXINTRPERIOD, 
    2626        ATH_FFTXQMIN, 
    27 @@ -11308,6 +11309,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     27@@ -11311,6 +11312,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    2828                                ath_debug_global = (val &  ATH_DEBUG_GLOBAL); 
    2929 #endif 
     
    3535                                /* 
    3636                                 * antenna can be: 
    37 @@ -11475,6 +11479,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
     37@@ -11478,6 +11482,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl 
    3838                case ATH_DEBUG: 
    3939                        val = sc->sc_debug | ath_debug_global; 
     
    4545                        val = sc->sc_txantenna; 
    4646                        break; 
    47 @@ -11616,6 +11623,12 @@ static const ctl_table ath_sysctl_templa 
     47@@ -11619,6 +11626,12 @@ static const ctl_table ath_sysctl_templa 
    4848        }, 
    4949 #endif 
  • trunk/package/madwifi/patches/441-fix_ibss_node_handling.patch

    r17219 r17545  
    4545                                IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY, 
    4646                                        wh, "data", "invalid dir 0x%x", dir); 
    47 @@ -3552,6 +3557,11 @@ ieee80211_recv_mgmt(struct ieee80211vap  
     47@@ -3555,6 +3560,11 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    4848                        } else if (vap->iv_opmode == IEEE80211_M_WDS) { 
    4949                                found = 1; 
     
    5757                        IEEE80211_UNLOCK_IRQ(vap->iv_ic); 
    5858  
    59 @@ -3676,19 +3686,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  
     59@@ -3683,19 +3693,8 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    6060                        vap->iv_stats.is_rx_ssidmismatch++; /*XXX*/ 
    6161                        return; 
     
    8181--- a/net80211/ieee80211_node.c 
    8282+++ b/net80211/ieee80211_node.c 
    83 @@ -601,6 +601,7 @@ ieee80211_ibss_merge(struct ieee80211_no 
     83@@ -601,6 +601,8 @@ ieee80211_ibss_merge(struct ieee80211_no 
    8484                ic->ic_flags & IEEE80211_F_SHPREAMBLE ? "short" : "long", 
    8585                ic->ic_flags & IEEE80211_F_SHSLOT ? "short" : "long", 
    8686                ic->ic_flags & IEEE80211_F_USEPROT ? ", protection" : ""); 
    87 +       ieee80211_node_table_reset(&vap->iv_ic->ic_sta, vap); 
     87+       if (!IEEE80211_ADDR_EQ(ni->ni_bssid, vap->iv_bssid)) 
     88+               ieee80211_node_table_reset(&vap->iv_ic->ic_sta, vap); 
    8889        return ieee80211_sta_join1(ieee80211_ref_node(ni)); 
    8990 } 
    9091 EXPORT_SYMBOL(ieee80211_ibss_merge); 
     92@@ -1378,9 +1380,7 @@ ieee80211_add_neighbor(struct ieee80211v 
     93                if (sp->ath != NULL) 
     94                        ieee80211_saveath(ni, sp->ath); 
     95  
     96-               /* NB: must be after ni_chan is setup */ 
     97-               ieee80211_setup_rates(ni, sp->rates, sp->xrates, IEEE80211_F_DOSORT); 
     98- 
     99+               ni->ni_rates = vap->iv_bss->ni_rates; 
     100                if (ic->ic_newassoc != NULL) 
     101                        ic->ic_newassoc(ni, 1); 
     102                /* XXX not right for 802.1x/WPA */ 
  • trunk/package/madwifi/patches/443-tx_drop_counter.patch

    r17224 r17545  
    11--- a/net80211/ieee80211_node.c 
    22+++ b/net80211/ieee80211_node.c 
    3 @@ -1591,10 +1591,6 @@ found: 
     3@@ -1590,10 +1590,6 @@ found: 
    44                                ieee80211_ref_node(ni); 
    55 #endif 
  • trunk/package/madwifi/patches/446-single_module.patch

    r17314 r17545  
    336336--- a/ath/if_ath.c 
    337337+++ b/ath/if_ath.c 
    338 @@ -13777,3 +13777,5 @@ cleanup_ath_buf(struct ath_softc *sc, st 
     338@@ -13780,3 +13780,5 @@ cleanup_ath_buf(struct ath_softc *sc, st 
    339339        return bf; 
    340340 } 
Note: See TracChangeset for help on using the changeset viewer.