net: move ether_crc to tsec driver
ether_crc was added to the core net code in commit 53a5c424bf
("multicast tftp: RFC2090") so that other drivers could use it. However
the only current user of it is tsec.c so move it there.
Signed-off-by: Chris Packham <judge.packham@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
parent
e57c9fdb04
commit
1a4af5c562
@ -80,6 +80,31 @@ static void tsec_configure_serdes(struct tsec_private *priv)
|
||||
|
||||
#ifdef CONFIG_MCAST_TFTP
|
||||
|
||||
/* the 'way' for ethernet-CRC-32. Spliced in from Linux lib/crc32.c
|
||||
* and this is the ethernet-crc method needed for TSEC -- and perhaps
|
||||
* some other adapter -- hash tables
|
||||
*/
|
||||
#define CRCPOLY_LE 0xedb88320
|
||||
static u32 ether_crc(size_t len, unsigned char const *p)
|
||||
{
|
||||
int i;
|
||||
u32 crc;
|
||||
|
||||
crc = ~0;
|
||||
while (len--) {
|
||||
crc ^= *p++;
|
||||
for (i = 0; i < 8; i++)
|
||||
crc = (crc >> 1) ^ ((crc & 1) ? CRCPOLY_LE : 0);
|
||||
}
|
||||
/* an reverse the bits, cuz of way they arrive -- last-first */
|
||||
crc = (crc >> 16) | (crc << 16);
|
||||
crc = (crc >> 8 & 0x00ff00ff) | (crc << 8 & 0xff00ff00);
|
||||
crc = (crc >> 4 & 0x0f0f0f0f) | (crc << 4 & 0xf0f0f0f0);
|
||||
crc = (crc >> 2 & 0x33333333) | (crc << 2 & 0xcccccccc);
|
||||
crc = (crc >> 1 & 0x55555555) | (crc << 1 & 0xaaaaaaaa);
|
||||
return crc;
|
||||
}
|
||||
|
||||
/* CREDITS: linux gianfar driver, slightly adjusted... thanx. */
|
||||
|
||||
/* Set the appropriate hash bit for the given addr */
|
||||
|
@ -289,7 +289,6 @@ const char *eth_get_name(void); /* get name of current device */
|
||||
|
||||
#ifdef CONFIG_MCAST_TFTP
|
||||
int eth_mcast_join(struct in_addr mcast_addr, int join);
|
||||
u32 ether_crc(size_t len, unsigned char const *p);
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -310,30 +310,6 @@ int eth_mcast_join(struct in_addr mcast_ip, int join)
|
||||
return eth_current->mcast(eth_current, mcast_mac, join);
|
||||
}
|
||||
|
||||
/* the 'way' for ethernet-CRC-32. Spliced in from Linux lib/crc32.c
|
||||
* and this is the ethernet-crc method needed for TSEC -- and perhaps
|
||||
* some other adapter -- hash tables
|
||||
*/
|
||||
#define CRCPOLY_LE 0xedb88320
|
||||
u32 ether_crc(size_t len, unsigned char const *p)
|
||||
{
|
||||
int i;
|
||||
u32 crc;
|
||||
crc = ~0;
|
||||
while (len--) {
|
||||
crc ^= *p++;
|
||||
for (i = 0; i < 8; i++)
|
||||
crc = (crc >> 1) ^ ((crc & 1) ? CRCPOLY_LE : 0);
|
||||
}
|
||||
/* an reverse the bits, cuz of way they arrive -- last-first */
|
||||
crc = (crc >> 16) | (crc << 16);
|
||||
crc = (crc >> 8 & 0x00ff00ff) | (crc << 8 & 0xff00ff00);
|
||||
crc = (crc >> 4 & 0x0f0f0f0f) | (crc << 4 & 0xf0f0f0f0);
|
||||
crc = (crc >> 2 & 0x33333333) | (crc << 2 & 0xcccccccc);
|
||||
crc = (crc >> 1 & 0x55555555) | (crc << 1 & 0xaaaaaaaa);
|
||||
return crc;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user