summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-12-26 13:31:45 -0500
committerDavid S. Miller <davem@davemloft.net>2013-12-26 13:31:45 -0500
commit539c89cfdb0e4b58d22a8a89321f36572b299fbc (patch)
tree0c7c97774c2c5bcf092de4852da404c543d725d9 /net
parent306d7f79bb8169f73180dd1e5986eaca75ffb1d6 (diff)
parent692e5167b4487c96123c2de4c8d9577d50606112 (diff)
Merge branch 'addr_compare'
Ding Tianhong says: ==================== slight optimization of addr compare for some modules Joe Perches add ether_addr_equal_unaligned to test if possibly unaligned to u16 Ethernet addresses are equal. If CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is set, this uses the slightly faster generic routine ether_addr_equal, otherwise this uses memcmp. So I use the recently added and possibly more efficient ether_addr_equal_unaligned to instead of memcmp for slight optimization. v2: Because a lot of places are already using 16b aligned MAC address for both operands, so use the ether_addr_equal to instead of ether_addr_equal_unaligned.Thanks for Joe, Alex and Antonio's opinions. Also remove the patch for bridge. v3: According Joe's suggestion, the patch (net: slight optimization of addr compare for some modules) should be broken into several patches, and it will be good to review for maintainers. So I will send rest of the patches for first step, and next step, I will seperate the netdev patch and send them by another patchset for net-next. also fix some changelog. v3.5 Change some style for patch 8 and patch 13. Thanks for Sergei's suggestion. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/batman-adv/originator.c2
-rw-r--r--net/batman-adv/translation-table.c2
-rw-r--r--net/mac80211/iface.c7
3 files changed, 5 insertions, 6 deletions
diff --git a/net/batman-adv/originator.c b/net/batman-adv/originator.c
index 8ab14340d10f..803ab4be40c2 100644
--- a/net/batman-adv/originator.c
+++ b/net/batman-adv/originator.c
@@ -41,7 +41,7 @@ int batadv_compare_orig(const struct hlist_node *node, const void *data2)
const void *data1 = container_of(node, struct batadv_orig_node,
hash_entry);
- return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
+ return batadv_compare_eth(data1, data2);
}
/**
diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
index 4add57d4857f..06506e6f9006 100644
--- a/net/batman-adv/translation-table.c
+++ b/net/batman-adv/translation-table.c
@@ -51,7 +51,7 @@ static int batadv_compare_tt(const struct hlist_node *node, const void *data2)
const void *data1 = container_of(node, struct batadv_tt_common_entry,
hash_entry);
- return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
+ return batadv_compare_eth(data1, data2);
}
/**
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 7aa9f9dea9df..a4f98123d0bf 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -1497,8 +1497,8 @@ static void ieee80211_assign_perm_addr(struct ieee80211_local *local,
bool used = false;
list_for_each_entry(sdata, &local->interfaces, list) {
- if (memcmp(local->hw.wiphy->addresses[i].addr,
- sdata->vif.addr, ETH_ALEN) == 0) {
+ if (ether_addr_equal(local->hw.wiphy->addresses[i].addr,
+ sdata->vif.addr)) {
used = true;
break;
}
@@ -1558,8 +1558,7 @@ static void ieee80211_assign_perm_addr(struct ieee80211_local *local,
val += inc;
list_for_each_entry(sdata, &local->interfaces, list) {
- if (memcmp(tmp_addr, sdata->vif.addr,
- ETH_ALEN) == 0) {
+ if (ether_addr_equal(tmp_addr, sdata->vif.addr)) {
used = true;
break;
}