diff options
-rw-r--r-- | drivers/net/macb.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/macb.c b/drivers/net/macb.c index 46073de290cf..9fcc717f4d1a 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c | |||
@@ -316,10 +316,11 @@ static void macb_tx(struct macb *bp) | |||
316 | dev_dbg(&bp->pdev->dev, "macb_tx status = %02lx\n", | 316 | dev_dbg(&bp->pdev->dev, "macb_tx status = %02lx\n", |
317 | (unsigned long)status); | 317 | (unsigned long)status); |
318 | 318 | ||
319 | if (status & MACB_BIT(UND)) { | 319 | if (status & (MACB_BIT(UND) | MACB_BIT(TSR_RLE))) { |
320 | int i; | 320 | int i; |
321 | printk(KERN_ERR "%s: TX underrun, resetting buffers\n", | 321 | printk(KERN_ERR "%s: TX %s, resetting buffers\n", |
322 | bp->dev->name); | 322 | bp->dev->name, status & MACB_BIT(UND) ? |
323 | "underrun" : "retry limit exceeded"); | ||
323 | 324 | ||
324 | /* Transfer ongoing, disable transmitter, to avoid confusion */ | 325 | /* Transfer ongoing, disable transmitter, to avoid confusion */ |
325 | if (status & MACB_BIT(TGO)) | 326 | if (status & MACB_BIT(TGO)) |
@@ -590,7 +591,8 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id) | |||
590 | } | 591 | } |
591 | } | 592 | } |
592 | 593 | ||
593 | if (status & (MACB_BIT(TCOMP) | MACB_BIT(ISR_TUND))) | 594 | if (status & (MACB_BIT(TCOMP) | MACB_BIT(ISR_TUND) | |
595 | MACB_BIT(ISR_RLE))) | ||
594 | macb_tx(bp); | 596 | macb_tx(bp); |
595 | 597 | ||
596 | /* | 598 | /* |