aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tulip
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2010-04-20 10:02:01 -0400
committerPatrick McHardy <kaber@trash.net>2010-04-20 10:02:01 -0400
commit62910554656cdcd6b6f84a5154c4155aae4ca231 (patch)
treedcf14004f6fd2ef7154362ff948bfeba0f3ea92d /drivers/net/tulip
parent22265a5c3c103cf8c50be62e6c90d045eb649e6d (diff)
parentab9304717f7624c41927f442e6b6d418b2d8b3e4 (diff)
Merge branch 'master' of /repos/git/net-next-2.6
Conflicts: Documentation/feature-removal-schedule.txt net/ipv6/netfilter/ip6t_REJECT.c net/netfilter/xt_limit.c Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'drivers/net/tulip')
-rw-r--r--drivers/net/tulip/de2104x.c13
-rw-r--r--drivers/net/tulip/de4x5.c16
-rw-r--r--drivers/net/tulip/dmfe.c13
-rw-r--r--drivers/net/tulip/eeprom.c1
-rw-r--r--drivers/net/tulip/tulip_core.c28
-rw-r--r--drivers/net/tulip/uli526x.c15
-rw-r--r--drivers/net/tulip/winbond-840.c13
-rw-r--r--drivers/net/tulip/xircom_cb.c6
8 files changed, 56 insertions, 49 deletions
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c
index cb429723b2c8..9c0f29ce8ba7 100644
--- a/drivers/net/tulip/de2104x.c
+++ b/drivers/net/tulip/de2104x.c
@@ -42,6 +42,7 @@
42#include <linux/compiler.h> 42#include <linux/compiler.h>
43#include <linux/rtnetlink.h> 43#include <linux/rtnetlink.h>
44#include <linux/crc32.h> 44#include <linux/crc32.h>
45#include <linux/slab.h>
45 46
46#include <asm/io.h> 47#include <asm/io.h>
47#include <asm/irq.h> 48#include <asm/irq.h>
@@ -670,15 +671,15 @@ static void build_setup_frame_hash(u16 *setup_frm, struct net_device *dev)
670{ 671{
671 struct de_private *de = netdev_priv(dev); 672 struct de_private *de = netdev_priv(dev);
672 u16 hash_table[32]; 673 u16 hash_table[32];
673 struct dev_mc_list *mclist; 674 struct netdev_hw_addr *ha;
674 int i; 675 int i;
675 u16 *eaddrs; 676 u16 *eaddrs;
676 677
677 memset(hash_table, 0, sizeof(hash_table)); 678 memset(hash_table, 0, sizeof(hash_table));
678 set_bit_le(255, hash_table); /* Broadcast entry */ 679 set_bit_le(255, hash_table); /* Broadcast entry */
679 /* This should work on big-endian machines as well. */ 680 /* This should work on big-endian machines as well. */
680 netdev_for_each_mc_addr(mclist, dev) { 681 netdev_for_each_mc_addr(ha, dev) {
681 int index = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x1ff; 682 int index = ether_crc_le(ETH_ALEN, ha->addr) & 0x1ff;
682 683
683 set_bit_le(index, hash_table); 684 set_bit_le(index, hash_table);
684 } 685 }
@@ -699,13 +700,13 @@ static void build_setup_frame_hash(u16 *setup_frm, struct net_device *dev)
699static 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)
700{ 701{
701 struct de_private *de = netdev_priv(dev); 702 struct de_private *de = netdev_priv(dev);
702 struct dev_mc_list *mclist; 703 struct netdev_hw_addr *ha;
703 u16 *eaddrs; 704 u16 *eaddrs;
704 705
705 /* We have <= 14 addresses so we can use the wonderful 706 /* We have <= 14 addresses so we can use the wonderful
706 16 address perfect filtering of the Tulip. */ 707 16 address perfect filtering of the Tulip. */
707 netdev_for_each_mc_addr(mclist, dev) { 708 netdev_for_each_mc_addr(ha, dev) {
708 eaddrs = (u16 *)mclist->dmi_addr; 709 eaddrs = (u16 *) ha->addr;
709 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++; 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++;
diff --git a/drivers/net/tulip/de4x5.c b/drivers/net/tulip/de4x5.c
index c4ecb9a95409..d818456f4713 100644
--- a/drivers/net/tulip/de4x5.c
+++ b/drivers/net/tulip/de4x5.c
@@ -450,7 +450,6 @@
450#include <linux/ptrace.h> 450#include <linux/ptrace.h>
451#include <linux/errno.h> 451#include <linux/errno.h>
452#include <linux/ioport.h> 452#include <linux/ioport.h>
453#include <linux/slab.h>
454#include <linux/pci.h> 453#include <linux/pci.h>
455#include <linux/eisa.h> 454#include <linux/eisa.h>
456#include <linux/delay.h> 455#include <linux/delay.h>
@@ -467,6 +466,7 @@
467#include <linux/dma-mapping.h> 466#include <linux/dma-mapping.h>
468#include <linux/moduleparam.h> 467#include <linux/moduleparam.h>
469#include <linux/bitops.h> 468#include <linux/bitops.h>
469#include <linux/gfp.h>
470 470
471#include <asm/io.h> 471#include <asm/io.h>
472#include <asm/dma.h> 472#include <asm/dma.h>
@@ -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 95b38d803e9b..7278ecb823cb 100644
--- a/drivers/net/tulip/dmfe.c
+++ b/drivers/net/tulip/dmfe.c
@@ -74,7 +74,6 @@
74#include <linux/ptrace.h> 74#include <linux/ptrace.h>
75#include <linux/errno.h> 75#include <linux/errno.h>
76#include <linux/ioport.h> 76#include <linux/ioport.h>
77#include <linux/slab.h>
78#include <linux/interrupt.h> 77#include <linux/interrupt.h>
79#include <linux/pci.h> 78#include <linux/pci.h>
80#include <linux/dma-mapping.h> 79#include <linux/dma-mapping.h>
@@ -1454,7 +1453,7 @@ static void update_cr6(u32 cr6_data, unsigned long ioaddr)
1454 1453
1455static void dm9132_id_table(struct DEVICE *dev) 1454static void dm9132_id_table(struct DEVICE *dev)
1456{ 1455{
1457 struct dev_mc_list *mcptr; 1456 struct netdev_hw_addr *ha;
1458 u16 * addrptr; 1457 u16 * addrptr;
1459 unsigned long ioaddr = dev->base_addr+0xc0; /* ID Table */ 1458 unsigned long ioaddr = dev->base_addr+0xc0; /* ID Table */
1460 u32 hash_val; 1459 u32 hash_val;
@@ -1478,8 +1477,8 @@ static void dm9132_id_table(struct DEVICE *dev)
1478 hash_table[3] = 0x8000; 1477 hash_table[3] = 0x8000;
1479 1478
1480 /* the multicast address in Hash Table : 64 bits */ 1479 /* the multicast address in Hash Table : 64 bits */
1481 netdev_for_each_mc_addr(mcptr, dev) { 1480 netdev_for_each_mc_addr(ha, dev) {
1482 hash_val = cal_CRC((char *) mcptr->dmi_addr, 6, 0) & 0x3f; 1481 hash_val = cal_CRC((char *) ha->addr, 6, 0) & 0x3f;
1483 hash_table[hash_val / 16] |= (u16) 1 << (hash_val % 16); 1482 hash_table[hash_val / 16] |= (u16) 1 << (hash_val % 16);
1484 } 1483 }
1485 1484
@@ -1497,7 +1496,7 @@ static void dm9132_id_table(struct DEVICE *dev)
1497static void send_filter_frame(struct DEVICE *dev) 1496static void send_filter_frame(struct DEVICE *dev)
1498{ 1497{
1499 struct dmfe_board_info *db = netdev_priv(dev); 1498 struct dmfe_board_info *db = netdev_priv(dev);
1500 struct dev_mc_list *mcptr; 1499 struct netdev_hw_addr *ha;
1501 struct tx_desc *txptr; 1500 struct tx_desc *txptr;
1502 u16 * addrptr; 1501 u16 * addrptr;
1503 u32 * suptr; 1502 u32 * suptr;
@@ -1520,8 +1519,8 @@ static void send_filter_frame(struct DEVICE *dev)
1520 *suptr++ = 0xffff; 1519 *suptr++ = 0xffff;
1521 1520
1522 /* fit the multicast address */ 1521 /* fit the multicast address */
1523 netdev_for_each_mc_addr(mcptr, dev) { 1522 netdev_for_each_mc_addr(ha, dev) {
1524 addrptr = (u16 *) mcptr->dmi_addr; 1523 addrptr = (u16 *) ha->addr;
1525 *suptr++ = addrptr[0]; 1524 *suptr++ = addrptr[0];
1526 *suptr++ = addrptr[1]; 1525 *suptr++ = addrptr[1];
1527 *suptr++ = addrptr[2]; 1526 *suptr++ = addrptr[2];
diff --git a/drivers/net/tulip/eeprom.c b/drivers/net/tulip/eeprom.c
index 49f05d1431f5..6002e651b9ea 100644
--- a/drivers/net/tulip/eeprom.c
+++ b/drivers/net/tulip/eeprom.c
@@ -13,6 +13,7 @@
13*/ 13*/
14 14
15#include <linux/pci.h> 15#include <linux/pci.h>
16#include <linux/slab.h>
16#include "tulip.h" 17#include "tulip.h"
17#include <linux/init.h> 18#include <linux/init.h>
18#include <asm/unaligned.h> 19#include <asm/unaligned.h>
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c
index 7f544ef2f5fc..22e766e90063 100644
--- a/drivers/net/tulip/tulip_core.c
+++ b/drivers/net/tulip/tulip_core.c
@@ -24,6 +24,7 @@
24 24
25#include <linux/module.h> 25#include <linux/module.h>
26#include <linux/pci.h> 26#include <linux/pci.h>
27#include <linux/slab.h>
27#include "tulip.h" 28#include "tulip.h"
28#include <linux/init.h> 29#include <linux/init.h>
29#include <linux/etherdevice.h> 30#include <linux/etherdevice.h>
@@ -990,15 +991,15 @@ static void build_setup_frame_hash(u16 *setup_frm, struct net_device *dev)
990{ 991{
991 struct tulip_private *tp = netdev_priv(dev); 992 struct tulip_private *tp = netdev_priv(dev);
992 u16 hash_table[32]; 993 u16 hash_table[32];
993 struct dev_mc_list *mclist; 994 struct netdev_hw_addr *ha;
994 int i; 995 int i;
995 u16 *eaddrs; 996 u16 *eaddrs;
996 997
997 memset(hash_table, 0, sizeof(hash_table)); 998 memset(hash_table, 0, sizeof(hash_table));
998 set_bit_le(255, hash_table); /* Broadcast entry */ 999 set_bit_le(255, hash_table); /* Broadcast entry */
999 /* This should work on big-endian machines as well. */ 1000 /* This should work on big-endian machines as well. */
1000 netdev_for_each_mc_addr(mclist, dev) { 1001 netdev_for_each_mc_addr(ha, dev) {
1001 int index = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x1ff; 1002 int index = ether_crc_le(ETH_ALEN, ha->addr) & 0x1ff;
1002 1003
1003 set_bit_le(index, hash_table); 1004 set_bit_le(index, hash_table);
1004 } 1005 }
@@ -1018,13 +1019,13 @@ static void build_setup_frame_hash(u16 *setup_frm, struct net_device *dev)
1018static 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)
1019{ 1020{
1020 struct tulip_private *tp = netdev_priv(dev); 1021 struct tulip_private *tp = netdev_priv(dev);
1021 struct dev_mc_list *mclist; 1022 struct netdev_hw_addr *ha;
1022 u16 *eaddrs; 1023 u16 *eaddrs;
1023 1024
1024 /* We have <= 14 addresses so we can use the wonderful 1025 /* We have <= 14 addresses so we can use the wonderful
1025 16 address perfect filtering of the Tulip. */ 1026 16 address perfect filtering of the Tulip. */
1026 netdev_for_each_mc_addr(mclist, dev) { 1027 netdev_for_each_mc_addr(ha, dev) {
1027 eaddrs = (u16 *)mclist->dmi_addr; 1028 eaddrs = (u16 *) ha->addr;
1028 *setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++; 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++;
@@ -1061,7 +1062,7 @@ static void set_rx_mode(struct net_device *dev)
1061 } else if (tp->flags & MC_HASH_ONLY) { 1062 } else if (tp->flags & MC_HASH_ONLY) {
1062 /* Some work-alikes have only a 64-entry hash filter table. */ 1063 /* Some work-alikes have only a 64-entry hash filter table. */
1063 /* Should verify correctness on big-endian/__powerpc__ */ 1064 /* Should verify correctness on big-endian/__powerpc__ */
1064 struct dev_mc_list *mclist; 1065 struct netdev_hw_addr *ha;
1065 if (netdev_mc_count(dev) > 64) { 1066 if (netdev_mc_count(dev) > 64) {
1066 /* Arbitrary non-effective limit. */ 1067 /* Arbitrary non-effective limit. */
1067 tp->csr6 |= AcceptAllMulticast; 1068 tp->csr6 |= AcceptAllMulticast;
@@ -1069,18 +1070,21 @@ static void set_rx_mode(struct net_device *dev)
1069 } else { 1070 } else {
1070 u32 mc_filter[2] = {0, 0}; /* Multicast hash filter */ 1071 u32 mc_filter[2] = {0, 0}; /* Multicast hash filter */
1071 int filterbit; 1072 int filterbit;
1072 netdev_for_each_mc_addr(mclist, dev) { 1073 netdev_for_each_mc_addr(ha, dev) {
1073 if (tp->flags & COMET_MAC_ADDR) 1074 if (tp->flags & COMET_MAC_ADDR)
1074 filterbit = ether_crc_le(ETH_ALEN, mclist->dmi_addr); 1075 filterbit = ether_crc_le(ETH_ALEN,
1076 ha->addr);
1075 else 1077 else
1076 filterbit = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26; 1078 filterbit = ether_crc(ETH_ALEN,
1079 ha->addr) >> 26;
1077 filterbit &= 0x3f; 1080 filterbit &= 0x3f;
1078 mc_filter[filterbit >> 5] |= 1 << (filterbit & 31); 1081 mc_filter[filterbit >> 5] |= 1 << (filterbit & 31);
1079 if (tulip_debug > 2) 1082 if (tulip_debug > 2)
1080 dev_info(&dev->dev, 1083 dev_info(&dev->dev,
1081 "Added filter for %pM %08x bit %d\n", 1084 "Added filter for %pM %08x bit %d\n",
1082 mclist->dmi_addr, 1085 ha->addr,
1083 ether_crc(ETH_ALEN, mclist->dmi_addr), filterbit); 1086 ether_crc(ETH_ALEN, ha->addr),
1087 filterbit);
1084 } 1088 }
1085 if (mc_filter[0] == tp->mc_filter[0] && 1089 if (mc_filter[0] == tp->mc_filter[0] &&
1086 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 0ab05af237e5..c7f972852921 100644
--- a/drivers/net/tulip/uli526x.c
+++ b/drivers/net/tulip/uli526x.c
@@ -25,7 +25,6 @@
25#include <linux/timer.h> 25#include <linux/timer.h>
26#include <linux/errno.h> 26#include <linux/errno.h>
27#include <linux/ioport.h> 27#include <linux/ioport.h>
28#include <linux/slab.h>
29#include <linux/interrupt.h> 28#include <linux/interrupt.h>
30#include <linux/pci.h> 29#include <linux/pci.h>
31#include <linux/init.h> 30#include <linux/init.h>
@@ -851,13 +850,15 @@ static void uli526x_rx_packet(struct net_device *dev, struct uli526x_board_info
851 850
852 if ( !(rdes0 & 0x8000) || 851 if ( !(rdes0 & 0x8000) ||
853 ((db->cr6_data & CR6_PM) && (rxlen>6)) ) { 852 ((db->cr6_data & CR6_PM) && (rxlen>6)) ) {
853 struct sk_buff *new_skb = NULL;
854
854 skb = rxptr->rx_skb_ptr; 855 skb = rxptr->rx_skb_ptr;
855 856
856 /* Good packet, send to upper layer */ 857 /* Good packet, send to upper layer */
857 /* Shorst packet used new SKB */ 858 /* Shorst packet used new SKB */
858 if ( (rxlen < RX_COPY_SIZE) && 859 if ((rxlen < RX_COPY_SIZE) &&
859 ( (skb = dev_alloc_skb(rxlen + 2) ) 860 (((new_skb = dev_alloc_skb(rxlen + 2)) != NULL))) {
860 != NULL) ) { 861 skb = new_skb;
861 /* size less than COPY_SIZE, allocate a rxlen SKB */ 862 /* size less than COPY_SIZE, allocate a rxlen SKB */
862 skb_reserve(skb, 2); /* 16byte align */ 863 skb_reserve(skb, 2); /* 16byte align */
863 memcpy(skb_put(skb, rxlen), 864 memcpy(skb_put(skb, rxlen),
@@ -1392,7 +1393,7 @@ static void update_cr6(u32 cr6_data, unsigned long ioaddr)
1392static void send_filter_frame(struct net_device *dev, int mc_cnt) 1393static void send_filter_frame(struct net_device *dev, int mc_cnt)
1393{ 1394{
1394 struct uli526x_board_info *db = netdev_priv(dev); 1395 struct uli526x_board_info *db = netdev_priv(dev);
1395 struct dev_mc_list *mcptr; 1396 struct netdev_hw_addr *ha;
1396 struct tx_desc *txptr; 1397 struct tx_desc *txptr;
1397 u16 * addrptr; 1398 u16 * addrptr;
1398 u32 * suptr; 1399 u32 * suptr;
@@ -1415,8 +1416,8 @@ static void send_filter_frame(struct net_device *dev, int mc_cnt)
1415 *suptr++ = 0xffff << FLT_SHIFT; 1416 *suptr++ = 0xffff << FLT_SHIFT;
1416 1417
1417 /* fit the multicast address */ 1418 /* fit the multicast address */
1418 netdev_for_each_mc_addr(mcptr, dev) { 1419 netdev_for_each_mc_addr(ha, dev) {
1419 addrptr = (u16 *) mcptr->dmi_addr; 1420 addrptr = (u16 *) ha->addr;
1420 *suptr++ = addrptr[0] << FLT_SHIFT; 1421 *suptr++ = addrptr[0] << FLT_SHIFT;
1421 *suptr++ = addrptr[1] << FLT_SHIFT; 1422 *suptr++ = addrptr[1] << FLT_SHIFT;
1422 *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 304f43866c44..18c8cedf4cac 100644
--- a/drivers/net/tulip/winbond-840.c
+++ b/drivers/net/tulip/winbond-840.c
@@ -114,7 +114,6 @@ static int full_duplex[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
114#include <linux/timer.h> 114#include <linux/timer.h>
115#include <linux/errno.h> 115#include <linux/errno.h>
116#include <linux/ioport.h> 116#include <linux/ioport.h>
117#include <linux/slab.h>
118#include <linux/interrupt.h> 117#include <linux/interrupt.h>
119#include <linux/pci.h> 118#include <linux/pci.h>
120#include <linux/dma-mapping.h> 119#include <linux/dma-mapping.h>
@@ -1367,13 +1366,15 @@ static u32 __set_rx_mode(struct net_device *dev)
1367 memset(mc_filter, 0xff, sizeof(mc_filter)); 1366 memset(mc_filter, 0xff, sizeof(mc_filter));
1368 rx_mode = RxAcceptBroadcast | AcceptMulticast | AcceptMyPhys; 1367 rx_mode = RxAcceptBroadcast | AcceptMulticast | AcceptMyPhys;
1369 } else { 1368 } else {
1370 struct dev_mc_list *mclist; 1369 struct netdev_hw_addr *ha;
1371 1370
1372 memset(mc_filter, 0, sizeof(mc_filter)); 1371 memset(mc_filter, 0, sizeof(mc_filter));
1373 netdev_for_each_mc_addr(mclist, dev) { 1372 netdev_for_each_mc_addr(ha, dev) {
1374 int filterbit = (ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26) ^ 0x3F; 1373 int filbit;
1375 filterbit &= 0x3f; 1374
1376 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);
1377 } 1378 }
1378 rx_mode = RxAcceptBroadcast | AcceptMulticast | AcceptMyPhys; 1379 rx_mode = RxAcceptBroadcast | AcceptMulticast | AcceptMyPhys;
1379 } 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) {