Changeset 13095


Ignore:
Timestamp:
2008-11-02T14:03:03+01:00 (7 years ago)
Author:
nbd
Message:

fix a rare wds related noderef issue

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

Legend:

Unmodified
Added
Removed
  • trunk/package/madwifi/patches/370-wdsvap.patch

    r12883 r13095  
    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,12 @@ ath_vap_create(struct ieee80211com *ic,  
    4848                } else 
    4949                        ic_opmode = opmode; 
     
    5959                /* XXX sta+ap for repeater/bridge application */ 
    6060                if ((sc->sc_nvaps != 0) && (ic->ic_opmode == IEEE80211_M_STA)) 
    61 @@ -1304,7 +1306,7 @@ 
     61@@ -1304,7 +1306,7 @@ ath_vap_create(struct ieee80211com *ic,  
    6262        } 
    6363  
     
    6868        vap = &avp->av_vap; 
    6969        avp->av_newstate = vap->iv_newstate; 
    70 @@ -4209,8 +4211,7 @@ 
     70@@ -4209,8 +4211,7 @@ ath_calcrxfilter(struct ath_softc *sc) 
    7171        if (ic->ic_opmode == IEEE80211_M_STA || 
    7272            sc->sc_opmode == HAL_M_IBSS ||      /* NB: AHDEMO too */ 
     
    7878        if (sc->sc_nmonvaps > 0) 
    7979                rfilt |= (HAL_RX_FILTER_CONTROL | HAL_RX_FILTER_BEACON | 
    80 @@ -9030,8 +9031,6 @@ 
     80@@ -9030,8 +9031,6 @@ ath_calibrate(unsigned long arg) 
    8181                 * set sc->beacons if we might need to restart 
    8282                  * them after ath_reset. */ 
     
    8989--- a/net80211/ieee80211.c 
    9090+++ b/net80211/ieee80211.c 
    91 @@ -396,7 +396,7 @@ 
     91@@ -396,7 +396,7 @@ EXPORT_SYMBOL(ieee80211_ifdetach); 
    9292  
    9393 int 
     
    9898 #define        IEEE80211_C_OPMODE \ 
    9999        (IEEE80211_C_IBSS | IEEE80211_C_HOSTAP | IEEE80211_C_AHDEMO | \ 
    100 @@ -510,9 +510,18 @@ 
     100@@ -510,9 +510,18 @@ ieee80211_vap_setup(struct ieee80211com  
    101101  
    102102        vap->iv_monitor_crc_errors = 0; 
     
    119119  
    120120        ieee80211_crypto_vattach(vap); 
    121 @@ -547,7 +556,8 @@ 
     121@@ -547,7 +556,8 @@ ieee80211_vap_attach(struct ieee80211vap 
    122122        ifmedia_set(&vap->iv_media, imr.ifm_active); 
    123123  
     
    129129  
    130130        IEEE80211_ADDR_COPY(dev->dev_addr, vap->iv_myaddr); 
    131 @@ -579,10 +589,24 @@ 
     131@@ -579,10 +589,24 @@ ieee80211_vap_detach(struct ieee80211vap 
    132132 { 
    133133        struct ieee80211com *ic = vap->iv_ic; 
     
    157157--- a/net80211/ieee80211_ioctl.h 
    158158+++ b/net80211/ieee80211_ioctl.h 
    159 @@ -474,7 +474,7 @@ 
     159@@ -474,7 +474,7 @@ struct ieee80211req { 
    160160 #define        IEEE80211_IOC_DTIM_PERIOD       52      /* DTIM period (beacons) */ 
    161161 #define        IEEE80211_IOC_BEACON_INTERVAL   53      /* beacon interval (ms) */ 
     
    166166 #define        IEEE80211_IOC_TURBOP            57      /* ATH turbo' (on, off) */ 
    167167 #define        IEEE80211_IOC_APPIEBUF          58      /* IE in the management frame */ 
    168 @@ -552,8 +552,8 @@ 
     168@@ -552,8 +552,8 @@ struct ieee80211req_scan_result { 
    169169 #define        IEEE80211_IOCTL_HALMAP          (SIOCIWFIRSTPRIV+21) 
    170170 #define        IEEE80211_IOCTL_ADDMAC          (SIOCIWFIRSTPRIV+22) 
     
    179179--- a/net80211/ieee80211_linux.h 
    180180+++ b/net80211/ieee80211_linux.h 
    181 @@ -650,5 +650,5 @@ 
     181@@ -650,5 +650,5 @@ struct ifreq; 
    182182 int ieee80211_ioctl_create_vap(struct ieee80211com *, struct ifreq *, 
    183183        struct net_device *); 
     
    188188--- a/net80211/ieee80211_var.h 
    189189+++ b/net80211/ieee80211_var.h 
    190 @@ -187,6 +187,12 @@ 
     190@@ -187,6 +187,12 @@ struct ieee80211vap { 
    191191        struct ieee80211_proc_entry *iv_proc_entries; 
    192192        struct vlan_group *iv_vlgrp;                    /* vlan group state */ 
     
    201201        struct ieee80211com *iv_ic;                     /* back ptr to common state */ 
    202202        u_int32_t iv_debug;                             /* debug msg flags */ 
    203 @@ -447,7 +453,7 @@ 
     203@@ -447,7 +453,7 @@ struct ieee80211com { 
    204204        atomic_t ic_node_counter; 
    205205        /* Virtual AP create/delete */ 
     
    210210  
    211211        /* Send/recv 802.11 management frame */ 
    212 @@ -703,7 +709,7 @@ 
     212@@ -703,7 +709,7 @@ MALLOC_DECLARE(M_80211_VAP); 
    213213 int ieee80211_ifattach(struct ieee80211com *); 
    214214 void ieee80211_ifdetach(struct ieee80211com *); 
     
    221221--- a/net80211/ieee80211_wireless.c 
    222222+++ b/net80211/ieee80211_wireless.c 
    223 @@ -2190,7 +2190,7 @@ 
     223@@ -2190,7 +2190,7 @@ ieee80211_setupxr(struct ieee80211vap *v 
    224224                        ieee80211_scan_flush(ic);       /* NB: could optimize */ 
    225225  
     
    230230  
    231231                        /* We use iv_xrvap to link to the parent VAP as well */ 
    232 @@ -3801,74 +3801,51 @@ 
     232@@ -3801,74 +3801,51 @@ ieee80211_ioctl_setmlme(struct net_devic 
    233233        return 0; 
    234234 } 
     
    330330  
    331331 /* 
    332 @@ -5391,8 +5368,8 @@ 
     332@@ -5391,8 +5368,8 @@ static const struct iw_priv_args ieee802 
    333333          IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "kickmac"}, 
    334334        { IEEE80211_IOCTL_WDSADDMAC, 
     
    341341          IW_PRIV_TYPE_CHANLIST | IW_PRIV_SIZE_FIXED, 0,"setchanlist" }, 
    342342        { IEEE80211_IOCTL_GETCHANLIST, 
    343 @@ -5884,8 +5861,8 @@ 
     343@@ -5884,8 +5861,8 @@ static const iw_handler ieee80211_priv_h 
    344344 #endif 
    345345        set_priv(IEEE80211_IOCTL_ADDMAC, ieee80211_ioctl_addmac), 
     
    352352        set_priv(IEEE80211_IOCTL_SETSCANLIST, ieee80211_ioctl_setscanlist), 
    353353 #ifdef ATH_REVERSE_ENGINEERING 
    354 @@ -5956,7 +5933,7 @@ 
     354@@ -5956,7 +5933,7 @@ ieee80211_ioctl_create_vap(struct ieee80 
    355355  
    356356        strncpy(name, cp.icp_name, sizeof(name)); 
     
    361361                return -EIO; 
    362362  
    363 @@ -5973,9 +5950,9 @@ 
     363@@ -5973,9 +5950,9 @@ EXPORT_SYMBOL(ieee80211_ioctl_create_vap 
    364364  */ 
    365365 struct ieee80211vap* 
     
    375375--- a/net80211/ieee80211_input.c 
    376376+++ b/net80211/ieee80211_input.c 
    377 @@ -201,6 +201,7 @@ 
     377@@ -201,6 +201,7 @@ ieee80211_input(struct ieee80211vap * va 
    378378        struct ieee80211_node * ni = ni_or_null; 
    379379        struct ieee80211com *ic = vap->iv_ic; 
     
    383383        struct ieee80211_key *key; 
    384384        struct ether_header *eh; 
    385 @@ -545,11 +546,29 @@ 
     385@@ -545,11 +546,30 @@ ieee80211_input(struct ieee80211vap * va 
    386386                         * the node table for the packet source address (addr4). 
    387387                         * If not, add one. 
     
    403403+                               } 
    404404+                               if (ni_wds != NULL) { 
    405 +                                       ieee80211_unref_node(&ni); 
     405+                                       if (ni_or_null == NULL) 
     406+                                               ieee80211_unref_node(&ni); 
    406407+                                       ni = ieee80211_ref_node(ni_wds); 
    407408+                               } 
     
    416417                                if (!(vap->iv_flags_ext & IEEE80211_FEXT_WDS)) { 
    417418                                        IEEE80211_DISCARD(vap, IEEE80211_MSG_INPUT, 
    418 @@ -557,7 +576,6 @@ 
     419@@ -557,7 +577,6 @@ ieee80211_input(struct ieee80211vap * va 
    419420                                        goto err; 
    420421                                } 
     
    424425                                /* Last call increments ref count if !NULL */ 
    425426                                if ((ni_wds != NULL) && (ni_wds != ni)) { 
    426 @@ -3084,8 +3102,7 @@ 
     427@@ -3084,8 +3103,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    427428                    (vap->iv_opmode == IEEE80211_M_STA && ni->ni_associd) || 
    428429                    (vap->iv_opmode == IEEE80211_M_IBSS) || 
     
    434435                        return; 
    435436                } 
    436 @@ -3471,13 +3488,53 @@ 
     437@@ -3471,13 +3489,53 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    437438                 */ 
    438439                if (ic->ic_flags & IEEE80211_F_SCAN) { 
     
    493494                                /* 
    494495                                 * Copy data from beacon to neighbor table. 
    495 @@ -3490,6 +3547,7 @@ 
     496@@ -3490,6 +3548,7 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    496497                                IEEE80211_ADDR_COPY(ni->ni_bssid, wh->i_addr3); 
    497498                                memcpy(ni->ni_tstamp.data, scan.tstamp, 
     
    503504--- a/net80211/ieee80211_node.c 
    504505+++ b/net80211/ieee80211_node.c 
    505 @@ -1553,22 +1553,24 @@ 
     506@@ -1553,22 +1553,24 @@ ieee80211_find_rxnode(struct ieee80211co 
    506507        ((wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) == IEEE80211_FC0_SUBTYPE_PS_POLL) 
    507508        struct ieee80211_node_table *nt; 
     
    537538        IEEE80211_NODE_TABLE_UNLOCK_IRQ(nt); 
    538539  
    539 @@ -1669,6 +1671,11 @@ 
     540@@ -1669,6 +1671,11 @@ ieee80211_free_node(struct ieee80211_nod 
    540541 { 
    541542        struct ieee80211vap *vap = ni->ni_vap; 
     
    549550        node_print_message(IEEE80211_MSG_NODE|IEEE80211_MSG_NODE_REF, 
    550551                           1 /* show counter */,  
    551 @@ -1781,22 +1788,6 @@ 
     552@@ -1781,22 +1788,6 @@ restart: 
    552553                    jiffies > ni->ni_rxfragstamp + HZ) { 
    553554                        ieee80211_dev_kfree_skb(&ni->ni_rxfrag); 
     
    574575--- a/net80211/ieee80211_output.c 
    575576+++ b/net80211/ieee80211_output.c 
    576 @@ -246,10 +246,16 @@ 
     577@@ -246,10 +246,16 @@ ieee80211_hardstart(struct sk_buff *skb, 
    577578         * things like power save. 
    578579         */ 
     
    594595                /* NB: ieee80211_find_txnode does stat+msg */ 
    595596                goto bad; 
    596 @@ -788,7 +794,7 @@ 
     597@@ -788,7 +794,7 @@ ieee80211_encap(struct ieee80211_node *n 
    597598                break; 
    598599        case IEEE80211_M_WDS: 
     
    603604        case IEEE80211_M_HOSTAP: 
    604605                if (!IEEE80211_IS_MULTICAST(eh.ether_dhost) && 
    605 @@ -973,7 +979,7 @@ 
     606@@ -973,7 +979,7 @@ ieee80211_encap(struct ieee80211_node *n 
    606607                        break; 
    607608                case IEEE80211_M_WDS: 
     
    614615--- a/tools/athkey.c 
    615616+++ b/tools/athkey.c 
    616 @@ -118,7 +118,7 @@ 
     617@@ -118,7 +118,7 @@ set80211priv(const char *dev, int op, vo 
    617618                                IOCTL_ERR(IEEE80211_IOCTL_ADDMAC), 
    618619                                IOCTL_ERR(IEEE80211_IOCTL_DELMAC), 
     
    625626--- a/tools/athchans.c 
    626627+++ b/tools/athchans.c 
    627 @@ -118,7 +118,7 @@ 
     628@@ -118,7 +118,7 @@ set80211priv(const char *dev, int op, vo 
    628629                                IOCTL_ERR(IEEE80211_IOCTL_ADDMAC), 
    629630                                IOCTL_ERR(IEEE80211_IOCTL_DELMAC), 
     
    636637--- a/tools/wlanconfig.c 
    637638+++ b/tools/wlanconfig.c 
    638 @@ -968,7 +968,7 @@ 
     639@@ -968,7 +968,7 @@ do80211priv(struct iwreq *iwr, const cha 
    639640                        IOCTL_ERR(IEEE80211_IOCTL_ADDMAC), 
    640641                        IOCTL_ERR(IEEE80211_IOCTL_DELMAC), 
     
    647648--- a/net80211/ieee80211_proto.c 
    648649+++ b/net80211/ieee80211_proto.c 
    649 @@ -1557,57 +1557,12 @@ 
     650@@ -1557,57 +1557,12 @@ __ieee80211_newstate(struct ieee80211vap 
    650651                switch (ostate) { 
    651652                case IEEE80211_S_INIT: 
  • trunk/package/madwifi/patches/371-wds_sta_separation.patch

    r12670 r13095  
    11--- a/net80211/ieee80211_input.c 
    22+++ b/net80211/ieee80211_input.c 
    3 @@ -202,6 +202,7 @@ 
     3@@ -202,6 +202,7 @@ ieee80211_input(struct ieee80211vap * va 
    44        struct ieee80211com *ic = vap->iv_ic; 
    55        struct net_device *dev = vap->iv_dev; 
     
    99        struct ieee80211_key *key; 
    1010        struct ether_header *eh; 
    11 @@ -435,7 +436,7 @@ 
     11@@ -435,7 +436,7 @@ ieee80211_input(struct ieee80211vap * va 
    1212  
    1313        switch (type) { 
     
    1818                        IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY, 
    1919                                wh, "data", "too short: len %u, expecting %u", 
    20 @@ -445,16 +446,24 @@ 
     20@@ -445,16 +446,24 @@ ieee80211_input(struct ieee80211vap * va 
    2121                } 
    2222                switch (vap->iv_opmode) { 
     
    4747                                if ((0 != memcmp(wh->i_addr3, dev->broadcast, ETH_ALEN)) &&  
    4848                                        (0 == (dev->flags & IFF_MULTICAST))) { 
    49 @@ -482,24 +491,10 @@ 
     49@@ -482,24 +491,10 @@ ieee80211_input(struct ieee80211vap * va 
    5050                                        vap->iv_stats.is_rx_mcastecho++; 
    5151                                        goto out; 
     
    7676                        break; 
    7777                case IEEE80211_M_IBSS: 
    78 @@ -541,6 +536,11 @@ 
     78@@ -541,6 +536,11 @@ ieee80211_input(struct ieee80211vap * va 
    7979                                vap->iv_stats.is_rx_notassoc++; 
    8080                                goto err; 
     
    8888                         * If we're a 4 address packet, make sure we have an entry in 
    8989                         * the node table for the packet source address (addr4). 
    90 @@ -548,9 +548,16 @@ 
     90@@ -548,9 +548,16 @@ ieee80211_input(struct ieee80211vap * va 
    9191                         */ 
    9292  
     
    106106                                        if (!memcmp(avp->wds_mac, wh->i_addr2, IEEE80211_ADDR_LEN)) { 
    107107                                                IEEE80211_LOCK_IRQ(ni->ni_ic); 
    108 @@ -566,7 +573,7 @@ 
     108@@ -567,7 +574,7 @@ ieee80211_input(struct ieee80211vap * va 
    109109                        } 
    110110  
     
    115115                                struct ieee80211_frame_addr4 *wh4; 
    116116  
    117 @@ -626,6 +633,11 @@ 
     117@@ -627,6 +634,11 @@ ieee80211_input(struct ieee80211vap * va 
    118118                        goto out; 
    119119                } 
     
    127127                 * Handle privacy requirements.  Note that we 
    128128                 * must not be preempted from here until after 
    129 @@ -698,8 +710,12 @@ 
     129@@ -699,8 +711,12 @@ ieee80211_input(struct ieee80211vap * va 
    130130                if (! accept_data_frame(vap, ni, key, skb, eh)) 
    131131                        goto out; 
     
    142142                IEEE80211_NODE_STAT_ADD(ni, rx_bytes, skb->len); 
    143143                ic->ic_lastdata = jiffies; 
    144 @@ -1132,6 +1148,13 @@ 
     144@@ -1133,6 +1149,13 @@ ieee80211_deliver_data(struct ieee80211_ 
    145145                dev = vap->iv_xrvap->iv_dev; 
    146146 #endif 
     
    156156        /* XXX intra-vap bridging only */ 
    157157        if (vap->iv_opmode == IEEE80211_M_HOSTAP && 
    158 @@ -1157,7 +1180,16 @@ 
     158@@ -1158,7 +1181,16 @@ ieee80211_deliver_data(struct ieee80211_ 
    159159                        if (ni1 != NULL) { 
    160160                                if (ni1->ni_vap == vap && 
     
    175175--- a/net80211/ieee80211_ioctl.h 
    176176+++ b/net80211/ieee80211_ioctl.h 
    177 @@ -649,6 +649,7 @@ 
     177@@ -649,6 +649,7 @@ enum { 
    178178        IEEE80211_PARAM_BGSCAN_THRESH           = 79,   /* bg scan rssi threshold */ 
    179179        IEEE80211_PARAM_RSSI_DIS_THR    = 80,   /* rssi threshold for disconnection */ 
     
    185185--- a/net80211/ieee80211_node.h 
    186186+++ b/net80211/ieee80211_node.h 
    187 @@ -92,11 +92,13 @@ 
     187@@ -92,11 +92,13 @@ struct ath_softc; 
    188188  * the ieee80211com structure. 
    189189  */ 
     
    200200        u_int ni_scangen;                       /* gen# for timeout scan */ 
    201201        u_int8_t ni_authmode;                   /* authentication algorithm */ 
    202 @@ -430,5 +432,6 @@ 
     202@@ -430,5 +432,6 @@ void ieee80211_node_join(struct ieee8021 
    203203 void ieee80211_node_leave(struct ieee80211_node *); 
    204204 u_int8_t ieee80211_getrssi(struct ieee80211com *); 
     
    209209--- a/net80211/ieee80211_var.h 
    210210+++ b/net80211/ieee80211_var.h 
    211 @@ -322,6 +322,7 @@ 
     211@@ -322,6 +322,7 @@ struct ieee80211com { 
    212212        u_int8_t ic_myaddr[IEEE80211_ADDR_LEN]; 
    213213        struct timer_list ic_inact;             /* mgmt/inactivity timer */ 
     
    217217        u_int32_t ic_flags_ext;                 /* extension of state flags */ 
    218218        u_int32_t ic_caps;                      /* capabilities */ 
    219 @@ -625,6 +626,7 @@ 
     219@@ -625,6 +626,7 @@ MALLOC_DECLARE(M_80211_VAP); 
    220220 #define IEEE80211_FEXT_DROPUNENC_EAPOL 0x00000800      /* CONF: drop unencrypted eapol frames */ 
    221221 #define IEEE80211_FEXT_APPIE_UPDATE    0x00001000      /* STATE: beacon APP IE updated */ 
     
    227227--- a/net80211/ieee80211_wireless.c 
    228228+++ b/net80211/ieee80211_wireless.c 
    229 @@ -2867,6 +2867,14 @@ 
     229@@ -2867,6 +2867,14 @@ ieee80211_ioctl_setparam(struct net_devi 
    230230                else 
    231231                        vap->iv_minrateindex = 0; 
     
    242242        case IEEE80211_PARAM_DUMPREGS: 
    243243                ieee80211_dump_registers(dev, info, w, extra); 
    244 @@ -3223,6 +3231,9 @@ 
     244@@ -3223,6 +3231,9 @@ ieee80211_ioctl_getparam(struct net_devi 
    245245        case IEEE80211_PARAM_MINRATE: 
    246246                param[0] = vap->iv_minrateindex; 
     
    252252                return -EOPNOTSUPP; 
    253253        } 
    254 @@ -4447,6 +4458,8 @@ 
     254@@ -4447,6 +4458,8 @@ get_sta_space(void *arg, struct ieee8021 
    255255        struct ieee80211vap *vap = ni->ni_vap; 
    256256        size_t ielen; 
     
    261261                return; 
    262262        if ((vap->iv_opmode == IEEE80211_M_HOSTAP || 
    263 @@ -4466,6 +4479,8 @@ 
     263@@ -4466,6 +4479,8 @@ get_sta_info(void *arg, struct ieee80211 
    264264        size_t ielen, len; 
    265265        u_int8_t *cp; 
     
    270270                return; 
    271271        if ((vap->iv_opmode == IEEE80211_M_HOSTAP || 
    272 @@ -5767,6 +5782,10 @@ 
     272@@ -5767,6 +5782,10 @@ static const struct iw_priv_args ieee802 
    273273         0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_minrate"}, 
    274274        { IEEE80211_IOCTL_SETSCANLIST, 
     
    281281 #ifdef ATH_REVERSE_ENGINEERING 
    282282        /* 
    283 @@ -5890,6 +5909,8 @@ 
     283@@ -5890,6 +5909,8 @@ static int 
    284284 ieee80211_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 
    285285 { 
     
    290290        switch (cmd) { 
    291291        case SIOCG80211STATS: 
    292 @@ -5898,8 +5919,20 @@ 
     292@@ -5898,8 +5919,20 @@ ieee80211_ioctl(struct net_device *dev,  
    293293        case SIOC80211IFDESTROY: 
    294294                if (!capable(CAP_NET_ADMIN)) 
     
    322322 #include "if_media.h" 
    323323  
    324 @@ -236,7 +237,11 @@ 
     324@@ -236,7 +237,11 @@ void 
    325325 ieee80211_node_vdetach(struct ieee80211vap *vap) 
    326326 { 
     
    334334        if (vap->iv_bss != NULL) { 
    335335                ieee80211_unref_node(&vap->iv_bss); 
    336 @@ -1134,6 +1139,57 @@ 
     336@@ -1134,6 +1139,57 @@ ieee80211_alloc_node(struct ieee80211vap 
    337337        return ni; 
    338338 } 
     
    392392 int 
    393393 #ifdef IEEE80211_DEBUG_REFCNT 
    394 @@ -2254,6 +2310,36 @@ 
     394@@ -2254,6 +2310,36 @@ ieee80211_node_leave_11g(struct ieee8021 
    395395        } 
    396396 } 
     
    429429  * Handle bookkeeping for a station/neighbor leaving 
    430430  * the bss when operating in ap or adhoc modes. 
    431 @@ -2270,6 +2356,12 @@ 
     431@@ -2270,6 +2356,12 @@ ieee80211_node_leave(struct ieee80211_no 
    432432                        ni, "station with aid %d leaves (refcnt %u)", 
    433433                        IEEE80211_NODE_AID(ni), atomic_read(&ni->ni_refcnt)); 
     
    444444--- a/net80211/ieee80211_linux.h 
    445445+++ b/net80211/ieee80211_linux.h 
    446 @@ -81,6 +81,12 @@ 
     446@@ -81,6 +81,12 @@ set_quality(struct iw_quality *iq, u_int 
    447447 #endif 
    448448 } 
     
    457457  * Task deferral 
    458458  * 
    459 @@ -113,6 +119,29 @@ 
     459@@ -113,6 +119,29 @@ typedef void *IEEE80211_TQUEUE_ARG; 
    460460  
    461461 #define        IEEE80211_RESCHEDULE    schedule 
     
    489489--- a/net80211/ieee80211_proto.c 
    490490+++ b/net80211/ieee80211_proto.c 
    491 @@ -1081,6 +1081,8 @@ 
     491@@ -1081,6 +1081,8 @@ ieee80211_init(struct net_device *dev, i 
    492492 int 
    493493 ieee80211_open(struct net_device *dev) 
     
    498498 } 
    499499  
    500 @@ -1116,11 +1118,33 @@ 
     500@@ -1116,11 +1118,33 @@ ieee80211_stop(struct net_device *dev) 
    501501        struct ieee80211vap *vap = dev->priv; 
    502502        struct ieee80211com *ic = vap->iv_ic; 
     
    532532        if (dev->flags & IFF_RUNNING) { 
    533533                dev->flags &= ~IFF_RUNNING;             /* mark us stopped */ 
    534 @@ -1630,6 +1654,7 @@ 
     534@@ -1630,6 +1654,7 @@ __ieee80211_newstate(struct ieee80211vap 
    535535                 */ 
    536536                if (ni->ni_authmode != IEEE80211_AUTH_8021X) 
     
    540540                /* 
    541541                 * fire a timer to bring up XR vap if configured. 
    542 @@ -1885,8 +1910,15 @@ 
     542@@ -1885,8 +1910,15 @@ ieee80211_newstate(struct ieee80211vap * 
    543543                if (ostate == IEEE80211_S_SCAN ||  
    544544                    ostate == IEEE80211_S_AUTH || 
     
    558558--- a/net80211/ieee80211.c 
    559559+++ b/net80211/ieee80211.c 
    560 @@ -373,10 +373,25 @@ 
     560@@ -373,10 +373,25 @@ void 
    561561 ieee80211_ifdetach(struct ieee80211com *ic) 
    562562 { 
     
    585585  
    586586        del_timer(&ic->ic_dfs_excl_timer); 
    587 @@ -599,8 +614,10 @@ 
     587@@ -599,8 +614,10 @@ ieee80211_vap_detach(struct ieee80211vap 
    588588  
    589589        IEEE80211_CANCEL_TQUEUE(&vap->iv_stajoin1tq); 
     
    599599--- a/ath/if_athvar.h 
    600600+++ b/ath/if_athvar.h 
    601 @@ -79,28 +79,6 @@ 
     601@@ -79,28 +79,6 @@ typedef void *TQUEUE_ARG; 
    602602 #define        tasklet_enable(t)       do { (void) t; local_bh_enable(); } while (0) 
    603603 #endif /* !DECLARE_TASKLET */ 
     
    630630--- a/net80211/ieee80211_output.c 
    631631+++ b/net80211/ieee80211_output.c 
    632 @@ -261,6 +261,10 @@ 
     632@@ -261,6 +261,10 @@ ieee80211_hardstart(struct sk_buff *skb, 
    633633                goto bad; 
    634634        } 
     
    641641        if (ieee80211_classify(ni, skb)) { 
    642642                IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, ni, 
    643 @@ -340,20 +344,33 @@ 
     643@@ -340,20 +344,33 @@ void ieee80211_parent_queue_xmit(struct  
    644644  * constructing a frame as it sets i_fc[1]; other bits can 
    645645  * then be or'd in. 
     
    678678                        wh->i_fc[1] = IEEE80211_FC1_DIR_TODS; 
    679679                        IEEE80211_ADDR_COPY(wh->i_addr1, bssid); 
    680 @@ -395,6 +412,8 @@ 
     680@@ -395,6 +412,8 @@ ieee80211_send_setup(struct ieee80211vap 
    681681        *(__le16 *)&wh->i_seq[0] = 
    682682            htole16(ni->ni_txseqs[0] << IEEE80211_SEQ_SEQ_SHIFT); 
     
    687687 } 
    688688  
    689 @@ -416,9 +435,7 @@ 
     689@@ -416,9 +435,7 @@ ieee80211_mgmt_output(struct ieee80211_n 
    690690  
    691691        SKB_CB(skb)->ni = ni; 
     
    698698                vap->iv_myaddr, ni->ni_macaddr, vap->iv_bssid); 
    699699        /* XXX power management */ 
    700 @@ -464,6 +481,9 @@ 
     700@@ -464,6 +481,9 @@ ieee80211_send_nulldata(struct ieee80211 
    701701        struct ieee80211_frame *wh; 
    702702        u_int8_t *frm; 
     
    708708        if (skb == NULL) { 
    709709                /* XXX debug msg */ 
    710 @@ -472,9 +492,7 @@ 
     710@@ -472,9 +492,7 @@ ieee80211_send_nulldata(struct ieee80211 
    711711                return -ENOMEM; 
    712712        } 
     
    719719                vap->iv_myaddr, ni->ni_macaddr, vap->iv_bssid); 
    720720        /* NB: power management bit is never sent by an AP */ 
    721 @@ -512,6 +530,7 @@ 
     721@@ -512,6 +530,7 @@ ieee80211_send_qosnulldata(struct ieee80 
    722722        struct sk_buff *skb; 
    723723        struct ieee80211_qosframe *qwh; 
     
    727727  
    728728        skb = ieee80211_getmgtframe(&frm, 2); 
    729 @@ -523,11 +542,12 @@ 
     729@@ -523,11 +542,12 @@ ieee80211_send_qosnulldata(struct ieee80 
    730730        SKB_CB(skb)->ni = ieee80211_ref_node(ni); 
    731731  
     
    743743                vap->iv_myaddr, /* SA */ 
    744744                ni->ni_macaddr, /* DA */ 
    745 @@ -541,10 +561,10 @@ 
     745@@ -541,10 +561,10 @@ ieee80211_send_qosnulldata(struct ieee80 
    746746  
    747747        /* map from access class/queue to 11e header priority value */ 
     
    756756        IEEE80211_NODE_STAT(ni, tx_data); 
    757757  
    758 @@ -786,6 +806,8 @@ 
     758@@ -786,6 +806,8 @@ ieee80211_encap(struct ieee80211_node *n 
    759759                hdrsize = sizeof(struct ieee80211_frame); 
    760760  
     
    765765        switch (vap->iv_opmode) { 
    766766        case IEEE80211_M_IBSS: 
    767 @@ -805,20 +827,9 @@ 
     767@@ -805,20 +827,9 @@ ieee80211_encap(struct ieee80211_node *n 
    768768                        ismulticast = IEEE80211_IS_MULTICAST(eh.ether_dhost); 
    769769                break; 
     
    788788                        ismulticast = IEEE80211_IS_MULTICAST(vap->iv_bssid); 
    789789                break; 
    790 @@ -1689,9 +1700,7 @@ 
     790@@ -1689,9 +1700,7 @@ ieee80211_send_probereq(struct ieee80211 
    791791  
    792792        SKB_CB(skb)->ni = ieee80211_ref_node(ni); 
     
    801801--- a/net80211/ieee80211_linux.c 
    802802+++ b/net80211/ieee80211_linux.c 
    803 @@ -145,7 +145,7 @@ 
     803@@ -145,7 +145,7 @@ ieee80211_getmgtframe(u_int8_t **frm, u_ 
    804804        struct sk_buff *skb; 
    805805        u_int len; 
     
    810810        skb = ieee80211_dev_alloc_skb_debug(len + align - 1, func, line); 
    811811 #else 
    812 @@ -161,7 +161,7 @@ 
     812@@ -161,7 +161,7 @@ ieee80211_getmgtframe(u_int8_t **frm, u_ 
    813813                SKB_CB(skb)->flags = 0; 
    814814                SKB_CB(skb)->next = NULL; 
  • trunk/package/madwifi/patches/372-queue_vif.patch

    r12950 r13095  
    11--- a/net80211/ieee80211_input.c 
    22+++ b/net80211/ieee80211_input.c 
    3 @@ -1199,6 +1199,7 @@ 
     3@@ -1200,6 +1200,7 @@ ieee80211_deliver_data(struct ieee80211_ 
    44                } 
    55                if (skb1 != NULL) { 
     
    99                        skb_reset_mac_header(skb1); 
    1010                        skb_set_network_header(skb1, sizeof(struct ether_header)); 
    11 @@ -1206,7 +1207,12 @@ 
     11@@ -1207,7 +1208,12 @@ ieee80211_deliver_data(struct ieee80211_ 
    1212                        skb1->protocol = __constant_htons(ETH_P_802_2); 
    1313                        /* XXX insert vlan tag before queue it? */ 
     
    2525--- a/net80211/ieee80211_output.c 
    2626+++ b/net80211/ieee80211_output.c 
    27 @@ -333,9 +333,10 @@ 
     27@@ -333,9 +333,10 @@ void ieee80211_parent_queue_xmit(struct  
    2828        /* Dispatch the packet to the parent device */ 
    2929        skb->dev = vap->iv_ic->ic_dev; 
  • trunk/package/madwifi/patches/374-nbtt_fix.patch

    r12883 r13095  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -5484,6 +5484,9 @@ 
     3@@ -5484,6 +5484,9 @@ ath_beacon_config(struct ath_softc *sc,  
    44                ath_beacon_dturbo_config(vap, intval & 
    55                                ~(HAL_BEACON_RESET_TSF | HAL_BEACON_ENA)); 
     
    1313--- a/ath_hal/ah_os.c 
    1414+++ b/ath_hal/ah_os.c 
    15 @@ -71,6 +71,7 @@ 
     15@@ -71,6 +71,7 @@ static        int ath_hal_debug = 99; 
    1616 int    ath_hal_dma_beacon_response_time = 2;   /* in TUs */ 
    1717 int    ath_hal_sw_beacon_response_time = 10;   /* in TUs */ 
  • trunk/package/madwifi/patches/375-atim_tsf_update.patch

    r12883 r13095  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -161,6 +161,7 @@ 
     3@@ -161,6 +161,7 @@ static void ath_beacon_send(struct ath_s 
    44 static void ath_beacon_return(struct ath_softc *, struct ath_buf *); 
    55 static void ath_beacon_free(struct ath_softc *); 
     
    99 static void ath_desc_free(struct ath_softc *); 
    1010 static void ath_desc_swap(struct ath_desc *); 
    11 @@ -2793,6 +2794,72 @@ 
     11@@ -2793,6 +2794,72 @@ ath_set_ack_bitrate(struct ath_softc *sc 
    1212        return 1; 
    1313 } 
     
    8282  * Reset the hardware w/o losing operational state.  This is 
    8383  * basically a more efficient way of doing ath_stop, ath_init, 
    84 @@ -5292,6 +5359,7 @@ 
     84@@ -5292,6 +5359,7 @@ ath_beacon_config(struct ath_softc *sc,  
    8585        u_int64_t tsf, hw_tsf; 
    8686        u_int32_t tsftu, hw_tsftu; 
     
    9090  
    9191        if (vap == NULL) 
    92 @@ -5299,6 +5367,9 @@ 
     92@@ -5299,6 +5367,9 @@ ath_beacon_config(struct ath_softc *sc,  
    9393  
    9494        ni = vap->iv_bss; 
     
    100100        tsf = le64_to_cpu(ni->ni_tstamp.tsf); 
    101101        hw_tsftu = hw_tsf >> 10; 
    102 @@ -5488,15 +5559,27 @@ 
     102@@ -5488,15 +5559,27 @@ ath_beacon_config(struct ath_softc *sc,  
    103103                                <= ath_hal_sw_beacon_response_time) 
    104104                        nexttbtt += intval; 
     
    128128         * time critical aspect of this function */ 
    129129        DPRINTF(sc, ATH_DEBUG_BEACON, 
    130 @@ -6399,6 +6482,11 @@ 
     130@@ -6399,6 +6482,11 @@ ath_recv_mgmt(struct ieee80211vap * vap, 
    131131                        DPRINTF(sc, ATH_DEBUG_BEACON,  
    132132                                "Updated beacon timers\n"); 
  • trunk/package/madwifi/patches/377-disable_vlan_code.patch

    r12838 r13095  
    11--- a/net80211/ieee80211_linux.h 
    22+++ b/net80211/ieee80211_linux.h 
    3 @@ -649,22 +649,7 @@ 
     3@@ -649,22 +649,7 @@ int ieee80211_proc_vcreate(struct ieee80 
    44               char *); 
    55 void ieee80211_proc_cleanup(struct ieee80211vap *); 
  • trunk/package/madwifi/patches/378-adhoc_crash_fix.patch

    r12838 r13095  
    11--- a/net80211/ieee80211_input.c 
    22+++ b/net80211/ieee80211_input.c 
    3 @@ -3530,6 +3530,11 @@ 
     3@@ -3531,6 +3531,11 @@ ieee80211_recv_mgmt(struct ieee80211vap  
    44                if (ic->ic_flags & IEEE80211_F_SCAN) { 
    55                        ieee80211_add_scan(vap, &scan, wh, subtype, rssi, rtsf); 
  • trunk/package/madwifi/patches/379-invalid_rate_fix.patch

    r12838 r13095  
    3030  
    3131 #include "release.h" 
    32 @@ -471,11 +457,11 @@ 
     32@@ -471,11 +457,11 @@ ath_rate_tx_complete(struct ath_softc *s 
    3333                final_rate = sc->sc_hwmap[ts->ts_rate & ~HAL_TXSTAT_ALTRATE].ieeerate; 
    3434                final_ndx = rate_to_ndx(sn, final_rate); 
     
    4444                } 
    4545  
    46 @@ -485,7 +471,7 @@ 
     46@@ -485,7 +471,7 @@ ath_rate_tx_complete(struct ath_softc *s 
    4747                tries = ts->ts_longretry + 1; 
    4848  
     
    5353                        return; 
    5454                } 
    55 @@ -551,7 +537,7 @@ 
     55@@ -551,7 +537,7 @@ ath_rate_tx_complete(struct ath_softc *s 
    5656 static void 
    5757 ath_rate_newassoc(struct ath_softc *sc, struct ath_node *an, int isnew) 
     
    6262                if (isnew) 
    6363                        ath_rate_ctl_reset(sc, &an->an_node); 
    64 @@ -601,7 +587,7 @@ 
     64@@ -601,7 +587,7 @@ ath_fill_sample_table(struct minstrel_no 
    6565                            p = rates + sprintf(rates, "rates :: %d ", column_index); 
    6666                            for (i = 0; i < num_sample_rates; i++) 
     
    7171 #endif 
    7272 } 
    73 @@ -628,7 +614,7 @@ 
     73@@ -628,7 +614,7 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    7474                sn->is_sampling = 0; 
    7575  
     
    8080                } 
    8181                sn->static_rate_ndx = -1; 
    82 @@ -658,7 +644,7 @@ 
     82@@ -658,7 +644,7 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    8383                        sn->rates[x].rix = sc->sc_rixmap[sn->rates[x].rate]; 
    8484                        } 
     
    8989                                continue; 
    9090                        } 
    91 @@ -673,7 +659,7 @@ 
     91@@ -673,7 +659,7 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    9292                ni->ni_txrate = 0; 
    9393  
     
    9898                                vap->iv_fixed_rate); 
    9999                        /* There are no rates yet; we're done */ 
    100 @@ -689,23 +675,23 @@ 
     100@@ -689,23 +675,23 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    101101                         * the node.  We know the rate is there because the 
    102102                         * rate set is checked when the station associates. */ 
     
    131131                                continue; 
    132132                        } 
    133 @@ -735,9 +721,9 @@ 
     133@@ -735,9 +721,9 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    134134                } 
    135135  
     
    143143  
    144144                /* Set the initial rate */ 
    145 @@ -781,10 +767,10 @@ 
     145@@ -781,10 +767,10 @@ ath_timer_function(unsigned long data) 
    146146                unsigned int interval = ath_timer_interval; 
    147147  
     
    156156                ic = &sc->sc_ic; 
    157157  
    158 @@ -808,7 +794,7 @@ 
     158@@ -808,7 +794,7 @@ ath_timer_function(unsigned long data) 
    159159  
    160160                timer  = &(ssc->timer); 
     
    165165                timer->expires = jiffies + ((HZ * interval) / 1000); 
    166166                add_timer(timer); 
    167 @@ -904,7 +890,7 @@ 
     167@@ -904,7 +890,7 @@ static struct ath_ratectrl * 
    168168 ath_rate_attach(struct ath_softc *sc) 
    169169 { 
     
    174174                _MOD_INC_USE(THIS_MODULE, return NULL); 
    175175                osc = kmalloc(sizeof(struct minstrel_softc), GFP_ATOMIC); 
    176 @@ -963,7 +949,7 @@ 
     176@@ -963,7 +949,7 @@ ath_proc_read_nodes(struct ieee80211vap  
    177177                                        p += sprintf(p, "out of room for node " MAC_FMT "\n\n", MAC_ADDR(ni->ni_macaddr)); 
    178178                                        break; 
     
    211211 static int ath_rate_max_success_threshold = 10; 
    212212 static int ath_rate_min_success_threshold = 1; 
    213 @@ -197,7 +186,7 @@ 
     213@@ -197,7 +186,7 @@ ath_rate_update(struct ath_softc *sc, st 
    214214  
    215215        KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode)); 
     
    220220                ni->ni_rates.rs_nrates > 0 ? 
    221221                        (ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL) / 2 : 0); 
    222 @@ -297,9 +286,9 @@ 
     222@@ -297,9 +286,9 @@ ath_rate_ctl_start(struct ath_softc *sc, 
    223223                 * rate set is checked when the station associates. 
    224224                 */ 
     
    233233        ath_rate_update(sc, ni, srate); 
    234234 #undef RATE 
    235 @@ -377,7 +366,7 @@ 
     235@@ -377,7 +366,7 @@ ath_rate_ctl(void *arg, struct ieee80211 
    236236  
    237237        old_rate = ni->ni_txrate; 
     
    242242                 amn->amn_tx_try1_cnt, 
    243243                 amn->amn_tx_try2_cnt, 
    244 @@ -390,7 +379,7 @@ 
     244@@ -390,7 +379,7 @@ ath_rate_ctl(void *arg, struct ieee80211 
    245245                        amn->amn_recovery = 1; 
    246246                        amn->amn_success = 0; 
     
    251251                        amn->amn_recovery = 0; 
    252252        } else if (is_failure(amn)) { 
    253 @@ -401,12 +390,12 @@ 
     253@@ -401,12 +390,12 @@ ath_rate_ctl(void *arg, struct ieee80211 
    254254                                amn->amn_success_threshold *= 2; 
    255255                                amn->amn_success_threshold = min(amn->amn_success_threshold, 
     
    297297  * Default parameters for the rate control algorithm.  These are 
    298298  * all tunable with sysctls.  The rate controller runs periodically 
    299 @@ -186,7 +172,7 @@ 
     299@@ -186,7 +172,7 @@ ath_rate_update(struct ath_softc *sc, st 
    300300  
    301301        KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode)); 
     
    306306                ni->ni_rates.rs_nrates > 0 ? 
    307307                        (ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL) / 2 : 0); 
    308 @@ -283,9 +269,9 @@ 
     308@@ -283,9 +269,9 @@ ath_rate_ctl_start(struct ath_softc *sc, 
    309309                 */ 
    310310                /* NB: the rate set is assumed sorted */ 
     
    319319        ath_rate_update(sc, ni, srate); 
    320320 #undef RATE 
    321 @@ -364,7 +350,7 @@ 
     321@@ -364,7 +350,7 @@ ath_rate_ctl(void *arg, struct ieee80211 
    322322            on->on_tx_retr < (on->on_tx_ok * ath_rate_raise) / 100) 
    323323                dir = 1; 
     
    328328                on->on_tx_ok, on->on_tx_err, on->on_tx_retr, 
    329329                on->on_tx_upper, dir); 
    330 @@ -395,7 +381,7 @@ 
     330@@ -395,7 +381,7 @@ ath_rate_ctl(void *arg, struct ieee80211 
    331331        } 
    332332  
     
    371371  * This file is an implementation of the SampleRate algorithm 
    372372  * in "Bit-rate Selection in Wireless Networks" 
    373 @@ -740,7 +723,7 @@ 
     373@@ -740,7 +723,7 @@ ath_rate_tx_complete(struct ath_softc *s 
    374374                ndx[3] = rate_to_ndx(sn, rate[3]); 
    375375  
     
    380380                        bin_to_size(size_to_bin(frame_size)), 
    381381                        finalTSIdx, 
    382 @@ -886,15 +869,16 @@ 
     382@@ -886,15 +869,16 @@ ath_rate_ctl_reset(struct ath_softc *sc, 
    383383                        if ((ni->ni_rates.rs_rates[x] & IEEE80211_RATE_VAL) == vap->iv_fixed_rate) 
    384384                                srate = x; 
  • trunk/package/madwifi/patches/380-noderef_hack.patch

    r12838 r13095  
    11--- a/net80211/ieee80211_node.c 
    22+++ b/net80211/ieee80211_node.c 
    3 @@ -427,8 +427,8 @@ 
     3@@ -427,8 +427,8 @@ ieee80211_reset_bss(struct ieee80211vap  
    44                          __func__, ni, MAC_ADDR(vap->iv_myaddr)); 
    55        KASSERT(ni != NULL, ("unable to setup inital BSS node")); 
  • trunk/package/madwifi/patches/381-ibss_modes.patch

    r12884 r13095  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -1260,7 +1260,10 @@ 
     3@@ -1260,7 +1260,10 @@ ath_vap_create(struct ieee80211com *ic,  
    44        case IEEE80211_M_IBSS: 
    55                if ((sc->sc_nvaps != 0) && (ic->ic_opmode == IEEE80211_M_STA)) 
     
    1313        case IEEE80211_M_AHDEMO: 
    1414        case IEEE80211_M_MONITOR: 
    15 @@ -1455,7 +1458,7 @@ 
     15@@ -1455,7 +1458,7 @@ ath_vap_create(struct ieee80211com *ic,  
    1616         * frames.  Other modes carry over directly to the HAL. 
    1717         */ 
  • trunk/package/madwifi/patches/383-ibss_hostap.patch

    r12883 r13095  
    11--- a/ath/if_ath.c 
    22+++ b/ath/if_ath.c 
    3 @@ -1452,6 +1452,23 @@ 
     3@@ -1452,6 +1452,23 @@ ath_vap_create(struct ieee80211com *ic,  
    44                sc->sc_nstavaps++; 
    55        else if (opmode == IEEE80211_M_MONITOR) 
     
    2525         * Adhoc demo mode is a pseudo mode; to the HAL it's 
    2626         * just IBSS mode and the driver doesn't use management 
    27 @@ -4279,7 +4296,8 @@ 
     27@@ -4279,7 +4296,8 @@ ath_calcrxfilter(struct ath_softc *sc) 
    2828        if (ic->ic_opmode != IEEE80211_M_HOSTAP && (dev->flags & IFF_PROMISC)) 
    2929                rfilt |= HAL_RX_FILTER_PROM; 
     
    3535                (ic->ic_opmode == IEEE80211_M_HOSTAP)) 
    3636                rfilt |= HAL_RX_FILTER_BEACON; 
    37 @@ -6433,6 +6451,33 @@ 
     37@@ -6433,6 +6451,33 @@ ath_capture(struct net_device *dev, cons 
    3838 } 
    3939  
     
    6969  * ibss merges. This function is called for all management frames, 
    7070  * including those belonging to other BSS. 
    71 @@ -6485,10 +6530,19 @@ 
     71@@ -6485,10 +6530,19 @@ ath_recv_mgmt(struct ieee80211vap * vap, 
    7272                        DPRINTF(sc, ATH_DEBUG_BEACON,  
    7373                                "Updated beacon timers\n"); 
     
    9393                /* NB: Fall Through */ 
    9494        case IEEE80211_FC0_SUBTYPE_PROBE_RESP: 
    95 @@ -6561,6 +6615,10 @@ 
     95@@ -6561,6 +6615,10 @@ ath_recv_mgmt(struct ieee80211vap * vap, 
    9696 #endif 
    9797                        if (do_merge) 
  • trunk/package/madwifi/patches/400-changeset_r3402.patch

    r11351 r13095  
    11--- a/ath_hal/ah_os.h 
    22+++ b/ath_hal/ah_os.h 
    3 @@ -194,10 +194,6 @@ 
     3@@ -194,10 +194,6 @@ extern u_int32_t __ahdecl ath_hal_getupt 
    44  */ 
    55 #if (AH_BYTE_ORDER == AH_BIG_ENDIAN) 
     
    1212 #define _OS_REG_WRITE(_ah, _reg, _val) do {                    \ 
    1313         is_reg_le(_reg) ?                                      \ 
    14 @@ -219,6 +215,21 @@ 
     14@@ -219,6 +215,21 @@ extern u_int32_t __ahdecl ath_hal_getupt 
    1515         readl((_ah)->ah_sh + (_reg)) :                         \ 
    1616         cpu_to_le32(readl((_ah)->ah_sh + (_reg)))) 
  • trunk/package/madwifi/patches/401-changeset_r3602.patch

    r12719 r13095  
    11--- a/net80211/ieee80211_linux.h 
    22+++ b/net80211/ieee80211_linux.h 
    3 @@ -341,6 +341,8 @@ 
     3@@ -341,6 +341,8 @@ typedef spinlock_t acl_lock_t; 
    44 /* __skb_append got a third parameter in 2.6.14 */ 
    55 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14) 
  • trunk/package/madwifi/patches/403-changeset_r3605.patch

    r12670 r13095  
    11--- a/include/compat.h 
    22+++ b/include/compat.h 
    3 @@ -182,6 +182,13 @@ 
     3@@ -182,6 +182,13 @@ static inline int timeval_compare(struct 
    44 #define DEV_ATH CTL_UNNUMBERED 
    55 #endif 
     
    1717--- a/net80211/ieee80211_linux.h 
    1818+++ b/net80211/ieee80211_linux.h 
    19 @@ -338,13 +338,6 @@ 
     19@@ -338,13 +338,6 @@ typedef spinlock_t acl_lock_t; 
    2020 #define        ACL_LOCK_CHECK(_as) 
    2121 #endif 
     
    3131  * Per-node power-save queue definitions.  Beware of control 
    3232  * flow with IEEE80211_NODE_SAVEQ_LOCK/IEEE80211_NODE_SAVEQ_UNLOCK. 
    33 @@ -388,16 +381,16 @@ 
     33@@ -388,16 +381,16 @@ typedef spinlock_t acl_lock_t; 
    3434        _skb = __skb_dequeue(&(_ni)->ni_savedq);                \ 
    3535        (_qlen) = skb_queue_len(&(_ni)->ni_savedq);             \ 
     
    6060--- a/net80211/ieee80211_power.c 
    6161+++ b/net80211/ieee80211_power.c 
    62 @@ -243,7 +243,7 @@ 
     62@@ -243,7 +243,7 @@ ieee80211_pwrsave(struct sk_buff *skb) 
    6363        tail = skb_peek_tail(&ni->ni_savedq); 
    6464        if (tail != NULL) { 
  • trunk/package/madwifi/patches/404-linux24_fix.patch

    r11791 r13095  
    11--- a/ath_hal/Makefile 
    22+++ b/ath_hal/Makefile 
    3 @@ -78,10 +78,11 @@ 
     3@@ -78,10 +78,11 @@ endif 
    44 quiet_cmd_uudecode = UUDECODE $@ 
    55       cmd_uudecode = $(obj)/uudecode -o $@ $< 
  • trunk/package/madwifi/patches/405-retransmit_check.patch

    r12006 r13095  
    11--- a/net80211/ieee80211.h 
    22+++ b/net80211/ieee80211.h 
    3 @@ -174,8 +174,6 @@ 
     3@@ -174,8 +174,6 @@ struct ieee80211_ctlframe_addr2 { 
    44 #define        IEEE80211_SEQ_SEQ_MASK                  0xfff0 
    55 #define        IEEE80211_SEQ_SEQ_SHIFT                 4 
     
    1212--- a/net80211/ieee80211_input.c 
    1313+++ b/net80211/ieee80211_input.c 
    14 @@ -417,7 +417,7 @@ 
     14@@ -417,7 +417,7 @@ ieee80211_input(struct ieee80211vap * va 
    1515                                tid = 0; 
    1616                        rxseq = le16toh(*(__le16 *)wh->i_seq); 
  • trunk/package/madwifi/patches/407-new_athinfo.patch

    r11848 r13095  
    8282 #include <stdio.h> 
    8383 #include <stdlib.h> 
    84 @@ -130,109 +60,103 @@ 
     84@@ -130,109 +60,103 @@ fprintf(stderr, "#ERR %s: " fmt "\n", __ 
    8585  */ 
    8686 #define AR5K_GPIODI    0x401c 
     
    264264 #define AR5K_RESET_CTL_PHY     0x00000008      /* PHY reset -5210 only */ 
    265265 #define AR5K_RESET_CTL_PCI     0x00000010      /* PCI Core reset (interrupts etc) */ 
    266 @@ -253,7 +177,7 @@ 
     266@@ -253,7 +177,7 @@ static const struct ath5k_srev_name ath5 
    267267 #define AR5K_SLEEP_CTL_SLE_UNITS       0x00000008      /* not on 5210 */ 
    268268  
     
    273273 #define AR5K_PCICFG_EESIZE             0x00000018      /* Mask for EEPROM size [5211+] */ 
    274274 #define AR5K_PCICFG_EESIZE_S           3 
    275 @@ -264,26 +188,118 @@ 
     275@@ -264,26 +188,118 @@ static const struct ath5k_srev_name ath5 
    276276  
    277277 #define AR5K_PCICFG_SPWR_DN            0x00010000      /* Mask for power status (5210) */ 
     
    396396 #define AR5K_EEPROM_CMD_WRITE  0x00000002      /* EEPROM write */ 
    397397 #define AR5K_EEPROM_CMD_RESET  0x00000004      /* EEPROM reset */ 
    398 @@ -291,43 +307,163 @@ 
     398@@ -291,43 +307,163 @@ static const struct ath5k_srev_name ath5 
    399399 /* 
    400400  * EEPROM status register 
     
    588588 /* 
    589589  * Read data by masking 
    590 @@ -350,7 +486,6 @@ 
     590@@ -350,7 +486,6 @@ static const struct ath5k_srev_name ath5 
    591591        (*((volatile u_int32_t *)(mem + (_reg))) = (_val)) 
    592592 #endif 
     
    596596        AR5K_REG_WRITE(_reg, AR5K_REG_READ(_reg) | (_flags)) 
    597597  
    598 @@ -359,7 +494,12 @@ 
     598@@ -359,7 +494,12 @@ static const struct ath5k_srev_name ath5 
    599599  
    600600 #define AR5K_TUNE_REGISTER_TIMEOUT             20000 
     
    610610        const char *name; 
    611611        int addr; 
    612 @@ -375,8 +515,6 @@ 
     612@@ -375,8 +515,6 @@ static const struct eeprom_entry eeprom_ 
    613613        {"regdomain", AR5K_EEPROM_REG_DOMAIN}, 
    614614 }; 
     
    619619 static int verbose = 0; 
    620620  
    621 @@ -398,8 +536,8 @@ 
     621@@ -398,8 +536,8 @@ static u_int32_t ath5k_hw_bitswap(u_int3 
    622622 /* 
    623623  * Get the PHY Chip revision 
     
    630630        int i; 
    631631        u_int32_t srev; 
    632 @@ -427,7 +565,7 @@ 
     632@@ -427,7 +565,7 @@ ath5k_hw_radio_revision(u_int16_t mac_ve 
    633633        for (i = 0; i < 8; i++) 
    634634                AR5K_REG_WRITE(AR5K_PHY(0x20), 0x00010000); 
     
    639639  
    640640                ret = (u_int16_t)ath5k_hw_bitswap(srev, 4) + 1; 
    641 @@ -447,9 +585,8 @@ 
     641@@ -447,9 +585,8 @@ ath5k_hw_radio_revision(u_int16_t mac_ve 
    642642 /* 
    643643  * Write to EEPROM 
     
    651651        u_int32_t status, timeout; 
    652652  
    653 @@ -457,7 +594,7 @@ 
     653@@ -457,7 +594,7 @@ ath5k_hw_eeprom_write(void *mem, u_int32 
    654654         * Initialize EEPROM access 
    655655         */ 
     
    660660                AR5K_REG_ENABLE_BITS(AR5K_PCICFG, AR5K_PCICFG_EEAE); 
    661661  
    662 @@ -466,7 +603,7 @@ 
     662@@ -466,7 +603,7 @@ ath5k_hw_eeprom_write(void *mem, u_int32 
    663663  
    664664        } else { 
     
    669669                usleep(5); 
    670670  
    671 @@ -484,7 +621,7 @@ 
     671@@ -484,7 +621,7 @@ ath5k_hw_eeprom_write(void *mem, u_int32 
    672672                status = AR5K_REG_READ(AR5K_EEPROM_STATUS); 
    673673                if (status & AR5K_EEPROM_STAT_WRDONE) { 
     
    678678                                return 1; 
    679679                        } 
    680 @@ -499,16 +636,15 @@ 
     680@@ -499,16 +636,15 @@ ath5k_hw_eeprom_write(void *mem, u_int32 
    681681 /* 
    682682  * Read from EEPROM 
     
    698698                (void)AR5K_REG_READ(AR5K_EEPROM_BASE + (4 * offset)); 
    699699        } else { 
    700 @@ -531,50 +667,701 @@ 
     700@@ -531,50 +667,701 @@ ath5k_hw_eeprom_read(void *mem, u_int32_ 
    701701        return 1; 
    702702 } 
     
    14201420 #define MAX_NR_WRITES 16 
    14211421        struct { 
    1422 @@ -635,7 +1422,7 @@ 
     1422@@ -635,7 +1422,7 @@ do_write_pairs(int anr, int argc, char * 
    14231423                } 
    14241424                anr++; 
     
    14291429        if (!(wr_ops_len = i)) { 
    14301430                err("no (addr,val) pairs given"); 
    1431 @@ -702,20 +1489,22 @@ 
     1431@@ -702,20 +1489,22 @@ do_write_pairs(int anr, int argc, char * 
    14321432        } 
    14331433  
     
    14561456  
    14571457        fprintf(stderr, 
    1458 @@ -725,8 +1514,8 @@ 
     1458@@ -725,8 +1514,8 @@ static void usage(const char *n) 
    14591459                "  %s -w <base_address> regdomain N\n\n" 
    14601460                "- set a PCI id field to value N:\n" 
     
    14671467        fprintf(stderr, "\n\n"); 
    14681468        fprintf(stderr, 
    1469 @@ -739,19 +1528,457 @@ 
     1469@@ -739,19 +1528,457 @@ static void usage(const char *n) 
    14701470                "unlawful radio transmissions!\n\n"); 
    14711471 } 
     
    19311931        struct { 
    19321932                int valid; 
    1933 @@ -759,7 +1986,7 @@ 
     1933@@ -759,7 +1986,7 @@ CMD(athinfo)(int argc, char *argv[]) 
    19341934        } gpio_set[AR5K_NUM_GPIO]; 
    19351935        int nr_gpio_set = 0; 
     
    19401940  
    19411941        if (argc < 2) { 
    1942 @@ -769,6 +1996,15 @@ 
     1942@@ -769,6 +1996,15 @@ CMD(athinfo)(int argc, char *argv[]) 
    19431943  
    19441944        while (anr < argc && argv[anr][0] == '-') { 
     
    19561956                        do_write = 1; 
    19571957                        break; 
    1958 @@ -777,7 +2013,7 @@ 
     1958@@ -777,7 +2013,7 @@ CMD(athinfo)(int argc, char *argv[]) 
    19591959                        if (strlen(argv[anr]) != 3 || argv[anr][1] != ':' || 
    19601960                            argv[anr][0] < '0' || argv[anr][0] > '5' || 
     
    19651965                        } 
    19661966                        gpio_set[argv[anr][0] - '0'].valid = 1; 
    1967 @@ -797,6 +2033,25 @@ 
     1967@@ -797,6 +2033,25 @@ CMD(athinfo)(int argc, char *argv[]) 
    19681968                        do_dump = 1; 
    19691969                        break; 
     
    19911991                        usage(argv[0]); 
    19921992                        return 0; 
    1993 @@ -805,10 +2060,10 @@ 
     1993@@ -805,10 +2060,10 @@ CMD(athinfo)(int argc, char *argv[]) 
    19941994                default: 
    19951995                        err("unknown option %s", argv[anr]); 
     
    20042004        if (anr >= argc) { 
    20052005                err("missing device address"); 
    2006 @@ -816,7 +2071,7 @@ 
     2006@@ -816,7 +2071,7 @@ CMD(athinfo)(int argc, char *argv[]) 
    20072007                return 3; 
    20082008        } 
     
    20132013        fd = open("/dev/mem", O_RDWR); 
    20142014        if (fd < 0) { 
    2015 @@ -828,7 +2083,7 @@ 
     2015@@ -828,7 +2083,7 @@ CMD(athinfo)(int argc, char *argv[]) 
    20162016                   MAP_SHARED | MAP_FILE, fd, dev_addr); 
    20172017  
     
    20222022                return -3; 
    20232023        } 
    2024 @@ -856,10 +2111,31 @@ 
     2024@@ -856,10 +2111,31 @@ CMD(athinfo)(int argc, char *argv[]) 
    20252025        AR5K_REG_DISABLE_BITS(AR5K_PCICFG, AR5K_PCICFG_SPWR_DN); 
    20262026        usleep(500); 
     
    20562056                                     mac_version); 
    20572057  
    2058 @@ -872,157 +2148,114 @@ 
     2058@@ -872,157 +2148,114 @@ CMD(athinfo)(int argc, char *argv[]) 
    20592059                printf("Warning: Invalid EEPROM Magic number!\n"); 
    20602060        } 
     
    22862286               AR5K_REG_READ(AR5K_GPIODI)); 
    22872287  
    2288 @@ -1030,18 +2263,18 @@ 
     2288@@ -1030,18 +2263,18 @@ CMD(athinfo)(int argc, char *argv[]) 
    22892289                u_int16_t data; 
    22902290                FILE *dumpfile = fopen("ath-eeprom-dump.bin", "w"); 
     
    23102310                } 
    23112311                printf("\n==============================================\n"); 
    2312 @@ -1054,18 +2287,18 @@ 
     2312@@ -1054,18 +2287,18 @@ CMD(athinfo)(int argc, char *argv[]) 
    23132313                u_int32_t old_cr = rcr, old_do = rdo; 
    23142314                int rc; 
     
    23332333                                rcr |= AR5K_GPIOCR_OUT(i);      /* we use mode 3 */ 
    23342334                                rcr &= ~AR5K_GPIOCR_INT_SEL(i); 
    2335 @@ -1111,5 +2344,17 @@ 
     2335@@ -1111,5 +2344,17 @@ CMD(athinfo)(int argc, char *argv[]) 
    23362336  
    23372337                return rc; 
  • trunk/package/madwifi/patches/409-wext_compat.patch

    r12790 r13095  
    1515 pre_announced_chanswitch(struct net_device *dev, u_int32_t channel, u_int32_t tbtt); 
    1616  
    17 @@ -1800,7 +1807,7 @@ 
     17@@ -1800,7 +1807,7 @@ giwscan_cb(void *arg, const struct ieee8 
    1818                IEEE80211_ADDR_COPY(iwe.u.ap_addr.sa_data, se->se_macaddr); 
    1919        else 
     
    2424        /* We ran out of space in the buffer. */ 
    2525        if (last_ev == current_ev) 
    26 @@ -1811,7 +1818,7 @@ 
     26@@ -1811,7 +1818,7 @@ giwscan_cb(void *arg, const struct ieee8 
    2727        iwe.cmd = SIOCGIWESSID; 
    2828        iwe.u.data.flags = 1; 
     
    3333  
    3434        /* We ran out of space in the buffer. */ 
    35 @@ -1824,7 +1831,7 @@ 
     35@@ -1824,7 +1831,7 @@ giwscan_cb(void *arg, const struct ieee8 
    3636                iwe.cmd = SIOCGIWMODE; 
    3737                iwe.u.mode = se->se_capinfo & IEEE80211_CAPINFO_ESS ? 
     
    4242  
    4343                /* We ran out of space in the buffer. */ 
    44 @@ -1837,7 +1844,7 @@ 
     44@@ -1837,7 +1844,7 @@ giwscan_cb(void *arg, const struct ieee8 
    4545        iwe.cmd = SIOCGIWFREQ; 
    4646        iwe.u.freq.m = se->se_chan->ic_freq * 100000; 
     
    5151  
    5252        /* We ran out of space in the buffer. */ 
    53 @@ -1848,7 +1855,7 @@ 
     53@@ -1848,7 +1855,7 @@ giwscan_cb(void *arg, const struct ieee8 
    5454        last_ev = current_ev; 
    5555        iwe.cmd = IWEVQUAL; 
     
    6060  
    6161        /* We ran out of space in the buffer */ 
    62 @@ -1863,7 +1870,7 @@ 
     62@@ -1863,7 +1870,7 @@ giwscan_cb(void *arg, const struct ieee8 
    6363        else 
    6464                iwe.u.data.flags = IW_ENCODE_DISABLED; 
     
    6969        /* We ran out of space in the buffer. */ 
    7070        if (last_ev == current_ev) 
    71 @@ -1878,7 +1885,7 @@ 
     71@@ -1878,7 +1885,7 @@ giwscan_cb(void *arg, const struct ieee8 
    7272                int r = se->se_rates[2 + j] & IEEE80211_RATE_VAL; 
    7373                if (r != 0) { 
     
    7878                                IW_EV_PARAM_LEN); 
    7979                } 
    80 @@ -1887,7 +1894,7 @@ 
     80@@ -1887,7 +1894,7 @@ giwscan_cb(void *arg, const struct ieee8 
    8181                int r = se->se_xrates[2+j] & IEEE80211_RATE_VAL; 
    8282                if (r != 0) { 
     
    8787                                IW_EV_PARAM_LEN); 
    8888                } 
    89 @@ -1906,7 +1913,7 @@ 
     89@@ -1906,7 +1913,7 @@ giwscan_cb(void *arg, const struct ieee8 
    9090        iwe.cmd = IWEVCUSTOM; 
    9191        snprintf(buf, sizeof(buf), "bcn_int=%d", se->se_intval); 
     
    9696        /* We ran out of space in the buffer. */ 
    9797        if (last_ev == current_ev) 
    98 @@ -1930,7 +1937,7 @@ 
     98@@ -1930,7 +1937,7 @@ giwscan_cb(void *arg, const struct ieee8 
    9999                                rsn_leader, sizeof(rsn_leader) - 1); 
    100100 #endif 
     
    105105  
    106106                        /* We ran out of space in the buffer */ 
    107 @@ -1956,7 +1963,7 @@ 
     107@@ -1956,7 +1963,7 @@ giwscan_cb(void *arg, const struct ieee8 
    108108                        wpa_leader, sizeof(wpa_leader) - 1); 
    109109 #endif 
     
    114114  
    115115                        /* We ran out of space in the buffer. */ 
    116 @@ -1975,7 +1982,7 @@ 
     116@@ -1975,7 +1982,7 @@ giwscan_cb(void *arg, const struct ieee8 
    117117                        se->se_wme_ie, se->se_wme_ie[1] + 2, 
    118118                        wme_leader, sizeof(wme_leader) - 1); 
     
    123123  
    124124                        /* We ran out of space in the buffer. */ 
    125 @@ -1993,7 +2000,7 @@ 
     125@@ -1993,7 +2000,7 @@ giwscan_cb(void *arg, const struct ieee8 
    126126                        se->se_ath_ie, se->se_ath_ie[1] + 2, 
    127127                        ath_leader, sizeof(ath_leader) - 1); 
Note: See TracChangeset for help on using the changeset viewer.