aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/hostap/hostap_ap.c
diff options
context:
space:
mode:
authordingtianhong <dingtianhong@huawei.com>2013-12-26 06:41:15 -0500
committerDavid S. Miller <davem@davemloft.net>2013-12-26 13:31:35 -0500
commitd22fbd70c2770b5e3ba0d7bc5b29f6ee686cdba4 (patch)
tree5ae7fe8532ab5d1739b99f7046f6d4907294fd8c /drivers/net/wireless/hostap/hostap_ap.c
parent5e231c2c5aeda0763c0b6e1337ca7bb61a887af8 (diff)
hostap: slight optimization of addr compare
Use possibly more efficient ether_addr_equal instead of memcmp. Cc: Jouni Malinen <j@w1.fi> Cc: John W. Linville <linville@tuxdriver.com> Cc: linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Weilong Chen <chenweilong@huawei.com> Signed-off-by: Ding Tianhong <dingtianhong@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/hostap/hostap_ap.c')
-rw-r--r--drivers/net/wireless/hostap/hostap_ap.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/drivers/net/wireless/hostap/hostap_ap.c b/drivers/net/wireless/hostap/hostap_ap.c
index d6033a8e5dea..d36e252d2ccb 100644
--- a/drivers/net/wireless/hostap/hostap_ap.c
+++ b/drivers/net/wireless/hostap/hostap_ap.c
@@ -24,6 +24,7 @@
24#include <linux/slab.h> 24#include <linux/slab.h>
25#include <linux/export.h> 25#include <linux/export.h>
26#include <linux/moduleparam.h> 26#include <linux/moduleparam.h>
27#include <linux/etherdevice.h>
27 28
28#include "hostap_wlan.h" 29#include "hostap_wlan.h"
29#include "hostap.h" 30#include "hostap.h"
@@ -106,13 +107,12 @@ static void ap_sta_hash_del(struct ap_data *ap, struct sta_info *sta)
106 107
107 s = ap->sta_hash[STA_HASH(sta->addr)]; 108 s = ap->sta_hash[STA_HASH(sta->addr)];
108 if (s == NULL) return; 109 if (s == NULL) return;
109 if (memcmp(s->addr, sta->addr, ETH_ALEN) == 0) { 110 if (ether_addr_equal(s->addr, sta->addr)) {
110 ap->sta_hash[STA_HASH(sta->addr)] = s->hnext; 111 ap->sta_hash[STA_HASH(sta->addr)] = s->hnext;
111 return; 112 return;
112 } 113 }
113 114
114 while (s->hnext != NULL && memcmp(s->hnext->addr, sta->addr, ETH_ALEN) 115 while (s->hnext != NULL && !ether_addr_equal(s->hnext->addr, sta->addr))
115 != 0)
116 s = s->hnext; 116 s = s->hnext;
117 if (s->hnext != NULL) 117 if (s->hnext != NULL)
118 s->hnext = s->hnext->hnext; 118 s->hnext = s->hnext->hnext;
@@ -435,7 +435,7 @@ int ap_control_del_mac(struct mac_restrictions *mac_restrictions, u8 *mac)
435 ptr != &mac_restrictions->mac_list; ptr = ptr->next) { 435 ptr != &mac_restrictions->mac_list; ptr = ptr->next) {
436 entry = list_entry(ptr, struct mac_entry, list); 436 entry = list_entry(ptr, struct mac_entry, list);
437 437
438 if (memcmp(entry->addr, mac, ETH_ALEN) == 0) { 438 if (ether_addr_equal(entry->addr, mac)) {
439 list_del(ptr); 439 list_del(ptr);
440 kfree(entry); 440 kfree(entry);
441 mac_restrictions->entries--; 441 mac_restrictions->entries--;
@@ -459,7 +459,7 @@ static int ap_control_mac_deny(struct mac_restrictions *mac_restrictions,
459 459
460 spin_lock_bh(&mac_restrictions->lock); 460 spin_lock_bh(&mac_restrictions->lock);
461 list_for_each_entry(entry, &mac_restrictions->mac_list, list) { 461 list_for_each_entry(entry, &mac_restrictions->mac_list, list) {
462 if (memcmp(entry->addr, mac, ETH_ALEN) == 0) { 462 if (ether_addr_equal(entry->addr, mac)) {
463 found = 1; 463 found = 1;
464 break; 464 break;
465 } 465 }
@@ -957,7 +957,7 @@ static struct sta_info* ap_get_sta(struct ap_data *ap, u8 *sta)
957 struct sta_info *s; 957 struct sta_info *s;
958 958
959 s = ap->sta_hash[STA_HASH(sta)]; 959 s = ap->sta_hash[STA_HASH(sta)];
960 while (s != NULL && memcmp(s->addr, sta, ETH_ALEN) != 0) 960 while (s != NULL && !ether_addr_equal(s->addr, sta))
961 s = s->hnext; 961 s = s->hnext;
962 return s; 962 return s;
963} 963}
@@ -1391,7 +1391,7 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb,
1391 status_code = __le16_to_cpu(*pos); 1391 status_code = __le16_to_cpu(*pos);
1392 pos++; 1392 pos++;
1393 1393
1394 if (memcmp(dev->dev_addr, hdr->addr2, ETH_ALEN) == 0 || 1394 if (ether_addr_equal(dev->dev_addr, hdr->addr2) ||
1395 ap_control_mac_deny(&ap->mac_restrictions, hdr->addr2)) { 1395 ap_control_mac_deny(&ap->mac_restrictions, hdr->addr2)) {
1396 txt = "authentication denied"; 1396 txt = "authentication denied";
1397 resp = WLAN_STATUS_UNSPECIFIED_FAILURE; 1397 resp = WLAN_STATUS_UNSPECIFIED_FAILURE;
@@ -1935,7 +1935,7 @@ static void handle_pspoll(local_info_t *local,
1935 PDEBUG(DEBUG_PS2, "handle_pspoll: BSSID=%pM, TA=%pM PWRMGT=%d\n", 1935 PDEBUG(DEBUG_PS2, "handle_pspoll: BSSID=%pM, TA=%pM PWRMGT=%d\n",
1936 hdr->addr1, hdr->addr2, !!ieee80211_has_pm(hdr->frame_control)); 1936 hdr->addr1, hdr->addr2, !!ieee80211_has_pm(hdr->frame_control));
1937 1937
1938 if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { 1938 if (!ether_addr_equal(hdr->addr1, dev->dev_addr)) {
1939 PDEBUG(DEBUG_AP, 1939 PDEBUG(DEBUG_AP,
1940 "handle_pspoll - addr1(BSSID)=%pM not own MAC\n", 1940 "handle_pspoll - addr1(BSSID)=%pM not own MAC\n",
1941 hdr->addr1); 1941 hdr->addr1);
@@ -2230,7 +2230,7 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb,
2230 goto done; 2230 goto done;
2231 } 2231 }
2232 2232
2233 if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { 2233 if (!ether_addr_equal(hdr->addr1, dev->dev_addr)) {
2234 PDEBUG(DEBUG_AP, "handle_ap_item - addr1(BSSID)=%pM" 2234 PDEBUG(DEBUG_AP, "handle_ap_item - addr1(BSSID)=%pM"
2235 " not own MAC\n", hdr->addr1); 2235 " not own MAC\n", hdr->addr1);
2236 goto done; 2236 goto done;
@@ -2267,13 +2267,13 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb,
2267 goto done; 2267 goto done;
2268 } 2268 }
2269 2269
2270 if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { 2270 if (!ether_addr_equal(hdr->addr1, dev->dev_addr)) {
2271 PDEBUG(DEBUG_AP, "handle_ap_item - addr1(DA)=%pM" 2271 PDEBUG(DEBUG_AP, "handle_ap_item - addr1(DA)=%pM"
2272 " not own MAC\n", hdr->addr1); 2272 " not own MAC\n", hdr->addr1);
2273 goto done; 2273 goto done;
2274 } 2274 }
2275 2275
2276 if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN)) { 2276 if (!ether_addr_equal(hdr->addr3, dev->dev_addr)) {
2277 PDEBUG(DEBUG_AP, "handle_ap_item - addr3(BSSID)=%pM" 2277 PDEBUG(DEBUG_AP, "handle_ap_item - addr3(BSSID)=%pM"
2278 " not own MAC\n", hdr->addr3); 2278 " not own MAC\n", hdr->addr3);
2279 goto done; 2279 goto done;
@@ -3035,7 +3035,7 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
3035 if (!wds) { 3035 if (!wds) {
3036 /* FromDS frame - not for us; probably 3036 /* FromDS frame - not for us; probably
3037 * broadcast/multicast in another BSS - drop */ 3037 * broadcast/multicast in another BSS - drop */
3038 if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN) == 0) { 3038 if (ether_addr_equal(hdr->addr1, dev->dev_addr)) {
3039 printk(KERN_DEBUG "Odd.. FromDS packet " 3039 printk(KERN_DEBUG "Odd.. FromDS packet "
3040 "received with own BSSID\n"); 3040 "received with own BSSID\n");
3041 hostap_dump_rx_80211(dev->name, skb, rx_stats); 3041 hostap_dump_rx_80211(dev->name, skb, rx_stats);
@@ -3044,7 +3044,7 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
3044 goto out; 3044 goto out;
3045 } 3045 }
3046 } else if (stype == IEEE80211_STYPE_NULLFUNC && sta == NULL && 3046 } else if (stype == IEEE80211_STYPE_NULLFUNC && sta == NULL &&
3047 memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN) == 0) { 3047 ether_addr_equal(hdr->addr1, dev->dev_addr)) {
3048 3048
3049 if (local->hostapd) { 3049 if (local->hostapd) {
3050 prism2_rx_80211(local->apdev, skb, rx_stats, 3050 prism2_rx_80211(local->apdev, skb, rx_stats,
@@ -3073,7 +3073,7 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
3073 /* If BSSID (Addr3) is foreign, this frame is a normal 3073 /* If BSSID (Addr3) is foreign, this frame is a normal
3074 * broadcast frame from an IBSS network. Drop it silently. 3074 * broadcast frame from an IBSS network. Drop it silently.
3075 * If BSSID is own, report the dropping of this frame. */ 3075 * If BSSID is own, report the dropping of this frame. */
3076 if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN) == 0) { 3076 if (ether_addr_equal(hdr->addr3, dev->dev_addr)) {
3077 printk(KERN_DEBUG "%s: dropped received packet from %pM" 3077 printk(KERN_DEBUG "%s: dropped received packet from %pM"
3078 " with no ToDS flag " 3078 " with no ToDS flag "
3079 "(type=0x%02x, subtype=0x%02x)\n", dev->name, 3079 "(type=0x%02x, subtype=0x%02x)\n", dev->name,