net: ethernet: freescale: Use generic CRC32 implementation
Subsystems (3)
PATCH v3 1/1 net: ethernet: freescale: Use generic CRC32 implementation
Use generic kernel CRC32 implementation because it:
1. Should be faster (uses lookup tables),
2. Removes duplicated CRC generation code,
3. Uses well-proven algorithm instead of coding it one more time.
Suggested-by Eric Biggers <[email protected]>
Signed-off-by Krzysztof Kozlowski <[email protected]>
---
Changes since v2:
1. Use ether_crc_le (suggested by David)
Changes since v1:
1. Fix missing header inclusion.
--- drivers/net/ethernet/freescale/fec_main.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-)
drivers/net/ethernet/freescale/fec_main.c +3 -10
@@ -48,6 +48,7 @@#include <linux/io.h> #include <linux/irq.h> #include <linux/clk.h> +#include <linux/crc32.h> #include <linux/platform_device.h> #include <linux/mdio.h> #include <linux/phy.h>
@@ -2955,7 +2956,7 @@ static void set_multicast_list(struct net_device *ndev) {struct fec_enet_private *fep =netdev_priv (ndev);struct netdev_hw_addr *ha; -unsigned int i, bit, data, crc, tmp; +unsigned int crc, tmp;unsigned char hash;unsigned int hash_high =0 , hash_low =0 ;
@@ -2983,15 +2984,7 @@ static void set_multicast_list(struct net_device *ndev)/* Add the addresses in hash register */ netdev_for_each_mc_addr (ha, ndev) {/* calculate crc32 value of mac address */ - crc =0xffffffff ; - -for (i =0 ; i < ndev->addr_len; i++) { - data = ha->addr[i]; -for (bit =0 ; bit <8 ; bit++, data >>=1 ) { - crc = (crc >>1 ) ^ - (((crc ^ data) &1 ) ?CRC32_POLY :0 ); - } - } + crc =ether_crc_le (ndev->addr_len, ha->addr);/* only upper 6 bits (FEC_HASH_BITS) are used * which point to specific bit in the hash registers
Signature · 1 line
2.14.1
From: Krzysztof Kozlowski <[email protected]>
Date: Mon, 23 Jul 2018 18:19:14 +0200
Quoted 7 lines
Use generic kernel CRC32 implementation because it:
1. Should be faster (uses lookup tables),
2. Removes duplicated CRC generation code,
3. Uses well-proven algorithm instead of coding it one more time.Suggested-by Eric Biggers <[email protected]>Signed-off-by Krzysztof Kozlowski <[email protected]>
Applied.