[PATCH v2 20/20] wireless: slight optimization of addr compare

2013-12-24 Thread Ding Tianhong
Use possibly more efficient ether_addr_equal or
ether_addr_equal_unaligned instead of memcmp.

Cc: John W. Linville 
Cc: linux-wirel...@vger.kernel.org
Cc: net...@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Weilong Chen 
Signed-off-by: Ding Tianhong 
---
 drivers/net/wireless/adm8211.c| 2 +-
 drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 7 +++
 drivers/net/wireless/hostap/hostap_80211_rx.c | 8 
 drivers/net/wireless/prism54/isl_ioctl.c  | 3 ++-
 drivers/net/wireless/ti/wl1251/main.c | 2 +-
 drivers/net/wireless/wl3501_cs.c  | 4 ++--
 6 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/net/wireless/adm8211.c b/drivers/net/wireless/adm8211.c
index cfce83e..1d40c69 100644
--- a/drivers/net/wireless/adm8211.c
+++ b/drivers/net/wireless/adm8211.c
@@ -1314,7 +1314,7 @@ static void adm8211_bss_info_changed(struct ieee80211_hw 
*dev,
if (!(changes & BSS_CHANGED_BSSID))
return;
 
-   if (memcmp(conf->bssid, priv->bssid, ETH_ALEN)) {
+   if (!ether_addr_equal(conf->bssid, priv->bssid)) {
adm8211_set_bssid(dev, conf->bssid);
memcpy(priv->bssid, conf->bssid, ETH_ALEN);
}
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c 
b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
index d318036..185af8a 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
@@ -1243,7 +1243,7 @@ bool brcmf_p2p_scan_finding_common_channel(struct 
brcmf_cfg80211_info *cfg,
IEEE80211_P2P_ATTR_DEVICE_ID,
p2p_dev_addr, sizeof(p2p_dev_addr));
if ((err >= 0) &&
-   (!memcmp(p2p_dev_addr, afx_hdl->tx_dst_addr, ETH_ALEN))) {
+   (ether_addr_equal(p2p_dev_addr, afx_hdl->tx_dst_addr))) {
if (!bi->ctl_ch) {
ch.chspec = le16_to_cpu(bi->chanspec);
cfg->d11inf.decchspec();
@@ -1380,8 +1380,7 @@ int brcmf_p2p_notify_action_frame_rx(struct brcmf_if *ifp,
(brcmf_p2p_gon_req_collision(p2p, (u8 *)e->addr))) {
if (test_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL,
 >status) &&
-   (memcmp(afx_hdl->tx_dst_addr, e->addr,
-   ETH_ALEN) == 0)) {
+   (ether_addr_equal(afx_hdl->tx_dst_addr, e->addr))) {
afx_hdl->peer_chan = ch.chnum;
brcmf_dbg(INFO, "GON request: Peer found, 
channel=%d\n",
  afx_hdl->peer_chan);
@@ -1865,7 +1864,7 @@ s32 brcmf_p2p_notify_rx_mgmt_p2p_probereq(struct brcmf_if 
*ifp,
cfg->d11inf.decchspec();
 
if (test_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL, >status) &&
-   (memcmp(afx_hdl->tx_dst_addr, e->addr, ETH_ALEN) == 0)) {
+   (ether_addr_equal(afx_hdl->tx_dst_addr, e->addr))) {
afx_hdl->peer_chan = ch.chnum;
brcmf_dbg(INFO, "PROBE REQUEST: Peer found, channel=%d\n",
  afx_hdl->peer_chan);
diff --git a/drivers/net/wireless/hostap/hostap_80211_rx.c 
b/drivers/net/wireless/hostap/hostap_80211_rx.c
index d39e3e2..599f30f 100644
--- a/drivers/net/wireless/hostap/hostap_80211_rx.c
+++ b/drivers/net/wireless/hostap/hostap_80211_rx.c
@@ -563,7 +563,7 @@ hostap_rx_frame_wds(local_info_t *local, struct 
ieee80211_hdr *hdr, u16 fc,
 
/* Possible WDS frame: either IEEE 802.11 compliant (if FromDS)
 * or own non-standard frame with 4th address after payload */
-   if (memcmp(hdr->addr1, local->dev->dev_addr, ETH_ALEN) != 0 &&
+   if (!ether_addr_equal(hdr->addr1, local->dev->dev_addr) &&
(hdr->addr1[0] != 0xff || hdr->addr1[1] != 0xff ||
 hdr->addr1[2] != 0xff || hdr->addr1[3] != 0xff ||
 hdr->addr1[4] != 0xff || hdr->addr1[5] != 0xff)) {
@@ -622,12 +622,12 @@ static int hostap_is_eapol_frame(local_info_t *local, 
struct sk_buff *skb)
/* check that the frame is unicast frame to us */
if ((fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) ==
IEEE80211_FCTL_TODS &&
-   memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN) == 0 &&
-   memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN) == 0) {
+   ether_addr_equal(hdr->addr1, dev->dev_addr) &&
+   ether_addr_equal(hdr->addr3, dev->dev_addr)) {
/* ToDS frame with own addr BSSID and DA */
} else if ((fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) ==
   IEEE80211_FCTL_FROMDS &&
-  memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN) == 0) {
+  ether_addr_equal(hdr->addr1, dev->dev_addr)) {
/* FromDS frame with own addr as DA */
} else
return 0;
diff --git 

[PATCH v2 20/20] wireless: slight optimization of addr compare

2013-12-24 Thread Ding Tianhong
Use possibly more efficient ether_addr_equal or
ether_addr_equal_unaligned instead of memcmp.

Cc: John W. Linville linvi...@tuxdriver.com
Cc: linux-wirel...@vger.kernel.org
Cc: net...@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Weilong Chen chenweil...@huawei.com
Signed-off-by: Ding Tianhong dingtianh...@huawei.com
---
 drivers/net/wireless/adm8211.c| 2 +-
 drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 7 +++
 drivers/net/wireless/hostap/hostap_80211_rx.c | 8 
 drivers/net/wireless/prism54/isl_ioctl.c  | 3 ++-
 drivers/net/wireless/ti/wl1251/main.c | 2 +-
 drivers/net/wireless/wl3501_cs.c  | 4 ++--
 6 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/net/wireless/adm8211.c b/drivers/net/wireless/adm8211.c
index cfce83e..1d40c69 100644
--- a/drivers/net/wireless/adm8211.c
+++ b/drivers/net/wireless/adm8211.c
@@ -1314,7 +1314,7 @@ static void adm8211_bss_info_changed(struct ieee80211_hw 
*dev,
if (!(changes  BSS_CHANGED_BSSID))
return;
 
-   if (memcmp(conf-bssid, priv-bssid, ETH_ALEN)) {
+   if (!ether_addr_equal(conf-bssid, priv-bssid)) {
adm8211_set_bssid(dev, conf-bssid);
memcpy(priv-bssid, conf-bssid, ETH_ALEN);
}
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c 
b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
index d318036..185af8a 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
@@ -1243,7 +1243,7 @@ bool brcmf_p2p_scan_finding_common_channel(struct 
brcmf_cfg80211_info *cfg,
IEEE80211_P2P_ATTR_DEVICE_ID,
p2p_dev_addr, sizeof(p2p_dev_addr));
if ((err = 0) 
-   (!memcmp(p2p_dev_addr, afx_hdl-tx_dst_addr, ETH_ALEN))) {
+   (ether_addr_equal(p2p_dev_addr, afx_hdl-tx_dst_addr))) {
if (!bi-ctl_ch) {
ch.chspec = le16_to_cpu(bi-chanspec);
cfg-d11inf.decchspec(ch);
@@ -1380,8 +1380,7 @@ int brcmf_p2p_notify_action_frame_rx(struct brcmf_if *ifp,
(brcmf_p2p_gon_req_collision(p2p, (u8 *)e-addr))) {
if (test_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL,
 p2p-status) 
-   (memcmp(afx_hdl-tx_dst_addr, e-addr,
-   ETH_ALEN) == 0)) {
+   (ether_addr_equal(afx_hdl-tx_dst_addr, e-addr))) {
afx_hdl-peer_chan = ch.chnum;
brcmf_dbg(INFO, GON request: Peer found, 
channel=%d\n,
  afx_hdl-peer_chan);
@@ -1865,7 +1864,7 @@ s32 brcmf_p2p_notify_rx_mgmt_p2p_probereq(struct brcmf_if 
*ifp,
cfg-d11inf.decchspec(ch);
 
if (test_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL, p2p-status) 
-   (memcmp(afx_hdl-tx_dst_addr, e-addr, ETH_ALEN) == 0)) {
+   (ether_addr_equal(afx_hdl-tx_dst_addr, e-addr))) {
afx_hdl-peer_chan = ch.chnum;
brcmf_dbg(INFO, PROBE REQUEST: Peer found, channel=%d\n,
  afx_hdl-peer_chan);
diff --git a/drivers/net/wireless/hostap/hostap_80211_rx.c 
b/drivers/net/wireless/hostap/hostap_80211_rx.c
index d39e3e2..599f30f 100644
--- a/drivers/net/wireless/hostap/hostap_80211_rx.c
+++ b/drivers/net/wireless/hostap/hostap_80211_rx.c
@@ -563,7 +563,7 @@ hostap_rx_frame_wds(local_info_t *local, struct 
ieee80211_hdr *hdr, u16 fc,
 
/* Possible WDS frame: either IEEE 802.11 compliant (if FromDS)
 * or own non-standard frame with 4th address after payload */
-   if (memcmp(hdr-addr1, local-dev-dev_addr, ETH_ALEN) != 0 
+   if (!ether_addr_equal(hdr-addr1, local-dev-dev_addr) 
(hdr-addr1[0] != 0xff || hdr-addr1[1] != 0xff ||
 hdr-addr1[2] != 0xff || hdr-addr1[3] != 0xff ||
 hdr-addr1[4] != 0xff || hdr-addr1[5] != 0xff)) {
@@ -622,12 +622,12 @@ static int hostap_is_eapol_frame(local_info_t *local, 
struct sk_buff *skb)
/* check that the frame is unicast frame to us */
if ((fc  (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) ==
IEEE80211_FCTL_TODS 
-   memcmp(hdr-addr1, dev-dev_addr, ETH_ALEN) == 0 
-   memcmp(hdr-addr3, dev-dev_addr, ETH_ALEN) == 0) {
+   ether_addr_equal(hdr-addr1, dev-dev_addr) 
+   ether_addr_equal(hdr-addr3, dev-dev_addr)) {
/* ToDS frame with own addr BSSID and DA */
} else if ((fc  (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) ==
   IEEE80211_FCTL_FROMDS 
-  memcmp(hdr-addr1, dev-dev_addr, ETH_ALEN) == 0) {
+  ether_addr_equal(hdr-addr1, dev-dev_addr)) {
/* FromDS frame with own addr as DA */
} else
return 0;
diff --git