Changeset 30763


Ignore:
Timestamp:
2012-03-01T16:13:30+01:00 (6 years ago)
Author:
nbd
Message:

mac80211: optimize mac address comparisons to improve performance

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

Legend:

Unmodified
Added
Removed
  • trunk/package/mac80211/patches/300-pending_work.patch

    r30758 r30763  
    338338--- a/net/mac80211/rx.c 
    339339+++ b/net/mac80211/rx.c 
     340@@ -489,12 +489,12 @@ ieee80211_rx_mesh_check(struct ieee80211 
     341                        if (ieee80211_has_tods(hdr->frame_control) || 
     342                                !ieee80211_has_fromds(hdr->frame_control)) 
     343                                return RX_DROP_MONITOR; 
     344-                       if (memcmp(hdr->addr3, dev_addr, ETH_ALEN) == 0) 
     345+                       if (compare_ether_addr(hdr->addr3, dev_addr) == 0) 
     346                                return RX_DROP_MONITOR; 
     347                } else { 
     348                        if (!ieee80211_has_a4(hdr->frame_control)) 
     349                                return RX_DROP_MONITOR; 
     350-                       if (memcmp(hdr->addr4, dev_addr, ETH_ALEN) == 0) 
     351+                       if (compare_ether_addr(hdr->addr4, dev_addr) == 0) 
     352                                return RX_DROP_MONITOR; 
     353                } 
     354        } 
    340355@@ -2282,6 +2282,7 @@ ieee80211_rx_h_action(struct ieee80211_r 
    341356                    sdata->vif.type != NL80211_IFTYPE_MESH_POINT && 
     
    346361                        break; 
    347362  
     363@@ -2336,7 +2337,7 @@ ieee80211_rx_h_action(struct ieee80211_r 
     364                        if (sdata->vif.type != NL80211_IFTYPE_STATION) 
     365                                break; 
     366  
     367-                       if (memcmp(mgmt->bssid, sdata->u.mgd.bssid, ETH_ALEN)) 
     368+                       if (compare_ether_addr(mgmt->bssid, sdata->u.mgd.bssid)) 
     369                                break; 
     370  
     371                        goto queue; 
    348372@@ -2492,14 +2493,15 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_ 
    349373  
     
    385409--- a/net/mac80211/sta_info.c 
    386410+++ b/net/mac80211/sta_info.c 
    387 @@ -1050,7 +1050,7 @@ static void ieee80211_send_null_response 
     411@@ -9,6 +9,7 @@ 
     412  
     413 #include <linux/module.h> 
     414 #include <linux/init.h> 
     415+#include <linux/etherdevice.h> 
     416 #include <linux/netdevice.h> 
     417 #include <linux/types.h> 
     418 #include <linux/slab.h> 
     419@@ -101,7 +102,7 @@ struct sta_info *sta_info_get(struct iee 
     420                                    lockdep_is_held(&local->sta_mtx)); 
     421        while (sta) { 
     422                if (sta->sdata == sdata && 
     423-                   memcmp(sta->sta.addr, addr, ETH_ALEN) == 0) 
     424+                   compare_ether_addr(sta->sta.addr, addr) == 0) 
     425                        break; 
     426                sta = rcu_dereference_check(sta->hnext, 
     427                                            lockdep_is_held(&local->sta_mtx)); 
     428@@ -124,7 +125,7 @@ struct sta_info *sta_info_get_bss(struct 
     429        while (sta) { 
     430                if ((sta->sdata == sdata || 
     431                     (sta->sdata->bss && sta->sdata->bss == sdata->bss)) && 
     432-                   memcmp(sta->sta.addr, addr, ETH_ALEN) == 0) 
     433+                   compare_ether_addr(sta->sta.addr, addr) == 0) 
     434                        break; 
     435                sta = rcu_dereference_check(sta->hnext, 
     436                                            lockdep_is_held(&local->sta_mtx)); 
     437@@ -1050,7 +1051,7 @@ static void ieee80211_send_null_response 
    388438         * exchange. Also set EOSP to indicate this packet 
    389439         * ends the poll/service period. 
     
    394444                       IEEE80211_TX_CTL_REQ_TX_STATUS; 
    395445  
    396 @@ -1177,7 +1177,7 @@ ieee80211_sta_ps_deliver_response(struct 
     446@@ -1177,7 +1178,7 @@ ieee80211_sta_ps_deliver_response(struct 
    397447                         * STA may still remain is PS mode after this frame 
    398448                         * exchange. 
     
    405455--- a/net/mac80211/sta_info.h 
    406456+++ b/net/mac80211/sta_info.h 
    407 @@ -31,7 +31,6 @@ 
     457@@ -14,6 +14,7 @@ 
     458 #include <linux/if_ether.h> 
     459 #include <linux/workqueue.h> 
     460 #include <linux/average.h> 
     461+#include <linux/etherdevice.h> 
     462 #include "key.h" 
     463  
     464 /** 
     465@@ -31,7 +32,6 @@ 
    408466  * @WLAN_STA_SHORT_PREAMBLE: Station is capable of receiving short-preamble 
    409467  *     frames. 
     
    413471  *     IEEE80211_TX_CTL_CLEAR_PS_FILT control flag) when the next 
    414472  *     frame to this station is transmitted. 
    415 @@ -62,7 +61,6 @@ enum ieee80211_sta_info_flags { 
     473@@ -62,7 +62,6 @@ enum ieee80211_sta_info_flags { 
    416474        WLAN_STA_AUTHORIZED, 
    417475        WLAN_STA_SHORT_PREAMBLE, 
     
    421479        WLAN_STA_MFP, 
    422480        WLAN_STA_BLOCK_BA, 
     481@@ -489,7 +488,7 @@ void for_each_sta_info_type_check(struct 
     482                nxt = _sta ? rcu_dereference(_sta->hnext) : NULL        \ 
     483             )                                                          \ 
     484        /* compare address and run code only if it matches */           \ 
     485-       if (memcmp(_sta->sta.addr, (_addr), ETH_ALEN) == 0) 
     486+       if (compare_ether_addr(_sta->sta.addr, (_addr)) == 0) 
     487  
     488 /* 
     489  * Get STA info by index, BROKEN! 
    423490--- a/net/mac80211/tx.c 
    424491+++ b/net/mac80211/tx.c 
     
    464531        u8 ssid_len, ie_len; 
    465532        u8 *ie; 
     533--- a/net/mac80211/ibss.c 
     534+++ b/net/mac80211/ibss.c 
     535@@ -66,7 +66,7 @@ static void __ieee80211_sta_join_ibss(st 
     536        skb_reset_tail_pointer(skb); 
     537        skb_reserve(skb, sdata->local->hw.extra_tx_headroom); 
     538  
     539-       if (memcmp(ifibss->bssid, bssid, ETH_ALEN)) 
     540+       if (compare_ether_addr(ifibss->bssid, bssid)) 
     541                sta_info_flush(sdata->local, sdata); 
     542  
     543        /* if merging, indicate to driver that we leave the old IBSS */ 
     544@@ -403,7 +403,7 @@ static void ieee80211_rx_bss_info(struct 
     545                return; 
     546  
     547        if (sdata->vif.type == NL80211_IFTYPE_ADHOC && 
     548-           memcmp(mgmt->bssid, sdata->u.ibss.bssid, ETH_ALEN) == 0) { 
     549+           compare_ether_addr(mgmt->bssid, sdata->u.ibss.bssid) == 0) { 
     550  
     551                rcu_read_lock(); 
     552                sta = sta_info_get(sdata, mgmt->sa); 
     553@@ -508,7 +508,7 @@ static void ieee80211_rx_bss_info(struct 
     554                goto put_bss; 
     555  
     556        /* same BSSID */ 
     557-       if (memcmp(cbss->bssid, sdata->u.ibss.bssid, ETH_ALEN) == 0) 
     558+       if (compare_ether_addr(cbss->bssid, sdata->u.ibss.bssid) == 0) 
     559                goto put_bss; 
     560  
     561        if (rx_status->flag & RX_FLAG_MACTIME_MPDU) { 
     562@@ -831,8 +831,8 @@ static void ieee80211_rx_mgmt_probe_req( 
     563        if (!tx_last_beacon && is_multicast_ether_addr(mgmt->da)) 
     564                return; 
     565  
     566-       if (memcmp(mgmt->bssid, ifibss->bssid, ETH_ALEN) != 0 && 
     567-           memcmp(mgmt->bssid, "\xff\xff\xff\xff\xff\xff", ETH_ALEN) != 0) 
     568+       if (compare_ether_addr(mgmt->bssid, ifibss->bssid) != 0 && 
     569+           !is_broadcast_ether_addr(mgmt->bssid)) 
     570                return; 
     571  
     572        end = ((u8 *) mgmt) + len; 
     573--- a/net/mac80211/mesh.c 
     574+++ b/net/mac80211/mesh.c 
     575@@ -204,7 +204,7 @@ int mesh_rmc_check(u8 *sa, struct ieee80 
     576                        kmem_cache_free(rm_cache, p); 
     577                        --entries; 
     578                } else if ((seqnum == p->seqnum) && 
     579-                          (memcmp(sa, p->sa, ETH_ALEN) == 0)) 
     580+                          (compare_ether_addr(sa, p->sa) == 0)) 
     581                        return -1; 
     582        } 
     583  
     584--- a/net/mac80211/mesh_hwmp.c 
     585+++ b/net/mac80211/mesh_hwmp.c 
     586@@ -8,6 +8,7 @@ 
     587  */ 
     588  
     589 #include <linux/slab.h> 
     590+#include <linux/etherdevice.h> 
     591 #include <asm/unaligned.h> 
     592 #include "wme.h" 
     593 #include "mesh.h" 
     594@@ -419,7 +420,7 @@ static u32 hwmp_route_info_get(struct ie 
     595                new_metric = MAX_METRIC; 
     596        exp_time = TU_TO_EXP_TIME(orig_lifetime); 
     597  
     598-       if (memcmp(orig_addr, sdata->vif.addr, ETH_ALEN) == 0) { 
     599+       if (compare_ether_addr(orig_addr, sdata->vif.addr) == 0) { 
     600                /* This MP is the originator, we are not interested in this 
     601                 * frame, except for updating transmitter's path info. 
     602                 */ 
     603@@ -469,7 +470,7 @@ static u32 hwmp_route_info_get(struct ie 
     604  
     605        /* Update and check transmitter routing info */ 
     606        ta = mgmt->sa; 
     607-       if (memcmp(orig_addr, ta, ETH_ALEN) == 0) 
     608+       if (compare_ether_addr(orig_addr, ta) == 0) 
     609                fresh_info = false; 
     610        else { 
     611                fresh_info = true; 
     612@@ -529,7 +530,7 @@ static void hwmp_preq_frame_process(stru 
     613  
     614        mhwmp_dbg("received PREQ from %pM", orig_addr); 
     615  
     616-       if (memcmp(target_addr, sdata->vif.addr, ETH_ALEN) == 0) { 
     617+       if (compare_ether_addr(target_addr, sdata->vif.addr) == 0) { 
     618                mhwmp_dbg("PREQ is for us"); 
     619                forward = false; 
     620                reply = true; 
     621@@ -624,7 +625,7 @@ static void hwmp_prep_frame_process(stru 
     622        mhwmp_dbg("received PREP from %pM", PREP_IE_ORIG_ADDR(prep_elem)); 
     623  
     624        orig_addr = PREP_IE_ORIG_ADDR(prep_elem); 
     625-       if (memcmp(orig_addr, sdata->vif.addr, ETH_ALEN) == 0) 
     626+       if (compare_ether_addr(orig_addr, sdata->vif.addr) == 0) 
     627                /* destination, no forwarding required */ 
     628                return; 
     629  
     630@@ -694,10 +695,12 @@ static void hwmp_perr_frame_process(stru 
     631        rcu_read_lock(); 
     632        mpath = mesh_path_lookup(target_addr, sdata); 
     633        if (mpath) { 
     634+               struct sta_info *sta; 
     635+ 
     636                spin_lock_bh(&mpath->state_lock); 
     637+               sta = next_hop_deref_protected(mpath); 
     638                if (mpath->flags & MESH_PATH_ACTIVE && 
     639-                   memcmp(ta, next_hop_deref_protected(mpath)->sta.addr, 
     640-                                                       ETH_ALEN) == 0 && 
     641+                   compare_ether_addr(ta, sta->sta.addr) == 0 && 
     642                    (!(mpath->flags & MESH_PATH_SN_VALID) || 
     643                    SN_GT(target_sn, mpath->sn))) { 
     644                        mpath->flags &= ~MESH_PATH_ACTIVE; 
     645@@ -739,7 +742,7 @@ static void hwmp_rann_frame_process(stru 
     646        metric = rann->rann_metric; 
     647  
     648        /*  Ignore our own RANNs */ 
     649-       if (memcmp(orig_addr, sdata->vif.addr, ETH_ALEN) == 0) 
     650+       if (compare_ether_addr(orig_addr, sdata->vif.addr) == 0) 
     651                return; 
     652  
     653        mhwmp_dbg("received RANN from %pM (is_gate=%d)", orig_addr, 
     654@@ -1064,7 +1067,7 @@ int mesh_nexthop_lookup(struct sk_buff * 
     655        if (time_after(jiffies, 
     656                       mpath->exp_time - 
     657                       msecs_to_jiffies(sdata->u.mesh.mshcfg.path_refresh_time)) && 
     658-           !memcmp(sdata->vif.addr, hdr->addr4, ETH_ALEN) && 
     659+           !compare_ether_addr(sdata->vif.addr, hdr->addr4) && 
     660            !(mpath->flags & MESH_PATH_RESOLVING) && 
     661            !(mpath->flags & MESH_PATH_FIXED)) 
     662                mesh_queue_preq(mpath, PREQ_Q_F_START | PREQ_Q_F_REFRESH); 
     663--- a/net/mac80211/mesh_pathtbl.c 
     664+++ b/net/mac80211/mesh_pathtbl.c 
     665@@ -350,7 +350,7 @@ static struct mesh_path *mpath_lookup(st 
     666        hlist_for_each_entry_rcu(node, n, bucket, list) { 
     667                mpath = node->mpath; 
     668                if (mpath->sdata == sdata && 
     669-                               memcmp(dst, mpath->dst, ETH_ALEN) == 0) { 
     670+                               compare_ether_addr(dst, mpath->dst) == 0) { 
     671                        if (MPATH_EXPIRED(mpath)) { 
     672                                spin_lock_bh(&mpath->state_lock); 
     673                                mpath->flags &= ~MESH_PATH_ACTIVE; 
     674@@ -525,7 +525,7 @@ int mesh_path_add(u8 *dst, struct ieee80 
     675        int err = 0; 
     676        u32 hash_idx; 
     677  
     678-       if (memcmp(dst, sdata->vif.addr, ETH_ALEN) == 0) 
     679+       if (compare_ether_addr(dst, sdata->vif.addr) == 0) 
     680                /* never add ourselves as neighbours */ 
     681                return -ENOTSUPP; 
     682  
     683@@ -566,7 +566,8 @@ int mesh_path_add(u8 *dst, struct ieee80 
     684        err = -EEXIST; 
     685        hlist_for_each_entry(node, n, bucket, list) { 
     686                mpath = node->mpath; 
     687-               if (mpath->sdata == sdata && memcmp(dst, mpath->dst, ETH_ALEN) == 0) 
     688+               if (mpath->sdata == sdata && 
     689+                   compare_ether_addr(dst, mpath->dst) == 0) 
     690                        goto err_exists; 
     691        } 
     692  
     693@@ -657,7 +658,7 @@ int mpp_path_add(u8 *dst, u8 *mpp, struc 
     694        int err = 0; 
     695        u32 hash_idx; 
     696  
     697-       if (memcmp(dst, sdata->vif.addr, ETH_ALEN) == 0) 
     698+       if (compare_ether_addr(dst, sdata->vif.addr) == 0) 
     699                /* never add ourselves as neighbours */ 
     700                return -ENOTSUPP; 
     701  
     702@@ -694,7 +695,8 @@ int mpp_path_add(u8 *dst, u8 *mpp, struc 
     703        err = -EEXIST; 
     704        hlist_for_each_entry(node, n, bucket, list) { 
     705                mpath = node->mpath; 
     706-               if (mpath->sdata == sdata && memcmp(dst, mpath->dst, ETH_ALEN) == 0) 
     707+               if (mpath->sdata == sdata && 
     708+                   compare_ether_addr(dst, mpath->dst) == 0) 
     709                        goto err_exists; 
     710        } 
     711  
     712@@ -887,7 +889,7 @@ int mesh_path_del(u8 *addr, struct ieee8 
     713        hlist_for_each_entry(node, n, bucket, list) { 
     714                mpath = node->mpath; 
     715                if (mpath->sdata == sdata && 
     716-                   memcmp(addr, mpath->dst, ETH_ALEN) == 0) { 
     717+                   compare_ether_addr(addr, mpath->dst) == 0) { 
     718                        __mesh_path_del(tbl, node); 
     719                        goto enddel; 
     720                } 
     721--- a/net/mac80211/mlme.c 
     722+++ b/net/mac80211/mlme.c 
     723@@ -1812,7 +1812,7 @@ ieee80211_rx_mgmt_auth(struct ieee80211_ 
     724  
     725        memcpy(bssid, ifmgd->auth_data->bss->bssid, ETH_ALEN); 
     726  
     727-       if (memcmp(bssid, mgmt->bssid, ETH_ALEN)) 
     728+       if (compare_ether_addr(bssid, mgmt->bssid)) 
     729                return RX_MGMT_NONE; 
     730  
     731        auth_alg = le16_to_cpu(mgmt->u.auth.auth_alg); 
     732@@ -1893,7 +1893,7 @@ ieee80211_rx_mgmt_deauth(struct ieee8021 
     733                return RX_MGMT_NONE; 
     734  
     735        if (!ifmgd->associated || 
     736-           memcmp(mgmt->bssid, ifmgd->associated->bssid, ETH_ALEN)) 
     737+           compare_ether_addr(mgmt->bssid, ifmgd->associated->bssid)) 
     738                return RX_MGMT_NONE; 
     739  
     740        bssid = ifmgd->associated->bssid; 
     741@@ -1925,7 +1925,7 @@ ieee80211_rx_mgmt_disassoc(struct ieee80 
     742                return RX_MGMT_NONE; 
     743  
     744        if (!ifmgd->associated || 
     745-           memcmp(mgmt->bssid, ifmgd->associated->bssid, ETH_ALEN)) 
     746+           compare_ether_addr(mgmt->bssid, ifmgd->associated->bssid)) 
     747                return RX_MGMT_NONE; 
     748  
     749        reason_code = le16_to_cpu(mgmt->u.disassoc.reason_code); 
     750@@ -2190,7 +2190,7 @@ ieee80211_rx_mgmt_assoc_resp(struct ieee 
     751  
     752        if (!assoc_data) 
     753                return RX_MGMT_NONE; 
     754-       if (memcmp(assoc_data->bss->bssid, mgmt->bssid, ETH_ALEN)) 
     755+       if (compare_ether_addr(assoc_data->bss->bssid, mgmt->bssid)) 
     756                return RX_MGMT_NONE; 
     757  
     758        /* 
     759@@ -2278,8 +2278,8 @@ static void ieee80211_rx_bss_info(struct 
     760        bool need_ps = false; 
     761  
     762        if (sdata->u.mgd.associated && 
     763-           memcmp(mgmt->bssid, sdata->u.mgd.associated->bssid, 
     764-                  ETH_ALEN) == 0) { 
     765+           compare_ether_addr(mgmt->bssid, sdata->u.mgd.associated->bssid) 
     766+           == 0) { 
     767                bss = (void *)sdata->u.mgd.associated->priv; 
     768                /* not previously set so we may need to recalc */ 
     769                need_ps = !bss->dtim_period; 
     770@@ -2334,7 +2334,7 @@ static void ieee80211_rx_mgmt_probe_resp 
     771  
     772        ASSERT_MGD_MTX(ifmgd); 
     773  
     774-       if (memcmp(mgmt->da, sdata->vif.addr, ETH_ALEN)) 
     775+       if (compare_ether_addr(mgmt->da, sdata->vif.addr)) 
     776                return; /* ignore ProbeResp to foreign address */ 
     777  
     778        baselen = (u8 *) mgmt->u.probe_resp.variable - (u8 *) mgmt; 
     779@@ -2347,11 +2347,12 @@ static void ieee80211_rx_mgmt_probe_resp 
     780        ieee80211_rx_bss_info(sdata, mgmt, len, rx_status, &elems, false); 
     781  
     782        if (ifmgd->associated && 
     783-           memcmp(mgmt->bssid, ifmgd->associated->bssid, ETH_ALEN) == 0) 
     784+           compare_ether_addr(mgmt->bssid, ifmgd->associated->bssid) == 0) 
     785                ieee80211_reset_ap_probe(sdata); 
     786  
     787        if (ifmgd->auth_data && !ifmgd->auth_data->bss->proberesp_ies && 
     788-           memcmp(mgmt->bssid, ifmgd->auth_data->bss->bssid, ETH_ALEN) == 0) { 
     789+           compare_ether_addr(mgmt->bssid, ifmgd->auth_data->bss->bssid) 
     790+           == 0) { 
     791                /* got probe response, continue with auth */ 
     792                printk(KERN_DEBUG "%s: direct probe responded\n", sdata->name); 
     793                ifmgd->auth_data->tries = 0; 
     794@@ -2408,7 +2409,8 @@ static void ieee80211_rx_mgmt_beacon(str 
     795                return; 
     796  
     797        if (ifmgd->assoc_data && !ifmgd->assoc_data->have_beacon && 
     798-           memcmp(mgmt->bssid, ifmgd->assoc_data->bss->bssid, ETH_ALEN) == 0) { 
     799+           compare_ether_addr(mgmt->bssid, ifmgd->assoc_data->bss->bssid) 
     800+           == 0) { 
     801                ieee802_11_parse_elems(mgmt->u.beacon.variable, 
     802                                       len - baselen, &elems); 
     803  
     804@@ -2423,7 +2425,7 @@ static void ieee80211_rx_mgmt_beacon(str 
     805        } 
     806  
     807        if (!ifmgd->associated || 
     808-           memcmp(mgmt->bssid, ifmgd->associated->bssid, ETH_ALEN)) 
     809+           compare_ether_addr(mgmt->bssid, ifmgd->associated->bssid)) 
     810                return; 
     811        bssid = ifmgd->associated->bssid; 
     812  
     813@@ -3285,7 +3287,7 @@ int ieee80211_mgd_assoc(struct ieee80211 
     814                bool match; 
     815  
     816                /* keep sta info, bssid if matching */ 
     817-               match = memcmp(ifmgd->bssid, req->bss->bssid, ETH_ALEN) == 0; 
     818+               match = compare_ether_addr(ifmgd->bssid, req->bss->bssid) == 0; 
     819                ieee80211_destroy_auth_data(sdata, match); 
     820        } 
     821  
     822@@ -3407,7 +3409,7 @@ int ieee80211_mgd_assoc(struct ieee80211 
     823                        goto err_clear; 
     824                } 
     825        } else 
     826-               WARN_ON_ONCE(memcmp(ifmgd->bssid, req->bss->bssid, ETH_ALEN)); 
     827+               WARN_ON_ONCE(compare_ether_addr(ifmgd->bssid, req->bss->bssid)); 
     828  
     829        if (!bss->dtim_period && 
     830            sdata->local->hw.flags & IEEE80211_HW_NEED_DTIM_PERIOD) { 
     831@@ -3448,7 +3450,7 @@ int ieee80211_mgd_deauth(struct ieee8021 
     832        mutex_lock(&ifmgd->mtx); 
     833  
     834        if (ifmgd->associated && 
     835-           memcmp(ifmgd->associated->bssid, req->bssid, ETH_ALEN) == 0) { 
     836+           compare_ether_addr(ifmgd->associated->bssid, req->bssid) == 0) { 
     837                ieee80211_set_disassoc(sdata, false, true); 
     838                assoc_bss = true; 
     839        } else if (ifmgd->auth_data) { 
     840--- a/net/mac80211/status.c 
     841+++ b/net/mac80211/status.c 
     842@@ -10,6 +10,7 @@ 
     843  */ 
     844  
     845 #include <linux/export.h> 
     846+#include <linux/etherdevice.h> 
     847 #include <net/mac80211.h> 
     848 #include <asm/unaligned.h> 
     849 #include "ieee80211_i.h" 
     850@@ -377,7 +378,7 @@ void ieee80211_tx_status(struct ieee8021 
     851  
     852        for_each_sta_info(local, hdr->addr1, sta, tmp) { 
     853                /* skip wrong virtual interface */ 
     854-               if (memcmp(hdr->addr2, sta->sdata->vif.addr, ETH_ALEN)) 
     855+               if (compare_ether_addr(hdr->addr2, sta->sdata->vif.addr)) 
     856                        continue; 
     857  
     858                if (info->flags & IEEE80211_TX_STATUS_EOSP) 
     859--- a/net/wireless/mlme.c 
     860+++ b/net/wireless/mlme.c 
     861@@ -6,6 +6,7 @@ 
     862  
     863 #include <linux/kernel.h> 
     864 #include <linux/module.h> 
     865+#include <linux/etherdevice.h> 
     866 #include <linux/netdevice.h> 
     867 #include <linux/nl80211.h> 
     868 #include <linux/slab.h> 
     869@@ -100,7 +101,7 @@ void __cfg80211_send_deauth(struct net_d 
     870        ASSERT_WDEV_LOCK(wdev); 
     871  
     872        if (wdev->current_bss && 
     873-           memcmp(wdev->current_bss->pub.bssid, bssid, ETH_ALEN) == 0) { 
     874+           compare_ether_addr(wdev->current_bss->pub.bssid, bssid) == 0) { 
     875                cfg80211_unhold_bss(wdev->current_bss); 
     876                cfg80211_put_bss(&wdev->current_bss->pub); 
     877                wdev->current_bss = NULL; 
     878@@ -115,7 +116,7 @@ void __cfg80211_send_deauth(struct net_d 
     879  
     880                reason_code = le16_to_cpu(mgmt->u.deauth.reason_code); 
     881  
     882-               from_ap = memcmp(mgmt->sa, dev->dev_addr, ETH_ALEN) != 0; 
     883+               from_ap = compare_ether_addr(mgmt->sa, dev->dev_addr) != 0; 
     884                __cfg80211_disconnected(dev, NULL, 0, reason_code, from_ap); 
     885        } else if (wdev->sme_state == CFG80211_SME_CONNECTING) { 
     886                __cfg80211_connect_result(dev, mgmt->bssid, NULL, 0, NULL, 0, 
     887@@ -154,7 +155,7 @@ void __cfg80211_send_disassoc(struct net 
     888                return; 
     889  
     890        if (wdev->current_bss && 
     891-           memcmp(wdev->current_bss->pub.bssid, bssid, ETH_ALEN) == 0) { 
     892+           compare_ether_addr(wdev->current_bss->pub.bssid, bssid) == 0) { 
     893                cfg80211_sme_disassoc(dev, wdev->current_bss); 
     894                cfg80211_unhold_bss(wdev->current_bss); 
     895                cfg80211_put_bss(&wdev->current_bss->pub); 
     896@@ -165,7 +166,7 @@ void __cfg80211_send_disassoc(struct net 
     897  
     898        reason_code = le16_to_cpu(mgmt->u.disassoc.reason_code); 
     899  
     900-       from_ap = memcmp(mgmt->sa, dev->dev_addr, ETH_ALEN) != 0; 
     901+       from_ap = compare_ether_addr(mgmt->sa, dev->dev_addr) != 0; 
     902        __cfg80211_disconnected(dev, NULL, 0, reason_code, from_ap); 
     903 } 
     904 EXPORT_SYMBOL(__cfg80211_send_disassoc); 
     905@@ -285,7 +286,7 @@ int __cfg80211_mlme_auth(struct cfg80211 
     906                        return -EINVAL; 
     907  
     908        if (wdev->current_bss && 
     909-           memcmp(bssid, wdev->current_bss->pub.bssid, ETH_ALEN) == 0) 
     910+           compare_ether_addr(bssid, wdev->current_bss->pub.bssid) == 0) 
     911                return -EALREADY; 
     912  
     913        memset(&req, 0, sizeof(req)); 
     914@@ -362,7 +363,7 @@ int __cfg80211_mlme_assoc(struct cfg8021 
     915        memset(&req, 0, sizeof(req)); 
     916  
     917        if (wdev->current_bss && prev_bssid && 
     918-           memcmp(wdev->current_bss->pub.bssid, prev_bssid, ETH_ALEN) == 0) { 
     919+           compare_ether_addr(wdev->current_bss->pub.bssid, prev_bssid) == 0) { 
     920                /* 
     921                 * Trying to reassociate: Allow this to proceed and let the old 
     922                 * association to be dropped when the new one is completed. 
     923@@ -446,7 +447,8 @@ int __cfg80211_mlme_deauth(struct cfg802 
     924  
     925        if (local_state_change) { 
     926                if (wdev->current_bss && 
     927-                   memcmp(wdev->current_bss->pub.bssid, bssid, ETH_ALEN) == 0) { 
     928+                   compare_ether_addr(wdev->current_bss->pub.bssid, bssid) 
     929+                   == 0) { 
     930                        cfg80211_unhold_bss(wdev->current_bss); 
     931                        cfg80211_put_bss(&wdev->current_bss->pub); 
     932                        wdev->current_bss = NULL; 
     933@@ -495,7 +497,7 @@ static int __cfg80211_mlme_disassoc(stru 
     934        req.local_state_change = local_state_change; 
     935        req.ie = ie; 
     936        req.ie_len = ie_len; 
     937-       if (memcmp(wdev->current_bss->pub.bssid, bssid, ETH_ALEN) == 0) 
     938+       if (compare_ether_addr(wdev->current_bss->pub.bssid, bssid) == 0) 
     939                req.bss = &wdev->current_bss->pub; 
     940        else 
     941                return -ENOTCONN; 
     942@@ -758,8 +760,8 @@ int cfg80211_mlme_mgmt_tx(struct cfg8021 
     943                                break; 
     944                        } 
     945  
     946-                       if (memcmp(wdev->current_bss->pub.bssid, 
     947-                                  mgmt->bssid, ETH_ALEN)) { 
     948+                       if (compare_ether_addr(wdev->current_bss->pub.bssid, 
     949+                                              mgmt->bssid)) { 
     950                                err = -ENOTCONN; 
     951                                break; 
     952                        } 
     953@@ -772,8 +774,8 @@ int cfg80211_mlme_mgmt_tx(struct cfg8021 
     954                                break; 
     955  
     956                        /* for station, check that DA is the AP */ 
     957-                       if (memcmp(wdev->current_bss->pub.bssid, 
     958-                                  mgmt->da, ETH_ALEN)) { 
     959+                       if (compare_ether_addr(wdev->current_bss->pub.bssid, 
     960+                                              mgmt->da)) { 
     961                                err = -ENOTCONN; 
     962                                break; 
     963                        } 
     964@@ -781,11 +783,11 @@ int cfg80211_mlme_mgmt_tx(struct cfg8021 
     965                case NL80211_IFTYPE_AP: 
     966                case NL80211_IFTYPE_P2P_GO: 
     967                case NL80211_IFTYPE_AP_VLAN: 
     968-                       if (memcmp(mgmt->bssid, dev->dev_addr, ETH_ALEN)) 
     969+                       if (compare_ether_addr(mgmt->bssid, dev->dev_addr)) 
     970                                err = -EINVAL; 
     971                        break; 
     972                case NL80211_IFTYPE_MESH_POINT: 
     973-                       if (memcmp(mgmt->sa, mgmt->bssid, ETH_ALEN)) { 
     974+                       if (compare_ether_addr(mgmt->sa, mgmt->bssid)) { 
     975                                err = -EINVAL; 
     976                                break; 
     977                        } 
     978@@ -804,7 +806,7 @@ int cfg80211_mlme_mgmt_tx(struct cfg8021 
     979                        return err; 
     980        } 
     981  
     982-       if (memcmp(mgmt->sa, dev->dev_addr, ETH_ALEN) != 0) 
     983+       if (compare_ether_addr(mgmt->sa, dev->dev_addr) != 0) 
     984                return -EINVAL; 
     985  
     986        /* Transmit the Action frame as requested by user space */ 
     987--- a/net/wireless/scan.c 
     988+++ b/net/wireless/scan.c 
     989@@ -378,7 +378,7 @@ static int cmp_bss_core(struct cfg80211_ 
     990                               b->len_information_elements); 
     991        } 
     992  
     993-       return memcmp(a->bssid, b->bssid, ETH_ALEN); 
     994+       return compare_ether_addr(a->bssid, b->bssid); 
     995 } 
     996  
     997 static int cmp_bss(struct cfg80211_bss *a, 
  • trunk/package/mac80211/patches/551-ath9k_per_chain_signal_strength.patch

    r30746 r30763  
    2424--- a/net/mac80211/sta_info.h 
    2525+++ b/net/mac80211/sta_info.h 
    26 @@ -312,6 +312,11 @@ struct sta_info { 
     26@@ -313,6 +313,11 @@ struct sta_info { 
    2727        unsigned long rx_dropped; 
    2828        int last_signal; 
     
    6868--- a/net/mac80211/sta_info.c 
    6969+++ b/net/mac80211/sta_info.c 
    70 @@ -255,6 +255,8 @@ struct sta_info *sta_info_alloc(struct i 
     70@@ -256,6 +256,8 @@ struct sta_info *sta_info_alloc(struct i 
    7171        do_posix_clock_monotonic_gettime(&uptime); 
    7272        sta->last_connected = uptime.tv_sec; 
Note: See TracChangeset for help on using the changeset viewer.