aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Brandeburg <jesse.brandeburg@intel.com>2008-07-08 18:51:07 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-07-11 01:20:26 -0400
commit0f8ecbadae4bd9f085e605c08347ed3077a6146f (patch)
tree7b315dc9d51bf729056c977593c322b33c271ae9
parent1a342d224afb03196e3df28a271f3ddf3787e8f4 (diff)
ixgb: maybe stop tx port missed a piece
back when maybe stop tx was added to the ixgb driver some mistakes were made and the driver a) didn't remove the tx lock, which is now un-necessary b) didn't change the restart code to be compliant with maybe_stop Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
-rw-r--r--drivers/net/ixgb/ixgb_main.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index 41f3adf5f375..04cac41f7d5e 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -1855,12 +1855,17 @@ ixgb_clean_tx_irq(struct ixgb_adapter *adapter)
1855 1855
1856 tx_ring->next_to_clean = i; 1856 tx_ring->next_to_clean = i;
1857 1857
1858 if (unlikely(netif_queue_stopped(netdev))) { 1858 if (unlikely(cleaned && netif_carrier_ok(netdev) &&
1859 spin_lock(&adapter->tx_lock); 1859 IXGB_DESC_UNUSED(tx_ring) >= DESC_NEEDED)) {
1860 if (netif_queue_stopped(netdev) && netif_carrier_ok(netdev) && 1860 /* Make sure that anybody stopping the queue after this
1861 (IXGB_DESC_UNUSED(tx_ring) >= DESC_NEEDED)) 1861 * sees the new next_to_clean. */
1862 smp_mb();
1863
1864 if (netif_queue_stopped(netdev) &&
1865 !(test_bit(__IXGB_DOWN, &adapter->flags))) {
1862 netif_wake_queue(netdev); 1866 netif_wake_queue(netdev);
1863 spin_unlock(&adapter->tx_lock); 1867 ++adapter->restart_queue;
1868 }
1864 } 1869 }
1865 1870
1866 if(adapter->detect_tx_hung) { 1871 if(adapter->detect_tx_hung) {