summaryrefslogtreecommitdiffstats
path: root/drivers/net/macb.c
diff options
context:
space:
mode:
authorDave Kleikamp <shaggy@linux.vnet.ibm.com>2009-02-02 13:40:55 -0600
committerDave Kleikamp <shaggy@linux.vnet.ibm.com>2009-02-02 13:40:55 -0600
commit8db0c5d5ef3ab99fe9e5151872b75f45c4282e3c (patch)
treeda9759151e00221c58cdd9f4de893c0b08753670 /drivers/net/macb.c
parent1ad53a98c927a9b5b1b57288ac0edec562fbcf8d (diff)
parent45c82b5a770be66845687a7d027c8b52946d59af (diff)
downloadlinux-8db0c5d5ef3ab99fe9e5151872b75f45c4282e3c.tar.bz2
Merge branch 'master' of /home/shaggy/git/linus-clean/
Diffstat (limited to 'drivers/net/macb.c')
-rw-r--r--drivers/net/macb.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index a04da4ecaa88..f6c4936e2fa8 100644
--- a/drivers/net/macb.c
+++ b/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)))