Changeset 12127


Ignore:
Timestamp:
2008-08-05T09:19:07+02:00 (10 years ago)
Author:
nbd
Message:

some more fixes for wds sta separation

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

Legend:

Unmodified
Added
Removed
  • trunk/package/madwifi/patches/371-wds_sta_separation.patch

    r12082 r12127  
    6767                        break; 
    6868                case IEEE80211_M_IBSS: 
    69 @@ -548,7 +536,7 @@ 
     69@@ -541,6 +529,11 @@ 
     70                                vap->iv_stats.is_rx_notassoc++; 
     71                                goto err; 
     72                        } 
     73+ 
     74+                       /* subif isn't fully set up yet, drop the frame */ 
     75+                       if (ni->ni_subif == ni->ni_vap) 
     76+                               goto err; 
     77+ 
     78                        /* 
     79                         * If we're a 4 address packet, make sure we have an entry in 
     80                         * the node table for the packet source address (addr4). 
     81@@ -548,9 +541,16 @@ 
    7082                         */ 
    7183  
     
    7587                                struct ieee80211vap *avp; 
    7688  
     89+                               if (vap->iv_flags_ext & IEEE80211_FEXT_WDSSEP) { 
     90+                                       ieee80211_wds_addif(ni); 
     91+                                       /* we must drop frames here until the interface has 
     92+                                        * been fully separated, otherwise a bridge might get 
     93+                                        * confused */ 
     94+                                       goto err; 
     95+                               } 
    7796                                TAILQ_FOREACH(avp, &vap->iv_wdslinks, iv_wdsnext) { 
    78 @@ -562,11 +550,13 @@ 
    79                                 if (ni_wds != NULL) { 
    80                                         ieee80211_unref_node(&ni); 
    81                                         ni = ieee80211_ref_node(ni_wds); 
    82 +                               } else if (vap->iv_flags_ext & IEEE80211_FEXT_WDSSEP) { 
    83 +                                       ieee80211_wds_addif(ni); 
    84                                 } 
     97                                        if (!memcmp(avp->wds_mac, wh->i_addr2, IEEE80211_ADDR_LEN)) { 
     98                                                IEEE80211_LOCK_IRQ(ni->ni_ic); 
     99@@ -566,7 +566,7 @@ 
    85100                        } 
    86101  
     
    91106                                struct ieee80211_frame_addr4 *wh4; 
    92107  
    93 @@ -626,6 +616,11 @@ 
     108@@ -626,6 +626,11 @@ 
    94109                        goto out; 
    95110                } 
     
    103118                 * Handle privacy requirements.  Note that we 
    104119                 * must not be preempted from here until after 
    105 @@ -698,8 +693,12 @@ 
     120@@ -698,8 +703,12 @@ 
    106121                if (! accept_data_frame(vap, ni, key, skb, eh)) 
    107122                        goto out; 
     
    118133                IEEE80211_NODE_STAT_ADD(ni, rx_bytes, skb->len); 
    119134                ic->ic_lastdata = jiffies; 
    120 @@ -1132,6 +1131,13 @@ 
     135@@ -1132,6 +1141,13 @@ 
    121136                dev = vap->iv_xrvap->iv_dev; 
    122137 #endif 
     
    132147        /* XXX intra-vap bridging only */ 
    133148        if (vap->iv_opmode == IEEE80211_M_HOSTAP && 
    134 @@ -1157,6 +1163,7 @@ 
     149@@ -1157,7 +1173,15 @@ 
    135150                        if (ni1 != NULL) { 
    136151                                if (ni1->ni_vap == vap && 
    137152                                    ieee80211_node_is_authorized(ni1) && 
    138 +                                       !ni->ni_subif && 
     153+                                       !ni1->ni_subif && 
    139154                                    ni1 != vap->iv_bss) { 
     155+ 
     156+                                       /* tried to bridge to a subif, drop the packet */ 
     157+                                       if (ni->ni_subif) { 
     158+                                               ieee80211_dev_kfree_skb(&skb); 
     159+                                               return; 
     160+                                       } 
     161+ 
    140162                                        skb1 = skb; 
    141163                                        skb = NULL; 
     164                                } 
    142165--- a/net80211/ieee80211_ioctl.h 
    143166+++ b/net80211/ieee80211_ioctl.h 
     
    219242                return -EOPNOTSUPP; 
    220243        } 
    221 @@ -5767,6 +5778,10 @@ 
     244@@ -4447,6 +4458,8 @@ 
     245        struct ieee80211vap *vap = ni->ni_vap; 
     246        size_t ielen; 
     247  
     248+       if (req->vap->iv_wdsnode && ni->ni_subif) 
     249+               vap = ni->ni_subif; 
     250        if (vap != req->vap && vap != req->vap->iv_xrvap)       /* only entries for this vap */ 
     251                return; 
     252        if ((vap->iv_opmode == IEEE80211_M_HOSTAP || 
     253@@ -4466,6 +4479,8 @@ 
     254        size_t ielen, len; 
     255        u_int8_t *cp; 
     256  
     257+       if (req->vap->iv_wdsnode && ni->ni_subif) 
     258+               vap = ni->ni_subif; 
     259        if (vap != req->vap && vap != req->vap->iv_xrvap)       /* only entries for this vap (or) xrvap */ 
     260                return; 
     261        if ((vap->iv_opmode == IEEE80211_M_HOSTAP || 
     262@@ -5767,6 +5782,10 @@ 
    222263         0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_minrate"}, 
    223264        { IEEE80211_IOCTL_SETSCANLIST, 
     
    230271 #ifdef ATH_REVERSE_ENGINEERING 
    231272        /* 
    232 @@ -5890,6 +5905,8 @@ 
     273@@ -5890,6 +5909,8 @@ 
    233274 ieee80211_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 
    234275 { 
     
    239280        switch (cmd) { 
    240281        case SIOCG80211STATS: 
    241 @@ -5898,8 +5915,20 @@ 
     282@@ -5898,8 +5919,20 @@ 
    242283        case SIOC80211IFDESTROY: 
    243284                if (!capable(CAP_NET_ADMIN)) 
  • trunk/package/madwifi/patches/372-queue_vif.patch

    r12082 r12127  
    11--- a/net80211/ieee80211_input.c 
    22+++ b/net80211/ieee80211_input.c 
    3 @@ -1174,6 +1174,7 @@ 
     3@@ -1191,6 +1191,7 @@ 
    44                } 
    55                if (skb1 != NULL) { 
     
    99                        skb_reset_mac_header(skb1); 
    1010                        skb_set_network_header(skb1, sizeof(struct ether_header)); 
    11 @@ -1181,7 +1182,12 @@ 
     11@@ -1198,7 +1199,12 @@ 
    1212                        skb1->protocol = __constant_htons(ETH_P_802_2); 
    1313                        /* XXX insert vlan tag before queue it? */ 
Note: See TracChangeset for help on using the changeset viewer.