Message ID | E1tnfRt-0057SR-Hx@rmk-PC.armlinux.org.uk (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | net: stmmac: fix setting RE and TE inappropriately | expand |
On Thu, Feb 27, 2025 at 03:05:17PM +0000, Russell King (Oracle) wrote: > Remove fiddling with _TE and _RE in the GMAC control register in the > start_tx/stop_tx/start_rx/stop_rx() methods as this should be handled > by phylink and not during initialisation. Maybe the commit message could be extended. 'by phylink', i think you actually mean via the stmmac_mac_link_up() and stmmac_mac_link_down() callbacks which call stmmac_mac_set(). Bit of a nitpick, so: Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
On Thu, 27 Feb 2025 15:05:17 +0000 "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk> wrote: > Remove fiddling with _TE and _RE in the GMAC control register in the > start_tx/stop_tx/start_rx/stop_rx() methods as this should be handled > by phylink and not during initialisation. > > Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > --- > drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c | 8 -------- > drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c | 12 ------------ > 2 files changed, 20 deletions(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c > index 57c03d491774..61584b569be7 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c > @@ -50,10 +50,6 @@ void dwmac4_dma_start_tx(struct stmmac_priv *priv, void __iomem *ioaddr, > > value |= DMA_CONTROL_ST; > writel(value, ioaddr + DMA_CHAN_TX_CONTROL(dwmac4_addrs, chan)); > - > - value = readl(ioaddr + GMAC_CONFIG); > - value |= GMAC_CONFIG_TE; > - writel(value, ioaddr + GMAC_CONFIG); > } > > void dwmac4_dma_stop_tx(struct stmmac_priv *priv, void __iomem *ioaddr, > @@ -77,10 +73,6 @@ void dwmac4_dma_start_rx(struct stmmac_priv *priv, void __iomem *ioaddr, > value |= DMA_CONTROL_SR; > > writel(value, ioaddr + DMA_CHAN_RX_CONTROL(dwmac4_addrs, chan)); > - > - value = readl(ioaddr + GMAC_CONFIG); > - value |= GMAC_CONFIG_RE; > - writel(value, ioaddr + GMAC_CONFIG); > } > > void dwmac4_dma_stop_rx(struct stmmac_priv *priv, void __iomem *ioaddr, > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c > index 7840bc403788..cba12edc1477 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c > +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c > @@ -288,10 +288,6 @@ static void dwxgmac2_dma_start_tx(struct stmmac_priv *priv, > value = readl(ioaddr + XGMAC_DMA_CH_TX_CONTROL(chan)); > value |= XGMAC_TXST; > writel(value, ioaddr + XGMAC_DMA_CH_TX_CONTROL(chan)); > - > - value = readl(ioaddr + XGMAC_TX_CONFIG); > - value |= XGMAC_CONFIG_TE; > - writel(value, ioaddr + XGMAC_TX_CONFIG); > } > > static void dwxgmac2_dma_stop_tx(struct stmmac_priv *priv, void __iomem *ioaddr, > @@ -302,10 +298,6 @@ static void dwxgmac2_dma_stop_tx(struct stmmac_priv *priv, void __iomem *ioaddr, > value = readl(ioaddr + XGMAC_DMA_CH_TX_CONTROL(chan)); > value &= ~XGMAC_TXST; > writel(value, ioaddr + XGMAC_DMA_CH_TX_CONTROL(chan)); > - > - value = readl(ioaddr + XGMAC_TX_CONFIG); > - value &= ~XGMAC_CONFIG_TE; > - writel(value, ioaddr + XGMAC_TX_CONFIG); > } > > static void dwxgmac2_dma_start_rx(struct stmmac_priv *priv, > @@ -316,10 +308,6 @@ static void dwxgmac2_dma_start_rx(struct stmmac_priv *priv, > value = readl(ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan)); > value |= XGMAC_RXST; > writel(value, ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan)); > - > - value = readl(ioaddr + XGMAC_RX_CONFIG); > - value |= XGMAC_CONFIG_RE; > - writel(value, ioaddr + XGMAC_RX_CONFIG); > } > > static void dwxgmac2_dma_stop_rx(struct stmmac_priv *priv, void __iomem *ioaddr, Tested-by: Furong Xu <0x1207@gmail.com>
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c index 57c03d491774..61584b569be7 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c @@ -50,10 +50,6 @@ void dwmac4_dma_start_tx(struct stmmac_priv *priv, void __iomem *ioaddr, value |= DMA_CONTROL_ST; writel(value, ioaddr + DMA_CHAN_TX_CONTROL(dwmac4_addrs, chan)); - - value = readl(ioaddr + GMAC_CONFIG); - value |= GMAC_CONFIG_TE; - writel(value, ioaddr + GMAC_CONFIG); } void dwmac4_dma_stop_tx(struct stmmac_priv *priv, void __iomem *ioaddr, @@ -77,10 +73,6 @@ void dwmac4_dma_start_rx(struct stmmac_priv *priv, void __iomem *ioaddr, value |= DMA_CONTROL_SR; writel(value, ioaddr + DMA_CHAN_RX_CONTROL(dwmac4_addrs, chan)); - - value = readl(ioaddr + GMAC_CONFIG); - value |= GMAC_CONFIG_RE; - writel(value, ioaddr + GMAC_CONFIG); } void dwmac4_dma_stop_rx(struct stmmac_priv *priv, void __iomem *ioaddr, diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c index 7840bc403788..cba12edc1477 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c @@ -288,10 +288,6 @@ static void dwxgmac2_dma_start_tx(struct stmmac_priv *priv, value = readl(ioaddr + XGMAC_DMA_CH_TX_CONTROL(chan)); value |= XGMAC_TXST; writel(value, ioaddr + XGMAC_DMA_CH_TX_CONTROL(chan)); - - value = readl(ioaddr + XGMAC_TX_CONFIG); - value |= XGMAC_CONFIG_TE; - writel(value, ioaddr + XGMAC_TX_CONFIG); } static void dwxgmac2_dma_stop_tx(struct stmmac_priv *priv, void __iomem *ioaddr, @@ -302,10 +298,6 @@ static void dwxgmac2_dma_stop_tx(struct stmmac_priv *priv, void __iomem *ioaddr, value = readl(ioaddr + XGMAC_DMA_CH_TX_CONTROL(chan)); value &= ~XGMAC_TXST; writel(value, ioaddr + XGMAC_DMA_CH_TX_CONTROL(chan)); - - value = readl(ioaddr + XGMAC_TX_CONFIG); - value &= ~XGMAC_CONFIG_TE; - writel(value, ioaddr + XGMAC_TX_CONFIG); } static void dwxgmac2_dma_start_rx(struct stmmac_priv *priv, @@ -316,10 +308,6 @@ static void dwxgmac2_dma_start_rx(struct stmmac_priv *priv, value = readl(ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan)); value |= XGMAC_RXST; writel(value, ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan)); - - value = readl(ioaddr + XGMAC_RX_CONFIG); - value |= XGMAC_CONFIG_RE; - writel(value, ioaddr + XGMAC_RX_CONFIG); } static void dwxgmac2_dma_stop_rx(struct stmmac_priv *priv, void __iomem *ioaddr,
Remove fiddling with _TE and _RE in the GMAC control register in the start_tx/stop_tx/start_rx/stop_rx() methods as this should be handled by phylink and not during initialisation. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> --- drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c | 8 -------- drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c | 12 ------------ 2 files changed, 20 deletions(-)