Message ID | 52BC15C8.2080400@huawei.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, 2013-12-26 at 19:40 +0800, Ding Tianhong wrote: > Use the possibly more efficient ether_addr_equal > to instead of memcmp. This is a slow-path, I don't think that's really worth it. It kinda makes sense, but relies on the struct mac_address allocation for alignment and the fact that there are no other members in that struct, so it seems to me that this ought to also add some alignment attributes? johannes -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2014/1/6 23:11, Johannes Berg wrote: > On Thu, 2013-12-26 at 19:40 +0800, Ding Tianhong wrote: >> Use the possibly more efficient ether_addr_equal >> to instead of memcmp. > > This is a slow-path, I don't think that's really worth it. It kinda > makes sense, but relies on the struct mac_address allocation for > alignment and the fact that there are no other members in that struct, > so it seems to me that this ought to also add some alignment attributes? > > johannes > > Yes, I had to say that it is really a slight optimization.And I am sure the address in the struct is alignment, otherwise I have to use the ether_addr_equal_unaligned(). Regards Ding > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 7aa9f9d..a4f9812 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; }