aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tulip
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/tulip')
-rw-r--r--drivers/net/tulip/de2104x.c12
-rw-r--r--drivers/net/tulip/de4x5.c14
-rw-r--r--drivers/net/tulip/dmfe.c12
-rw-r--r--drivers/net/tulip/tulip_core.c27
-rw-r--r--drivers/net/tulip/uli526x.c6
-rw-r--r--drivers/net/tulip/winbond-840.c12
-rw-r--r--drivers/net/tulip/xircom_cb.c6
7 files changed, 47 insertions, 42 deletions
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c
index 19cafc2b418d..9c0f29ce8ba7 100644
--- a/drivers/net/tulip/de2104x.c
+++ b/drivers/net/tulip/de2104x.c
@@ -671,15 +671,15 @@ static void build_setup_frame_hash(u16 *setup_frm, struct net_device *dev)
671{ 671{
672 struct de_private *de = netdev_priv(dev); 672 struct de_private *de = netdev_priv(dev);
673 u16 hash_table[32]; 673 u16 hash_table[32];
674 struct dev_mc_list *mclist; 674 struct netdev_hw_addr *ha;
675 int i; 675 int i;
676 u16 *eaddrs; 676 u16 *eaddrs;
677 677
678 memset(hash_table, 0, sizeof(hash_table)); 678 memset(hash_table, 0, sizeof(hash_table));
679 set_bit_le(255, hash_table); /* Broadcast entry */ 679 set_bit_le(255, hash_table); /* Broadcast entry */
680 /* This should work on big-endian machines as well. */ 680 /* This should work on big-endian machines as well. */
681 netdev_for_each_mc_addr(mclist, dev) { 681 netdev_for_each_mc_addr(ha, dev) {
682 int index = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x1ff; 682 int index = ether_crc_le(ETH_ALEN, ha->addr) & 0x1ff;
683 683
684 set_bit_le(index, hash_table); 684 set_bit_le(index, hash_table);
685 } 685 }
@@ -700,13 +700,13 @@ static void build_setup_frame_hash(u16 *setup_frm, struct net_device *dev)
700static void build_setup_frame_perfect(u16 *setup_frm, struct net_device *dev) 700static void build_setup_frame_perfect(u16 *setup_frm, struct net_device *dev)
701{ 701{
702 struct de_private *de = netdev_priv(dev); 702 struct de_private *de = netdev_priv(dev);
703 struct dev_mc_list *mclist; 703 struct netdev_hw_addr *ha;
704 u16 *eaddrs; 704 u16 *eaddrs;
705 705
706 /* We have <= 14 addresses so we can use the wonderful 706 /* We have <= 14 addresses so we can use the wonderful
707 16 address perfect filtering of the Tulip. */ 707 16 address perfect filtering of the Tulip. */
708 netdev_for_each_mc_addr(mclist, dev) { 708 netdev_for_each_mc_addr(ha, dev) {
709 eaddrs = (u16 *)mclist->dmi_addr; 709 eaddrs = (u16 *) ha->addr;
710 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++; 710 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++;
711 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++; 711 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++;
712 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++; 712 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++;
diff --git a/drivers/net/tulip/de4x5.c b/drivers/net/tulip/de4x5.c
index 09b57193a16a..d818456f4713 100644
--- a/drivers/net/tulip/de4x5.c
+++ b/drivers/net/tulip/de4x5.c
@@ -1951,7 +1951,7 @@ static void
1951SetMulticastFilter(struct net_device *dev) 1951SetMulticastFilter(struct net_device *dev)
1952{ 1952{
1953 struct de4x5_private *lp = netdev_priv(dev); 1953 struct de4x5_private *lp = netdev_priv(dev);
1954 struct dev_mc_list *dmi; 1954 struct netdev_hw_addr *ha;
1955 u_long iobase = dev->base_addr; 1955 u_long iobase = dev->base_addr;
1956 int i, bit, byte; 1956 int i, bit, byte;
1957 u16 hashcode; 1957 u16 hashcode;
@@ -1966,8 +1966,8 @@ SetMulticastFilter(struct net_device *dev)
1966 if ((dev->flags & IFF_ALLMULTI) || (netdev_mc_count(dev) > 14)) { 1966 if ((dev->flags & IFF_ALLMULTI) || (netdev_mc_count(dev) > 14)) {
1967 omr |= OMR_PM; /* Pass all multicasts */ 1967 omr |= OMR_PM; /* Pass all multicasts */
1968 } else if (lp->setup_f == HASH_PERF) { /* Hash Filtering */ 1968 } else if (lp->setup_f == HASH_PERF) { /* Hash Filtering */
1969 netdev_for_each_mc_addr(dmi, dev) { 1969 netdev_for_each_mc_addr(ha, dev) {
1970 addrs = dmi->dmi_addr; 1970 addrs = ha->addr;
1971 if ((*addrs & 0x01) == 1) { /* multicast address? */ 1971 if ((*addrs & 0x01) == 1) { /* multicast address? */
1972 crc = ether_crc_le(ETH_ALEN, addrs); 1972 crc = ether_crc_le(ETH_ALEN, addrs);
1973 hashcode = crc & HASH_BITS; /* hashcode is 9 LSb of CRC */ 1973 hashcode = crc & HASH_BITS; /* hashcode is 9 LSb of CRC */
@@ -1983,8 +1983,8 @@ SetMulticastFilter(struct net_device *dev)
1983 } 1983 }
1984 } 1984 }
1985 } else { /* Perfect filtering */ 1985 } else { /* Perfect filtering */
1986 netdev_for_each_mc_addr(dmi, dev) { 1986 netdev_for_each_mc_addr(ha, dev) {
1987 addrs = dmi->dmi_addr; 1987 addrs = ha->addr;
1988 for (i=0; i<ETH_ALEN; i++) { 1988 for (i=0; i<ETH_ALEN; i++) {
1989 *(pa + (i&1)) = *addrs++; 1989 *(pa + (i&1)) = *addrs++;
1990 if (i & 0x01) pa += 4; 1990 if (i & 0x01) pa += 4;
@@ -5077,7 +5077,7 @@ mii_get_phy(struct net_device *dev)
5077 lp->phy[k].spd.value = GENERIC_VALUE; /* TX & T4, H/F Duplex */ 5077 lp->phy[k].spd.value = GENERIC_VALUE; /* TX & T4, H/F Duplex */
5078 lp->mii_cnt++; 5078 lp->mii_cnt++;
5079 lp->active++; 5079 lp->active++;
5080 printk("%s: Using generic MII device control. If the board doesn't operate, \nplease mail the following dump to the author:\n", dev->name); 5080 printk("%s: Using generic MII device control. If the board doesn't operate,\nplease mail the following dump to the author:\n", dev->name);
5081 j = de4x5_debug; 5081 j = de4x5_debug;
5082 de4x5_debug |= DEBUG_MII; 5082 de4x5_debug |= DEBUG_MII;
5083 de4x5_dbg_mii(dev, k); 5083 de4x5_dbg_mii(dev, k);
@@ -5337,7 +5337,7 @@ de4x5_dbg_open(struct net_device *dev)
5337 } 5337 }
5338 } 5338 }
5339 printk("...0x%8.8x\n", le32_to_cpu(lp->tx_ring[i].buf)); 5339 printk("...0x%8.8x\n", le32_to_cpu(lp->tx_ring[i].buf));
5340 printk("Ring size: \nRX: %d\nTX: %d\n", 5340 printk("Ring size:\nRX: %d\nTX: %d\n",
5341 (short)lp->rxRingSize, 5341 (short)lp->rxRingSize,
5342 (short)lp->txRingSize); 5342 (short)lp->txRingSize);
5343 } 5343 }
diff --git a/drivers/net/tulip/dmfe.c b/drivers/net/tulip/dmfe.c
index 9568156dea98..7278ecb823cb 100644
--- a/drivers/net/tulip/dmfe.c
+++ b/drivers/net/tulip/dmfe.c
@@ -1453,7 +1453,7 @@ static void update_cr6(u32 cr6_data, unsigned long ioaddr)
1453 1453
1454static void dm9132_id_table(struct DEVICE *dev) 1454static void dm9132_id_table(struct DEVICE *dev)
1455{ 1455{
1456 struct dev_mc_list *mcptr; 1456 struct netdev_hw_addr *ha;
1457 u16 * addrptr; 1457 u16 * addrptr;
1458 unsigned long ioaddr = dev->base_addr+0xc0; /* ID Table */ 1458 unsigned long ioaddr = dev->base_addr+0xc0; /* ID Table */
1459 u32 hash_val; 1459 u32 hash_val;
@@ -1477,8 +1477,8 @@ static void dm9132_id_table(struct DEVICE *dev)
1477 hash_table[3] = 0x8000; 1477 hash_table[3] = 0x8000;
1478 1478
1479 /* the multicast address in Hash Table : 64 bits */ 1479 /* the multicast address in Hash Table : 64 bits */
1480 netdev_for_each_mc_addr(mcptr, dev) { 1480 netdev_for_each_mc_addr(ha, dev) {
1481 hash_val = cal_CRC((char *) mcptr->dmi_addr, 6, 0) & 0x3f; 1481 hash_val = cal_CRC((char *) ha->addr, 6, 0) & 0x3f;
1482 hash_table[hash_val / 16] |= (u16) 1 << (hash_val % 16); 1482 hash_table[hash_val / 16] |= (u16) 1 << (hash_val % 16);
1483 } 1483 }
1484 1484
@@ -1496,7 +1496,7 @@ static void dm9132_id_table(struct DEVICE *dev)
1496static void send_filter_frame(struct DEVICE *dev) 1496static void send_filter_frame(struct DEVICE *dev)
1497{ 1497{
1498 struct dmfe_board_info *db = netdev_priv(dev); 1498 struct dmfe_board_info *db = netdev_priv(dev);
1499 struct dev_mc_list *mcptr; 1499 struct netdev_hw_addr *ha;
1500 struct tx_desc *txptr; 1500 struct tx_desc *txptr;
1501 u16 * addrptr; 1501 u16 * addrptr;
1502 u32 * suptr; 1502 u32 * suptr;
@@ -1519,8 +1519,8 @@ static void send_filter_frame(struct DEVICE *dev)
1519 *suptr++ = 0xffff; 1519 *suptr++ = 0xffff;
1520 1520
1521 /* fit the multicast address */ 1521 /* fit the multicast address */
1522 netdev_for_each_mc_addr(mcptr, dev) { 1522 netdev_for_each_mc_addr(ha, dev) {
1523 addrptr = (u16 *) mcptr->dmi_addr; 1523 addrptr = (u16 *) ha->addr;
1524 *suptr++ = addrptr[0]; 1524 *suptr++ = addrptr[0];
1525 *suptr++ = addrptr[1]; 1525 *suptr++ = addrptr[1];
1526 *suptr++ = addrptr[2]; 1526 *suptr++ = addrptr[2];
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c
index 3810db9dc2de..22e766e90063 100644
--- a/drivers/net/tulip/tulip_core.c
+++ b/drivers/net/tulip/tulip_core.c
@@ -991,15 +991,15 @@ static void build_setup_frame_hash(u16 *setup_frm, struct net_device *dev)
991{ 991{
992 struct tulip_private *tp = netdev_priv(dev); 992 struct tulip_private *tp = netdev_priv(dev);
993 u16 hash_table[32]; 993 u16 hash_table[32];
994 struct dev_mc_list *mclist; 994 struct netdev_hw_addr *ha;
995 int i; 995 int i;
996 u16 *eaddrs; 996 u16 *eaddrs;
997 997
998 memset(hash_table, 0, sizeof(hash_table)); 998 memset(hash_table, 0, sizeof(hash_table));
999 set_bit_le(255, hash_table); /* Broadcast entry */ 999 set_bit_le(255, hash_table); /* Broadcast entry */
1000 /* This should work on big-endian machines as well. */ 1000 /* This should work on big-endian machines as well. */
1001 netdev_for_each_mc_addr(mclist, dev) { 1001 netdev_for_each_mc_addr(ha, dev) {
1002 int index = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x1ff; 1002 int index = ether_crc_le(ETH_ALEN, ha->addr) & 0x1ff;
1003 1003
1004 set_bit_le(index, hash_table); 1004 set_bit_le(index, hash_table);
1005 } 1005 }
@@ -1019,13 +1019,13 @@ static void build_setup_frame_hash(u16 *setup_frm, struct net_device *dev)
1019static void build_setup_frame_perfect(u16 *setup_frm, struct net_device *dev) 1019static void build_setup_frame_perfect(u16 *setup_frm, struct net_device *dev)
1020{ 1020{
1021 struct tulip_private *tp = netdev_priv(dev); 1021 struct tulip_private *tp = netdev_priv(dev);
1022 struct dev_mc_list *mclist; 1022 struct netdev_hw_addr *ha;
1023 u16 *eaddrs; 1023 u16 *eaddrs;
1024 1024
1025 /* We have <= 14 addresses so we can use the wonderful 1025 /* We have <= 14 addresses so we can use the wonderful
1026 16 address perfect filtering of the Tulip. */ 1026 16 address perfect filtering of the Tulip. */
1027 netdev_for_each_mc_addr(mclist, dev) { 1027 netdev_for_each_mc_addr(ha, dev) {
1028 eaddrs = (u16 *)mclist->dmi_addr; 1028 eaddrs = (u16 *) ha->addr;
1029 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++; 1029 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++;
1030 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++; 1030 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++;
1031 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++; 1031 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++;
@@ -1062,7 +1062,7 @@ static void set_rx_mode(struct net_device *dev)
1062 } else if (tp->flags & MC_HASH_ONLY) { 1062 } else if (tp->flags & MC_HASH_ONLY) {
1063 /* Some work-alikes have only a 64-entry hash filter table. */ 1063 /* Some work-alikes have only a 64-entry hash filter table. */
1064 /* Should verify correctness on big-endian/__powerpc__ */ 1064 /* Should verify correctness on big-endian/__powerpc__ */
1065 struct dev_mc_list *mclist; 1065 struct netdev_hw_addr *ha;
1066 if (netdev_mc_count(dev) > 64) { 1066 if (netdev_mc_count(dev) > 64) {
1067 /* Arbitrary non-effective limit. */ 1067 /* Arbitrary non-effective limit. */
1068 tp->csr6 |= AcceptAllMulticast; 1068 tp->csr6 |= AcceptAllMulticast;
@@ -1070,18 +1070,21 @@ static void set_rx_mode(struct net_device *dev)
1070 } else { 1070 } else {
1071 u32 mc_filter[2] = {0, 0}; /* Multicast hash filter */ 1071 u32 mc_filter[2] = {0, 0}; /* Multicast hash filter */
1072 int filterbit; 1072 int filterbit;
1073 netdev_for_each_mc_addr(mclist, dev) { 1073 netdev_for_each_mc_addr(ha, dev) {
1074 if (tp->flags & COMET_MAC_ADDR) 1074 if (tp->flags & COMET_MAC_ADDR)
1075 filterbit = ether_crc_le(ETH_ALEN, mclist->dmi_addr); 1075 filterbit = ether_crc_le(ETH_ALEN,
1076 ha->addr);
1076 else 1077 else
1077 filterbit = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26; 1078 filterbit = ether_crc(ETH_ALEN,
1079 ha->addr) >> 26;
1078 filterbit &= 0x3f; 1080 filterbit &= 0x3f;
1079 mc_filter[filterbit >> 5] |= 1 << (filterbit & 31); 1081 mc_filter[filterbit >> 5] |= 1 << (filterbit & 31);
1080 if (tulip_debug > 2) 1082 if (tulip_debug > 2)
1081 dev_info(&dev->dev, 1083 dev_info(&dev->dev,
1082 "Added filter for %pM %08x bit %d\n", 1084 "Added filter for %pM %08x bit %d\n",
1083 mclist->dmi_addr, 1085 ha->addr,
1084 ether_crc(ETH_ALEN, mclist->dmi_addr), filterbit); 1086 ether_crc(ETH_ALEN, ha->addr),
1087 filterbit);
1085 } 1088 }
1086 if (mc_filter[0] == tp->mc_filter[0] && 1089 if (mc_filter[0] == tp->mc_filter[0] &&
1087 mc_filter[1] == tp->mc_filter[1]) 1090 mc_filter[1] == tp->mc_filter[1])
diff --git a/drivers/net/tulip/uli526x.c b/drivers/net/tulip/uli526x.c
index a589dd34891e..c7f972852921 100644
--- a/drivers/net/tulip/uli526x.c
+++ b/drivers/net/tulip/uli526x.c
@@ -1393,7 +1393,7 @@ static void update_cr6(u32 cr6_data, unsigned long ioaddr)
1393static void send_filter_frame(struct net_device *dev, int mc_cnt) 1393static void send_filter_frame(struct net_device *dev, int mc_cnt)
1394{ 1394{
1395 struct uli526x_board_info *db = netdev_priv(dev); 1395 struct uli526x_board_info *db = netdev_priv(dev);
1396 struct dev_mc_list *mcptr; 1396 struct netdev_hw_addr *ha;
1397 struct tx_desc *txptr; 1397 struct tx_desc *txptr;
1398 u16 * addrptr; 1398 u16 * addrptr;
1399 u32 * suptr; 1399 u32 * suptr;
@@ -1416,8 +1416,8 @@ static void send_filter_frame(struct net_device *dev, int mc_cnt)
1416 *suptr++ = 0xffff << FLT_SHIFT; 1416 *suptr++ = 0xffff << FLT_SHIFT;
1417 1417
1418 /* fit the multicast address */ 1418 /* fit the multicast address */
1419 netdev_for_each_mc_addr(mcptr, dev) { 1419 netdev_for_each_mc_addr(ha, dev) {
1420 addrptr = (u16 *) mcptr->dmi_addr; 1420 addrptr = (u16 *) ha->addr;
1421 *suptr++ = addrptr[0] << FLT_SHIFT; 1421 *suptr++ = addrptr[0] << FLT_SHIFT;
1422 *suptr++ = addrptr[1] << FLT_SHIFT; 1422 *suptr++ = addrptr[1] << FLT_SHIFT;
1423 *suptr++ = addrptr[2] << FLT_SHIFT; 1423 *suptr++ = addrptr[2] << FLT_SHIFT;
diff --git a/drivers/net/tulip/winbond-840.c b/drivers/net/tulip/winbond-840.c
index 98dbf6cc1d68..18c8cedf4cac 100644
--- a/drivers/net/tulip/winbond-840.c
+++ b/drivers/net/tulip/winbond-840.c
@@ -1366,13 +1366,15 @@ static u32 __set_rx_mode(struct net_device *dev)
1366 memset(mc_filter, 0xff, sizeof(mc_filter)); 1366 memset(mc_filter, 0xff, sizeof(mc_filter));
1367 rx_mode = RxAcceptBroadcast | AcceptMulticast | AcceptMyPhys; 1367 rx_mode = RxAcceptBroadcast | AcceptMulticast | AcceptMyPhys;
1368 } else { 1368 } else {
1369 struct dev_mc_list *mclist; 1369 struct netdev_hw_addr *ha;
1370 1370
1371 memset(mc_filter, 0, sizeof(mc_filter)); 1371 memset(mc_filter, 0, sizeof(mc_filter));
1372 netdev_for_each_mc_addr(mclist, dev) { 1372 netdev_for_each_mc_addr(ha, dev) {
1373 int filterbit = (ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26) ^ 0x3F; 1373 int filbit;
1374 filterbit &= 0x3f; 1374
1375 mc_filter[filterbit >> 5] |= 1 << (filterbit & 31); 1375 filbit = (ether_crc(ETH_ALEN, ha->addr) >> 26) ^ 0x3F;
1376 filbit &= 0x3f;
1377 mc_filter[filbit >> 5] |= 1 << (filbit & 31);
1376 } 1378 }
1377 rx_mode = RxAcceptBroadcast | AcceptMulticast | AcceptMyPhys; 1379 rx_mode = RxAcceptBroadcast | AcceptMulticast | AcceptMyPhys;
1378 } 1380 }
diff --git a/drivers/net/tulip/xircom_cb.c b/drivers/net/tulip/xircom_cb.c
index acfeeb980562..a439e93be22d 100644
--- a/drivers/net/tulip/xircom_cb.c
+++ b/drivers/net/tulip/xircom_cb.c
@@ -350,9 +350,9 @@ static irqreturn_t xircom_interrupt(int irq, void *dev_instance)
350 350
351#ifdef DEBUG 351#ifdef DEBUG
352 print_binary(status); 352 print_binary(status);
353 printk("tx status 0x%08x 0x%08x \n", 353 printk("tx status 0x%08x 0x%08x\n",
354 card->tx_buffer[0], card->tx_buffer[4]); 354 card->tx_buffer[0], card->tx_buffer[4]);
355 printk("rx status 0x%08x 0x%08x \n", 355 printk("rx status 0x%08x 0x%08x\n",
356 card->rx_buffer[0], card->rx_buffer[4]); 356 card->rx_buffer[0], card->rx_buffer[4]);
357#endif 357#endif
358 /* Handle shared irq and hotplug */ 358 /* Handle shared irq and hotplug */
@@ -462,7 +462,7 @@ static int xircom_open(struct net_device *dev)
462 struct xircom_private *xp = netdev_priv(dev); 462 struct xircom_private *xp = netdev_priv(dev);
463 int retval; 463 int retval;
464 enter("xircom_open"); 464 enter("xircom_open");
465 pr_info("xircom cardbus adaptor found, registering as %s, using irq %i \n", 465 pr_info("xircom cardbus adaptor found, registering as %s, using irq %i\n",
466 dev->name, dev->irq); 466 dev->name, dev->irq);
467 retval = request_irq(dev->irq, xircom_interrupt, IRQF_SHARED, dev->name, dev); 467 retval = request_irq(dev->irq, xircom_interrupt, IRQF_SHARED, dev->name, dev);
468 if (retval) { 468 if (retval) {