summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2012-03-05 19:00:34 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2012-03-06 09:45:57 +0100
commitf4b9f8a9afff83b084f93898d9c8297991187cf3 (patch)
treef6f8761465a711cab8b6968539f0a3701fb5423b /drivers/net
parentbeb36c510bd6abf80a20148bf165a990c69fed8a (diff)
downloadbarebox-f4b9f8a9afff83b084f93898d9c8297991187cf3.tar.gz
barebox-f4b9f8a9afff83b084f93898d9c8297991187cf3.tar.xz
macb: add timeout on send
This will ensure that we send an other packet only when the first one is send. Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/macb.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index ab0d1af30b..ea8ae82dfd 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -120,6 +120,11 @@ static int macb_send(struct eth_device *edev, void *packet,
barrier();
writel(MACB_BIT(TE) | MACB_BIT(RE) | MACB_BIT(TSTART), macb->regs + MACB_NCR);
+ wait_on_timeout(100 * MSECOND,
+ !(macb->tx_ring[0].ctrl & TXBUF_USED));
+
+ ctrl = macb->tx_ring[0].ctrl;
+
if (ctrl & TXBUF_UNDERRUN)
printf("TX underrun\n");
if (ctrl & TXBUF_EXHAUSTED)