]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: sun8i_emac: Don't hand out TX descriptor too early
authorAndre Przywara <andre.przywara@arm.com>
Mon, 6 Jul 2020 00:40:33 +0000 (01:40 +0100)
committerJagan Teki <jagan@amarulasolutions.com>
Wed, 21 Oct 2020 18:12:36 +0000 (23:42 +0530)
When initialising the TX DMA descriptors, we mostly chain them up,
but of course don't know about any data or its length yet.
That means they are still invalid, and the OWN bit should NOT be set
yet.

In fact when we later tell the MAC about the beginning of the chain,
and enable TX DMA in the start() routine, the MAC will start fetching
TX descriptors prematurely, as it can be seen by dumping the TX_DMA_STA
and TX_DMA_CUR_DESC registers.

Clear the owner bit, to not give the MAC the wrong illusion that it
owns the descriptors already.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Tested-by: Amit Singh Tomar <amittomer25@gmail.com> # Pine64+
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
drivers/net/sun8i_emac.c

index ddbcf2634707d498dc93228b84523185c97469de..9f31e6de6c7b4c448e5a646a51e60ccc4752d707 100644 (file)
@@ -415,7 +415,7 @@ static void tx_descs_init(struct emac_eth_dev *priv)
                desc_p->buf_addr = (uintptr_t)&txbuffs[idx * CONFIG_ETH_BUFSIZE]
                        ;
                desc_p->next = (uintptr_t)&desc_table_p[idx + 1];
-               desc_p->status = (1 << 31);
+               desc_p->status = 0;
                desc_p->st = 0;
        }