backports: add ether_addr_equal_unaligned()
authorHauke Mehrtens <hauke@hauke-m.de>
Sat, 18 Jan 2014 16:11:10 +0000 (17:11 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 18 Jan 2014 19:54:22 +0000 (20:54 +0100)
ether_addr_equal_unaligned() is used by some drivers.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
backport/backport-include/linux/etherdevice.h

index cf02852229e77542498bcbc7b33f2aee678726ad..cf1e31f6ba26d02104c943043caa4b7d1a1033f9 100644 (file)
@@ -190,4 +190,24 @@ static inline bool ether_addr_equal_64bits(const u8 addr1[6+2],
 }
 #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) */
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)
+/**
+ * ether_addr_equal_unaligned - Compare two not u16 aligned Ethernet addresses
+ * @addr1: Pointer to a six-byte array containing the Ethernet address
+ * @addr2: Pointer other six-byte array containing the Ethernet address
+ *
+ * Compare two Ethernet addresses, returns true if equal
+ *
+ * Please note: Use only when any Ethernet address may not be u16 aligned.
+ */
+static inline bool ether_addr_equal_unaligned(const u8 *addr1, const u8 *addr2)
+{
+#if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
+       return ether_addr_equal(addr1, addr2);
+#else
+       return memcmp(addr1, addr2, ETH_ALEN) == 0;
+#endif
+}
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0) */
+
 #endif /* _BACKPORT_LINUX_ETHERDEVICE_H */