Thread (14 messages) 14 messages, 3 authors, 2021-01-27

RE: [PATCH V3 2/6] net: stmmac: stop each tx channel independently

flat view

From: Joakim Zhang <hidden>
Date: 2021-01-27 04:32:50

-----Original Message-----
From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Sent: 2021年1月27日 7:10
To: Joakim Zhang <redacted>
Cc: Giuseppe Cavallaro <redacted>; Alexandre Torgue
[off-list ref]; Jose Abreu [off-list ref]; David
Miller [off-list ref]; Jakub Kicinski [off-list ref]; Network
Development [off-list ref]; dl-linux-imx [off-list ref];
Andrew Lunn [off-list ref]; Florian Fainelli [off-list ref]
Subject: Re: [PATCH V3 2/6] net: stmmac: stop each tx channel independently

On Tue, Jan 26, 2021 at 7:03 AM Joakim Zhang [off-list ref]
wrote:
quoted
If clear GMAC_CONFIG_TE bit, it would stop all tx channels, but users
may only want to stop secific tx channel.
secific -> specific
Thanks. Will correct it.
quoted
Fixes: 48863ce5940f ("stmmac: add DMA support for GMAC 4.xx")
Signed-off-by: Joakim Zhang <redacted>
---
 drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c | 4 ----
 1 file changed, 4 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c
b/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c
index 0b4ee2dbb691..71e50751ef2d 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c
@@ -53,10 +53,6 @@ void dwmac4_dma_stop_tx(void __iomem *ioaddr,
u32
quoted
chan)

        value &= ~DMA_CONTROL_ST;
        writel(value, ioaddr + DMA_CHAN_TX_CONTROL(chan));
-
-       value = readl(ioaddr + GMAC_CONFIG);
-       value &= ~GMAC_CONFIG_TE;
-       writel(value, ioaddr + GMAC_CONFIG);
Is it safe to partially unwind the actions of dwmac4_dma_start_tx

And would the same reasoning apply to dwmac4_(dma_start|stop)_rx?
Sorry, I am not quite understand what you means.

What this patch did is to align to dwmac4_(dma_start|stop)_rx.

dwmac4_dma_start_rx: assert DMA_CONTROL_SR bit for each channel, and assert GMAC_CONFIG_RE bit which targets all channels.
dwmac4_dma_stop_rx: only need clear DMA_CONTROL_SR bit for each channel.

After this patch applied:
dwmac4_dma_start_tx: assert DMA_CONTROL_ST bit for each channel, and assert GMAC_CONFIG_TE bit which targets all channels.
dwmac4_dma_stop_tx: only need clear DMA_CONTROL_ST bit for each channel.

You can refer to drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c, this is the correct sequence. 

Thanks.

Best Regards,
Joakim Zhang
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help