diff options
Diffstat (limited to 'drivers/net/tulip/tulip_core.c')
| -rw-r--r-- | drivers/net/tulip/tulip_core.c | 27 | 
1 files changed, 15 insertions, 12 deletions
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c index 7f544ef2f5f..c4b7cd726b6 100644 --- a/drivers/net/tulip/tulip_core.c +++ b/drivers/net/tulip/tulip_core.c @@ -990,15 +990,15 @@ static void build_setup_frame_hash(u16 *setup_frm, struct net_device *dev)  {  	struct tulip_private *tp = netdev_priv(dev);  	u16 hash_table[32]; -	struct dev_mc_list *mclist; +	struct netdev_hw_addr *ha;  	int i;  	u16 *eaddrs;  	memset(hash_table, 0, sizeof(hash_table));  	set_bit_le(255, hash_table); 			/* Broadcast entry */  	/* This should work on big-endian machines as well. */ -	netdev_for_each_mc_addr(mclist, dev) { -		int index = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x1ff; +	netdev_for_each_mc_addr(ha, dev) { +		int index = ether_crc_le(ETH_ALEN, ha->addr) & 0x1ff;  		set_bit_le(index, hash_table);  	} @@ -1018,13 +1018,13 @@ static void build_setup_frame_hash(u16 *setup_frm, struct net_device *dev)  static void build_setup_frame_perfect(u16 *setup_frm, struct net_device *dev)  {  	struct tulip_private *tp = netdev_priv(dev); -	struct dev_mc_list *mclist; +	struct netdev_hw_addr *ha;  	u16 *eaddrs;  	/* We have <= 14 addresses so we can use the wonderful  	   16 address perfect filtering of the Tulip. */ -	netdev_for_each_mc_addr(mclist, dev) { -		eaddrs = (u16 *)mclist->dmi_addr; +	netdev_for_each_mc_addr(ha, dev) { +		eaddrs = (u16 *) ha->addr;  		*setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++;  		*setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++;  		*setup_frm++ = *eaddrs; *setup_frm++ = *eaddrs++; @@ -1061,7 +1061,7 @@ static void set_rx_mode(struct net_device *dev)  	} else	if (tp->flags & MC_HASH_ONLY) {  		/* Some work-alikes have only a 64-entry hash filter table. */  		/* Should verify correctness on big-endian/__powerpc__ */ -		struct dev_mc_list *mclist; +		struct netdev_hw_addr *ha;  		if (netdev_mc_count(dev) > 64) {  			/* Arbitrary non-effective limit. */  			tp->csr6 |= AcceptAllMulticast; @@ -1069,18 +1069,21 @@ static void set_rx_mode(struct net_device *dev)  		} else {  			u32 mc_filter[2] = {0, 0};		 /* Multicast hash filter */  			int filterbit; -			netdev_for_each_mc_addr(mclist, dev) { +			netdev_for_each_mc_addr(ha, dev) {  				if (tp->flags & COMET_MAC_ADDR) -					filterbit = ether_crc_le(ETH_ALEN, mclist->dmi_addr); +					filterbit = ether_crc_le(ETH_ALEN, +								 ha->addr);  				else -					filterbit = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26; +					filterbit = ether_crc(ETH_ALEN, +							      ha->addr) >> 26;  				filterbit &= 0x3f;  				mc_filter[filterbit >> 5] |= 1 << (filterbit & 31);  				if (tulip_debug > 2)  					dev_info(&dev->dev,  						 "Added filter for %pM  %08x bit %d\n", -						 mclist->dmi_addr, -						 ether_crc(ETH_ALEN, mclist->dmi_addr), filterbit); +						 ha->addr, +						 ether_crc(ETH_ALEN, ha->addr), +						 filterbit);  			}  			if (mc_filter[0] == tp->mc_filter[0]  &&  				mc_filter[1] == tp->mc_filter[1])  |