diff options
| author | David S. Miller <davem@davemloft.net> | 2013-12-26 13:31:45 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-12-26 13:31:45 -0500 |
| commit | 539c89cfdb0e4b58d22a8a89321f36572b299fbc (patch) | |
| tree | 0c7c97774c2c5bcf092de4852da404c543d725d9 /net | |
| parent | 306d7f79bb8169f73180dd1e5986eaca75ffb1d6 (diff) | |
| parent | 692e5167b4487c96123c2de4c8d9577d50606112 (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.c | 2 | ||||
| -rw-r--r-- | net/batman-adv/translation-table.c | 2 | ||||
| -rw-r--r-- | net/mac80211/iface.c | 7 |
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; } |
