|
@@ -2943,14 +2943,22 @@ static irqreturn_t gfar_error(int irq, void *grp_id)
|
|
|
if (events & IEVENT_CRL)
|
|
|
dev->stats.tx_aborted_errors++;
|
|
|
if (events & IEVENT_XFUN) {
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
if (netif_msg_tx_err(priv))
|
|
|
printk(KERN_DEBUG "%s: TX FIFO underrun, "
|
|
|
"packet dropped.\n", dev->name);
|
|
|
dev->stats.tx_dropped++;
|
|
|
priv->extra_stats.tx_underrun++;
|
|
|
|
|
|
+ local_irq_save(flags);
|
|
|
+ lock_tx_qs(priv);
|
|
|
+
|
|
|
/* Reactivate the Tx Queues */
|
|
|
gfar_write(®s->tstat, gfargrp->tstat);
|
|
|
+
|
|
|
+ unlock_tx_qs(priv);
|
|
|
+ local_irq_restore(flags);
|
|
|
}
|
|
|
if (netif_msg_tx_err(priv))
|
|
|
printk(KERN_DEBUG "%s: Transmit Error\n", dev->name);
|