]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: sun8i_emac: Reduce cache maintenance on TX descriptor init
authorAndre Przywara <andre.przywara@arm.com>
Mon, 6 Jul 2020 00:40:38 +0000 (01:40 +0100)
committerJagan Teki <jagan@amarulasolutions.com>
Wed, 21 Oct 2020 18:14:02 +0000 (23:44 +0530)
When we initialise the TX descriptors, there is no need yet to clean
them all to memory, as they don't contain any data yet. Later we will
touch and clean each descriptor anyway.
However we tell the MAC about the beginning of the chain, so we have to
clean at least the first descriptor, to make it clear that this is empty
and there are no packets to transfer yet.

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 c567b9e0827417ae3ae2c45889cb4306283a562d..335c85f3c2636972ac8e92d2f1db91a81d0251e7 100644 (file)
@@ -431,10 +431,10 @@ static void tx_descs_init(struct emac_eth_dev *priv)
        /* Correcting the last pointer of the chain */
        desc_p->next =  (uintptr_t)&desc_table_p[0];
 
-       /* Flush all Tx buffer descriptors */
+       /* Flush the first TX buffer descriptor we will tell the MAC about. */
        flush_dcache_range((uintptr_t)priv->tx_chain,
                           (uintptr_t)priv->tx_chain +
-                       sizeof(priv->tx_chain));
+                          sizeof(priv->tx_chain[0]));
 
        writel((uintptr_t)&desc_table_p[0], priv->mac_reg + EMAC_TX_DMA_DESC);
        priv->tx_currdescnum = 0;