diff options
Diffstat (limited to 'drivers/net/s2io.c')
| -rw-r--r-- | drivers/net/s2io.c | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index 3c4836d0898f..43bc66aa8405 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c @@ -523,7 +523,7 @@ module_param_array(rts_frm_len, uint, NULL, 0);   * S2IO device table.   * This table lists all the devices that this driver supports.   */ -static struct pci_device_id s2io_tbl[] __devinitdata = { +static DEFINE_PCI_DEVICE_TABLE(s2io_tbl) = {  	{PCI_VENDOR_ID_S2IO, PCI_DEVICE_ID_S2IO_WIN,  	 PCI_ANY_ID, PCI_ANY_ID},  	{PCI_VENDOR_ID_S2IO, PCI_DEVICE_ID_S2IO_UNI, @@ -5055,8 +5055,8 @@ static void s2io_set_multicast(struct net_device *dev)  	}  	/*  Update individual M_CAST address list */ -	if ((!sp->m_cast_flg) && dev->mc_count) { -		if (dev->mc_count > +	if ((!sp->m_cast_flg) && netdev_mc_count(dev)) { +		if (netdev_mc_count(dev) >  		    (config->max_mc_addr - config->max_mac_addr)) {  			DBG_PRINT(ERR_DBG,  				  "%s: No more Rx filters can be added - " @@ -5066,7 +5066,7 @@ static void s2io_set_multicast(struct net_device *dev)  		}  		prev_cnt = sp->mc_addr_count; -		sp->mc_addr_count = dev->mc_count; +		sp->mc_addr_count = netdev_mc_count(dev);  		/* Clear out the previous list of Mc in the H/W. */  		for (i = 0; i < prev_cnt; i++) { @@ -5092,8 +5092,8 @@ static void s2io_set_multicast(struct net_device *dev)  		}  		/* Create the new Rx filter list and update the same in H/W. */ -		for (i = 0, mclist = dev->mc_list; i < dev->mc_count; -		     i++, mclist = mclist->next) { +		i = 0; +		netdev_for_each_mc_addr(mclist, dev) {  			memcpy(sp->usr_addrs[i].addr, mclist->dmi_addr,  			       ETH_ALEN);  			mac_addr = 0; @@ -5121,6 +5121,7 @@ static void s2io_set_multicast(struct net_device *dev)  					  dev->name);  				return;  			} +			i++;  		}  	}  }  |