Merge branch 'net-add-helper-eth_hw_addr_crc'
Heiner Kallweit says: ==================== 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. First user is r8169. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Коммит
cad5eaf74f
|
@ -19,7 +19,6 @@
|
|||
#include <linux/ethtool.h>
|
||||
#include <linux/phy.h>
|
||||
#include <linux/if_vlan.h>
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/ip.h>
|
||||
|
@ -2610,7 +2609,7 @@ static void rtl_set_rx_mode(struct net_device *dev)
|
|||
|
||||
mc_filter[1] = mc_filter[0] = 0;
|
||||
netdev_for_each_mc_addr(ha, dev) {
|
||||
u32 bit_nr = ether_crc(ETH_ALEN, ha->addr) >> 26;
|
||||
u32 bit_nr = eth_hw_addr_crc(ha) >> 26;
|
||||
mc_filter[bit_nr >> 5] |= BIT(bit_nr & 31);
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
@ -265,6 +266,17 @@ static inline void eth_hw_addr_random(struct net_device *dev)
|
|||
eth_random_addr(dev->dev_addr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
|
|
Загрузка…
Ссылка в новой задаче