summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorIan Abbott <abbotti@mev.co.uk>2016-11-07 18:16:24 +0000
committerSascha Hauer <s.hauer@pengutronix.de>2016-11-09 09:09:14 +0100
commitc1c0203b68a7e52e1c7550c910d7f019c8b8f090 (patch)
tree34e9d2d741ec87105e77441ba6e1114fefa002c4 /drivers/net
parent184ef5a1ffd43f02c3250c1e32fe9324acd9ece8 (diff)
downloadbarebox-c1c0203b68a7e52e1c7550c910d7f019c8b8f090.tar.gz
barebox-c1c0203b68a7e52e1c7550c910d7f019c8b8f090.tar.xz
net/designware: add explicit reset of {tx|rx}_currdescnum
Driver "init" function might be called multiple times. On every "init" Tx/Rx buffer descriptors are initialized: "descs_init" -> "{tx|rx}_descs_init". In its turn those init functions set MAC's "{tx|rx}desclistaddr" to point on the first buffer descriptor in the list. So CPU to start operation from the first buffer descriptor as well after every "init" we have to reset "{tx|rx}_currdescnum". [Original U-Boot patch by Alexey Brodkin <abrodkin@synopsys.com>] Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/designware.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index 6702d4c4af..bd20a8793a 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -176,6 +176,7 @@ static void tx_descs_init(struct eth_device *dev)
desc_p->dmamac_next = &desc_table_p[0];
writel((ulong)&desc_table_p[0], &dma_p->txdesclistaddr);
+ priv->tx_currdescnum = 0;
}
static void rx_descs_init(struct eth_device *dev)
@@ -207,6 +208,7 @@ static void rx_descs_init(struct eth_device *dev)
desc_p->dmamac_next = &desc_table_p[0];
writel((ulong)&desc_table_p[0], &dma_p->rxdesclistaddr);
+ priv->rx_currdescnum = 0;
}
static void descs_init(struct eth_device *dev)