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".

Signed-off-by: Alexey Brodkin <abrod...@synopsys.com>

Cc: Joe Hershberger <joe.hershber...@ni.com>
Cc: Vipin Kumar <vipin.ku...@st.com>
Cc: Stefan Roese <s...@denx.de>
Cc: Mischa Jonker <mjon...@synopsys.com>
---
 drivers/net/designware.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index 53a95bf..d1cc25b 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -57,6 +57,7 @@ static void tx_descs_init(struct eth_device *dev)
                           sizeof(priv->tx_mac_descrtable));
 
        writel((ulong)&desc_table_p[0], &dma_p->txdesclistaddr);
+       priv->tx_currdescnum = 0;
 }
 
 static void rx_descs_init(struct eth_device *dev)
@@ -98,6 +99,7 @@ static void rx_descs_init(struct eth_device *dev)
                           sizeof(priv->rx_mac_descrtable));
 
        writel((ulong)&desc_table_p[0], &dma_p->rxdesclistaddr);
+       priv->rx_currdescnum = 0;
 }
 
 static void descs_init(struct eth_device *dev)
-- 
1.8.4.2

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to