aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-07-21 11:28:37 -0400
committerDavid S. Miller <davem@davemloft.net>2008-07-21 11:28:37 -0400
commit39d48157ac1a0ff3ec81212e5451bfd1bf5f50db (patch)
treeac792ae73a39e9f0b71346047c230e19aefccb19
parent14b395e35d1afdd8019d11b92e28041fad591b71 (diff)
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: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/atlx/atl1.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
index 3e22e7817bc3..f12e3d12474b 100644
--- a/drivers/net/atlx/atl1.c
+++ b/drivers/net/atlx/atl1.c
@@ -1308,7 +1308,6 @@ static u32 atl1_check_link(struct atl1_adapter *adapter)
1308 dev_info(&adapter->pdev->dev, "link is down\n"); 1308 dev_info(&adapter->pdev->dev, "link is down\n");
1309 adapter->link_speed = SPEED_0; 1309 adapter->link_speed = SPEED_0;
1310 netif_carrier_off(netdev); 1310 netif_carrier_off(netdev);
1311 netif_stop_queue(netdev);
1312 } 1311 }
1313 return 0; 1312 return 0;
1314 } 1313 }
@@ -1358,7 +1357,6 @@ static u32 atl1_check_link(struct atl1_adapter *adapter)
1358 if (!netif_carrier_ok(netdev)) { 1357 if (!netif_carrier_ok(netdev)) {
1359 /* Link down -> Up */ 1358 /* Link down -> Up */
1360 netif_carrier_on(netdev); 1359 netif_carrier_on(netdev);
1361 netif_wake_queue(netdev);
1362 } 1360 }
1363 return 0; 1361 return 0;
1364 } 1362 }
@@ -2627,6 +2625,7 @@ static s32 atl1_up(struct atl1_adapter *adapter)
2627 mod_timer(&adapter->watchdog_timer, jiffies); 2625 mod_timer(&adapter->watchdog_timer, jiffies);
2628 atlx_irq_enable(adapter); 2626 atlx_irq_enable(adapter);
2629 atl1_check_link(adapter); 2627 atl1_check_link(adapter);
2628 netif_start_queue(netdev);
2630 return 0; 2629 return 0;
2631 2630
2632err_up: 2631err_up: