Use the newly added generic routine ether_addr_equal_unaligned to test if possibly unaligned to u16 Ethernet addresses are equal.
This slightly improves comparison time for systems with CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS.
Signed-off-by: Joe Perches joe@perches.com [antonio@meshcoding.com: added compat code for linux <3.14] Signed-off-by: Antonio Quartulli antonio@meshcoding.com --- compat.h | 6 ++++++ main.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/compat.h b/compat.h index 8545b0a..a1c8396 100644 --- a/compat.h +++ b/compat.h @@ -382,4 +382,10 @@ static int __batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\ }) #endif /* < KERNEL_VERSION(3, 11, 0) */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) + +#define ether_addr_equal_unaligned(_a, _b) (memcmp(_a, _b, ETH_ALEN) == 0) + +#endif /* < KERNEL_VERSION(3, 14, 0) */ + #endif /* _NET_BATMAN_ADV_COMPAT_H_ */ diff --git a/main.h b/main.h index 2f3ac06..d636449 100644 --- a/main.h +++ b/main.h @@ -273,7 +273,7 @@ static inline void batadv_dbg(int type __always_unused, */ static inline int batadv_compare_eth(const void *data1, const void *data2) { - return memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0; + return ether_addr_equal_unaligned(data1, data2); }
/**