From: Alexey Brodkin Date: Mon, 13 Jan 2014 09:28:38 +0000 (+0400) Subject: net/designware: add explicit reset of {tx|rx}_currdescnum X-Git-Tag: v2014.04-rc1~85 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=74cb708d5853854d28547b917d4b8a5588ee7324;p=u-boot 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". Cc: Joe Hershberger Cc: Vipin Kumar Cc: Stefan Roese Cc: Mischa Jonker Signed-off-by: Alexey Brodkin --- diff --git a/drivers/net/designware.c b/drivers/net/designware.c index 22155b4d94..186808943a 100644 --- a/drivers/net/designware.c +++ b/drivers/net/designware.c @@ -52,6 +52,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) @@ -79,6 +80,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)