Commit 4c3146e0 authored by Scott Feldman's avatar Scott Feldman Committed by Jeff Garzik

[PATCH] e100: fix sender hang after tx timeout

* When e100 experiences a transmit timeout, it calls e100_up() to reset
the device.  e100_up calls netif_start_queue to release any flow block,
but doesn't reschedule.  This patch unblocks the flow and schedules Tx.
Jay Vosburgh [fubar@us.ibm.com].

Signed-off-by: scott.feldman@intel.com
parent f690ecaf
...@@ -1659,17 +1659,16 @@ static int e100_up(struct nic *nic) ...@@ -1659,17 +1659,16 @@ static int e100_up(struct nic *nic)
goto err_clean_cbs; goto err_clean_cbs;
e100_set_multicast_list(nic->netdev); e100_set_multicast_list(nic->netdev);
e100_start_receiver(nic); e100_start_receiver(nic);
netif_start_queue(nic->netdev);
mod_timer(&nic->watchdog, jiffies); mod_timer(&nic->watchdog, jiffies);
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); e100_enable_irq(nic);
netif_wake_queue(nic->netdev);
return 0; return 0;
err_no_irq: err_no_irq:
del_timer_sync(&nic->watchdog); del_timer_sync(&nic->watchdog);
netif_stop_queue(nic->netdev);
err_clean_cbs: err_clean_cbs:
e100_clean_cbs(nic); e100_clean_cbs(nic);
err_rx_clean_list: err_rx_clean_list:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment