patch-2.4.19 linux-2.4.19/drivers/net/a2065.c
Next file: linux-2.4.19/drivers/net/a2065.h
Previous file: linux-2.4.19/drivers/net/Space.c
Back to the patch index
Back to the overall index
- Lines: 74
- Date:
Fri Aug 2 17:39:44 2002
- Orig file:
linux-2.4.18/drivers/net/a2065.c
- Orig date:
Tue Oct 16 21:56:29 2001
diff -urN linux-2.4.18/drivers/net/a2065.c linux-2.4.19/drivers/net/a2065.c
@@ -6,6 +6,7 @@
* Fixes and tips by:
* - Janos Farkas (CHEXUM@sparta.banki.hu)
* - Jes Degn Soerensen (jds@kom.auc.dk)
+ * - Matt Domsch (Matt_Domsch@dell.com)
*
* ----------------------------------------------------------------------------
*
@@ -47,9 +48,10 @@
#include <linux/string.h>
#include <linux/config.h>
#include <linux/init.h>
+#include <linux/crc32.h>
#include <asm/bitops.h>
-#include <asm/io.h>
+
#include <asm/irq.h>
#include <linux/errno.h>
@@ -494,15 +496,15 @@
last_dev = dev;
+ /* Stop the Lance */
+ ll->rap = LE_CSR0;
+ ll->rdp = LE_C0_STOP;
+
/* Install the Interrupt handler */
ret = request_irq(IRQ_AMIGA_PORTS, lance_interrupt, SA_SHIRQ,
dev->name, dev);
if (ret) return ret;
- /* Stop the Lance */
- ll->rap = LE_CSR0;
- ll->rdp = LE_C0_STOP;
-
load_csrs (lp);
lance_init_ring (dev);
@@ -638,8 +640,8 @@
volatile u16 *mcast_table = (u16 *)&ib->filter;
struct dev_mc_list *dmi=dev->mc_list;
char *addrs;
- int i, j, bit, byte;
- u32 crc, poly = CRC_POLYNOMIAL_LE;
+ int i;
+ u32 crc;
/* set all multicast bits */
if (dev->flags & IFF_ALLMULTI){
@@ -660,21 +662,7 @@
if (!(*addrs & 1))
continue;
- crc = 0xffffffff;
- for (byte = 0; byte < 6; byte++)
- for (bit = *addrs++, j = 0; j < 8; j++, bit>>=1)
- {
- int test;
-
- test = ((bit ^ crc) & 0x01);
- crc >>= 1;
-
- if (test)
- {
- crc = crc ^ poly;
- }
- }
-
+ crc = ether_crc_le(6, addrs);
crc = crc >> 26;
mcast_table [crc >> 4] |= 1 << (crc & 0xf);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)