aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Przywara2020-07-06 01:40:38 +0100
committerJagan Teki2020-10-21 23:44:02 +0530
commited909de5d3300f473e5ee5a520267c3e04b43b76 (patch)
treeb3de162dd045c17f1c772bf9c9de871ab2418aef
parent69853123c513cf478992ca44e8a39afd651811a9 (diff)
net: sun8i_emac: Reduce cache maintenance on TX descriptor init
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>
-rw-r--r--drivers/net/sun8i_emac.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
index c567b9e0827..335c85f3c26 100644
--- a/drivers/net/sun8i_emac.c
+++ b/drivers/net/sun8i_emac.c
@@ -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;