From b0c7aebdec867b4ab8e4b24c286f1c2eefc3c554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20R=C3=B6jfors?= Date: Sun, 18 Jan 2009 21:57:35 -0800 Subject: [PATCH] --- yaml --- r: 130129 b: refs/heads/master c: 39eddb4c3970e9aadbc87b8a7cab7b4fefff077f h: refs/heads/master i: 130127: 819327dc2f0ce0baf3219f313ba38eeca90ea23c v: v3 --- [refs] | 2 +- trunk/drivers/net/macb.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index e548db529b1c..159a291ee5b9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 24e94de41e76134fad05552588fe01af2cab1494 +refs/heads/master: 39eddb4c3970e9aadbc87b8a7cab7b4fefff077f diff --git a/trunk/drivers/net/macb.c b/trunk/drivers/net/macb.c index a04da4ecaa88..f6c4936e2fa8 100644 --- a/trunk/drivers/net/macb.c +++ b/trunk/drivers/net/macb.c @@ -321,6 +321,10 @@ static void macb_tx(struct macb *bp) printk(KERN_ERR "%s: TX underrun, resetting buffers\n", bp->dev->name); + /* Transfer ongoing, disable transmitter, to avoid confusion */ + if (status & MACB_BIT(TGO)) + macb_writel(bp, NCR, macb_readl(bp, NCR) & ~MACB_BIT(TE)); + head = bp->tx_head; /*Mark all the buffer as used to avoid sending a lost buffer*/ @@ -343,6 +347,10 @@ static void macb_tx(struct macb *bp) } bp->tx_head = bp->tx_tail = 0; + + /* Enable the transmitter again */ + if (status & MACB_BIT(TGO)) + macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TE)); } if (!(status & MACB_BIT(COMP)))