|
@@ -1667,6 +1667,10 @@ static void rtl8139_tx_timeout_task (struct work_struct *work)
|
|
int i;
|
|
int i;
|
|
u8 tmp8;
|
|
u8 tmp8;
|
|
|
|
|
|
|
|
+ napi_disable(&tp->napi);
|
|
|
|
+ netif_stop_queue(dev);
|
|
|
|
+ synchronize_sched();
|
|
|
|
+
|
|
netdev_dbg(dev, "Transmit timeout, status %02x %04x %04x media %02x\n",
|
|
netdev_dbg(dev, "Transmit timeout, status %02x %04x %04x media %02x\n",
|
|
RTL_R8(ChipCmd), RTL_R16(IntrStatus),
|
|
RTL_R8(ChipCmd), RTL_R16(IntrStatus),
|
|
RTL_R16(IntrMask), RTL_R8(MediaStatus));
|
|
RTL_R16(IntrMask), RTL_R8(MediaStatus));
|
|
@@ -1696,10 +1700,10 @@ static void rtl8139_tx_timeout_task (struct work_struct *work)
|
|
spin_unlock_irq(&tp->lock);
|
|
spin_unlock_irq(&tp->lock);
|
|
|
|
|
|
/* ...and finally, reset everything */
|
|
/* ...and finally, reset everything */
|
|
- if (netif_running(dev)) {
|
|
|
|
- rtl8139_hw_start (dev);
|
|
|
|
- netif_wake_queue (dev);
|
|
|
|
- }
|
|
|
|
|
|
+ napi_enable(&tp->napi);
|
|
|
|
+ rtl8139_hw_start(dev);
|
|
|
|
+ netif_wake_queue(dev);
|
|
|
|
+
|
|
spin_unlock_bh(&tp->rx_lock);
|
|
spin_unlock_bh(&tp->rx_lock);
|
|
}
|
|
}
|
|
|
|
|