diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2020-05-04 19:27:00 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-05-04 11:19:58 -0700 |
commit | b86cd700edd3bfe27f631649727b7796067bb3fd (patch) | |
tree | 2028744da8ab5a83af51cde011c3acec1ac0e5d4 /include | |
parent | e90c9fcedc087c8ba1d34da88381838ed68bfb1c (diff) | |
download | linux-b86cd700edd3bfe27f631649727b7796067bb3fd.tar.bz2 |
net: add helper eth_hw_addr_crc
Several drivers use the same code as basis for filter hashes. Therefore
let's factor it out to a helper. This way drivers don't have to access
struct netdev_hw_addr internals.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/etherdevice.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index 8801f1f986e5..2e5debc0373c 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h @@ -20,6 +20,7 @@ #include <linux/if_ether.h> #include <linux/netdevice.h> #include <linux/random.h> +#include <linux/crc32.h> #include <asm/unaligned.h> #include <asm/bitsperlong.h> @@ -266,6 +267,17 @@ static inline void eth_hw_addr_random(struct net_device *dev) } /** + * eth_hw_addr_crc - Calculate CRC from netdev_hw_addr + * @ha: pointer to hardware address + * + * Calculate CRC from a hardware address as basis for filter hashes. + */ +static inline u32 eth_hw_addr_crc(struct netdev_hw_addr *ha) +{ + return ether_crc(ETH_ALEN, ha->addr); +} + +/** * ether_addr_copy - Copy an Ethernet address * @dst: Pointer to a six-byte array Ethernet address destination * @src: Pointer to a six-byte array Ethernet address source |