diff options
Diffstat (limited to 'drivers/net/ethernet/amd/declance.c')
| -rw-r--r-- | drivers/net/ethernet/amd/declance.c | 12 | 
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/ethernet/amd/declance.c b/drivers/net/ethernet/amd/declance.c index 82cc81385033..116997a8b593 100644 --- a/drivers/net/ethernet/amd/declance.c +++ b/drivers/net/ethernet/amd/declance.c @@ -260,6 +260,7 @@ struct lance_private {  	unsigned short busmaster_regval;  	struct timer_list       multicast_timer; +	struct net_device	*dev;  	/* Pointers to the ring buffers as seen from the CPU */  	char *rx_buf_ptr_cpu[RX_RING_SIZE]; @@ -1000,9 +1001,10 @@ static void lance_set_multicast(struct net_device *dev)  	netif_wake_queue(dev);  } -static void lance_set_multicast_retry(unsigned long _opaque) +static void lance_set_multicast_retry(struct timer_list *t)  { -	struct net_device *dev = (struct net_device *) _opaque; +	struct lance_private *lp = from_timer(lp, t, multicast_timer); +	struct net_device *dev = lp->dev;  	lance_set_multicast(dev);  } @@ -1246,9 +1248,9 @@ static int dec_lance_probe(struct device *bdev, const int type)  	 * can occur from interrupts (ex. IPv6).  So we  	 * use a timer to try again later when necessary. -DaveM  	 */ -	init_timer(&lp->multicast_timer); -	lp->multicast_timer.data = (unsigned long) dev; -	lp->multicast_timer.function = lance_set_multicast_retry; +	lp->dev = dev; +	timer_setup(&lp->multicast_timer, lance_set_multicast_retry, 0); +  	ret = register_netdev(dev);  	if (ret) {  |