aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/gianfar.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index a5b0038a8d98..fde430a0b84b 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -2943,14 +2943,22 @@ static irqreturn_t gfar_error(int irq, void *grp_id)
2943 if (events & IEVENT_CRL) 2943 if (events & IEVENT_CRL)
2944 dev->stats.tx_aborted_errors++; 2944 dev->stats.tx_aborted_errors++;
2945 if (events & IEVENT_XFUN) { 2945 if (events & IEVENT_XFUN) {
2946 unsigned long flags;
2947
2946 if (netif_msg_tx_err(priv)) 2948 if (netif_msg_tx_err(priv))
2947 printk(KERN_DEBUG "%s: TX FIFO underrun, " 2949 printk(KERN_DEBUG "%s: TX FIFO underrun, "
2948 "packet dropped.\n", dev->name); 2950 "packet dropped.\n", dev->name);
2949 dev->stats.tx_dropped++; 2951 dev->stats.tx_dropped++;
2950 priv->extra_stats.tx_underrun++; 2952 priv->extra_stats.tx_underrun++;
2951 2953
2954 local_irq_save(flags);
2955 lock_tx_qs(priv);
2956
2952 /* Reactivate the Tx Queues */ 2957 /* Reactivate the Tx Queues */
2953 gfar_write(&regs->tstat, gfargrp->tstat); 2958 gfar_write(&regs->tstat, gfargrp->tstat);
2959
2960 unlock_tx_qs(priv);
2961 local_irq_restore(flags);
2954 } 2962 }
2955 if (netif_msg_tx_err(priv)) 2963 if (netif_msg_tx_err(priv))
2956 printk(KERN_DEBUG "%s: Transmit Error\n", dev->name); 2964 printk(KERN_DEBUG "%s: Transmit Error\n", dev->name);