diff options
Diffstat (limited to 'drivers/net/ethernet/micrel/ksz884x.c')
| -rw-r--r-- | drivers/net/ethernet/micrel/ksz884x.c | 20 | 
1 files changed, 6 insertions, 14 deletions
diff --git a/drivers/net/ethernet/micrel/ksz884x.c b/drivers/net/ethernet/micrel/ksz884x.c index 318fee91c79..69e01977a1d 100644 --- a/drivers/net/ethernet/micrel/ksz884x.c +++ b/drivers/net/ethernet/micrel/ksz884x.c @@ -5407,8 +5407,8 @@ static int netdev_close(struct net_device *dev)  		/* Delay for receive task to stop scheduling itself. */  		msleep(2000 / HZ); -		tasklet_disable(&hw_priv->rx_tasklet); -		tasklet_disable(&hw_priv->tx_tasklet); +		tasklet_kill(&hw_priv->rx_tasklet); +		tasklet_kill(&hw_priv->tx_tasklet);  		free_irq(dev->irq, hw_priv->dev);  		transmit_cleanup(hw_priv, 0); @@ -5459,8 +5459,10 @@ static int prepare_hardware(struct net_device *dev)  	rc = request_irq(dev->irq, netdev_intr, IRQF_SHARED, dev->name, dev);  	if (rc)  		return rc; -	tasklet_enable(&hw_priv->rx_tasklet); -	tasklet_enable(&hw_priv->tx_tasklet); +	tasklet_init(&hw_priv->rx_tasklet, rx_proc_task, +		     (unsigned long) hw_priv); +	tasklet_init(&hw_priv->tx_tasklet, tx_proc_task, +		     (unsigned long) hw_priv);  	hw->promiscuous = 0;  	hw->all_multi = 0; @@ -7033,16 +7035,6 @@ static int __devinit pcidev_init(struct pci_dev *pdev,  	spin_lock_init(&hw_priv->hwlock);  	mutex_init(&hw_priv->lock); -	/* tasklet is enabled. */ -	tasklet_init(&hw_priv->rx_tasklet, rx_proc_task, -		(unsigned long) hw_priv); -	tasklet_init(&hw_priv->tx_tasklet, tx_proc_task, -		(unsigned long) hw_priv); - -	/* tasklet_enable will decrement the atomic counter. */ -	tasklet_disable(&hw_priv->rx_tasklet); -	tasklet_disable(&hw_priv->tx_tasklet); -  	for (i = 0; i < TOTAL_PORT_NUM; i++)  		init_waitqueue_head(&hw_priv->counter[i].counter);  |