提交 39d48157 编写于 作者: D David S. Miller

atl1: Do not wake queue before queue has been started.

Based upon a bug report by Alexey Dobriyan, the patch is
also tested by him and confirmed to fix the problem.

Packet flow during link state events should not be done by
waking and stopping the TX queue anyways, that is handled
transparently by netif_carrier_{on,off}().

So, remove the netif_{wake,stop}_queue() calls in the link
check code, and add the necessary netif_start_queue() call
to atl1_up().
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 14b395e3
...@@ -1308,7 +1308,6 @@ static u32 atl1_check_link(struct atl1_adapter *adapter) ...@@ -1308,7 +1308,6 @@ static u32 atl1_check_link(struct atl1_adapter *adapter)
dev_info(&adapter->pdev->dev, "link is down\n"); dev_info(&adapter->pdev->dev, "link is down\n");
adapter->link_speed = SPEED_0; adapter->link_speed = SPEED_0;
netif_carrier_off(netdev); netif_carrier_off(netdev);
netif_stop_queue(netdev);
} }
return 0; return 0;
} }
...@@ -1358,7 +1357,6 @@ static u32 atl1_check_link(struct atl1_adapter *adapter) ...@@ -1358,7 +1357,6 @@ static u32 atl1_check_link(struct atl1_adapter *adapter)
if (!netif_carrier_ok(netdev)) { if (!netif_carrier_ok(netdev)) {
/* Link down -> Up */ /* Link down -> Up */
netif_carrier_on(netdev); netif_carrier_on(netdev);
netif_wake_queue(netdev);
} }
return 0; return 0;
} }
...@@ -2627,6 +2625,7 @@ static s32 atl1_up(struct atl1_adapter *adapter) ...@@ -2627,6 +2625,7 @@ static s32 atl1_up(struct atl1_adapter *adapter)
mod_timer(&adapter->watchdog_timer, jiffies); mod_timer(&adapter->watchdog_timer, jiffies);
atlx_irq_enable(adapter); atlx_irq_enable(adapter);
atl1_check_link(adapter); atl1_check_link(adapter);
netif_start_queue(netdev);
return 0; return 0;
err_up: err_up:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册