提交 0236ebb7 编写于 作者: M Malli Chilakala 提交者: Jeff Garzik

[PATCH] e100: Synchronize interface link state with poll routine

Synchronize interface link state with e100 poll routine
Signed-off-by: NMallikarjuna R Chilakala <mallikarjuna.chilakala@intel.com>
Signed-off-by: NGanesh Venkatesan <ganesh.venkatesan@intel.com>
Signed-off-by: NJohn Ronciak <john.ronciak@intel.com>
上级 1f53367d
...@@ -1743,8 +1743,11 @@ static int e100_up(struct nic *nic) ...@@ -1743,8 +1743,11 @@ static int e100_up(struct nic *nic)
if((err = request_irq(nic->pdev->irq, e100_intr, SA_SHIRQ, if((err = request_irq(nic->pdev->irq, e100_intr, SA_SHIRQ,
nic->netdev->name, nic->netdev))) nic->netdev->name, nic->netdev)))
goto err_no_irq; goto err_no_irq;
e100_enable_irq(nic);
netif_wake_queue(nic->netdev); netif_wake_queue(nic->netdev);
netif_poll_enable(nic->netdev);
/* enable ints _after_ enabling poll, preventing a race between
* disable ints+schedule */
e100_enable_irq(nic);
return 0; return 0;
err_no_irq: err_no_irq:
...@@ -1758,11 +1761,13 @@ static int e100_up(struct nic *nic) ...@@ -1758,11 +1761,13 @@ static int e100_up(struct nic *nic)
static void e100_down(struct nic *nic) static void e100_down(struct nic *nic)
{ {
/* wait here for poll to complete */
netif_poll_disable(nic->netdev);
netif_stop_queue(nic->netdev);
e100_hw_reset(nic); e100_hw_reset(nic);
free_irq(nic->pdev->irq, nic->netdev); free_irq(nic->pdev->irq, nic->netdev);
del_timer_sync(&nic->watchdog); del_timer_sync(&nic->watchdog);
netif_carrier_off(nic->netdev); netif_carrier_off(nic->netdev);
netif_stop_queue(nic->netdev);
e100_clean_cbs(nic); e100_clean_cbs(nic);
e100_rx_clean_list(nic); e100_rx_clean_list(nic);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册