diff options
Diffstat (limited to 'drivers/net/amd8111e.c')
-rw-r--r-- | drivers/net/amd8111e.c | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/drivers/net/amd8111e.c b/drivers/net/amd8111e.c index ef65e5917c8f..18896f24d407 100644 --- a/drivers/net/amd8111e.c +++ b/drivers/net/amd8111e.c | |||
@@ -1490,32 +1490,7 @@ static void amd8111e_read_regs(struct amd8111e_priv *lp, u32 *buf) | |||
1490 | buf[12] = readl(mmio + STAT0); | 1490 | buf[12] = readl(mmio + STAT0); |
1491 | } | 1491 | } |
1492 | 1492 | ||
1493 | /* | ||
1494 | amd8111e crc generator implementation is different from the kernel | ||
1495 | ether_crc() function. | ||
1496 | */ | ||
1497 | static int amd8111e_ether_crc(int len, char* mac_addr) | ||
1498 | { | ||
1499 | int i,byte; | ||
1500 | unsigned char octet; | ||
1501 | u32 crc= INITCRC; | ||
1502 | |||
1503 | for(byte=0; byte < len; byte++){ | ||
1504 | octet = mac_addr[byte]; | ||
1505 | for( i=0;i < 8; i++){ | ||
1506 | /*If the next bit form the input stream is 1,subtract the divisor (CRC32) from the dividend(crc).*/ | ||
1507 | if( (octet & 0x1) ^ (crc & 0x1) ){ | ||
1508 | crc >>= 1; | ||
1509 | crc ^= CRC32; | ||
1510 | } | ||
1511 | else | ||
1512 | crc >>= 1; | ||
1513 | 1493 | ||
1514 | octet >>= 1; | ||
1515 | } | ||
1516 | } | ||
1517 | return crc; | ||
1518 | } | ||
1519 | /* | 1494 | /* |
1520 | This function sets promiscuos mode, all-multi mode or the multicast address | 1495 | This function sets promiscuos mode, all-multi mode or the multicast address |
1521 | list to the device. | 1496 | list to the device. |
@@ -1556,7 +1531,7 @@ static void amd8111e_set_multicast_list(struct net_device *dev) | |||
1556 | mc_filter[1] = mc_filter[0] = 0; | 1531 | mc_filter[1] = mc_filter[0] = 0; |
1557 | for (i = 0, mc_ptr = dev->mc_list; mc_ptr && i < dev->mc_count; | 1532 | for (i = 0, mc_ptr = dev->mc_list; mc_ptr && i < dev->mc_count; |
1558 | i++, mc_ptr = mc_ptr->next) { | 1533 | i++, mc_ptr = mc_ptr->next) { |
1559 | bit_num = ( amd8111e_ether_crc(ETH_ALEN,mc_ptr->dmi_addr) >> 26 ) & 0x3f; | 1534 | bit_num = (ether_crc_le(ETH_ALEN, mc_ptr->dmi_addr) >> 26) & 0x3f; |
1560 | mc_filter[bit_num >> 5] |= 1 << (bit_num & 31); | 1535 | mc_filter[bit_num >> 5] |= 1 << (bit_num & 31); |
1561 | } | 1536 | } |
1562 | amd8111e_writeq(*(u64*)mc_filter,lp->mmio+ LADRF); | 1537 | amd8111e_writeq(*(u64*)mc_filter,lp->mmio+ LADRF); |