[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z8B-DPGhuibIjiA7@shell.armlinux.org.uk>
Date: Thu, 27 Feb 2025 15:00:28 +0000
From: "Russell King (Oracle)" <linux@...linux.org.uk>
To: Andrew Lunn <andrew@...n.ch>, Heiner Kallweit <hkallweit1@...il.com>
Cc: Alexandre Torgue <alexandre.torgue@...s.st.com>,
Andrew Lunn <andrew+netdev@...n.ch>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>, Jon Hunter <jonathanh@...dia.com>,
linux-arm-kernel@...ts.infradead.org,
linux-stm32@...md-mailman.stormreply.com,
Maxime Coquelin <mcoquelin.stm32@...il.com>, netdev@...r.kernel.org,
Paolo Abeni <pabeni@...hat.com>,
Thierry Reding <treding@...dia.com>
Subject: [PATCH RFC 0/5] net: stmmac: fix setting RE and TE inappropriately
Hi,
Note: this series depends on "net: stmmac: fix resume failures due to
RX clock".
This series addresses inappropriate setting of the receive and transmit
enables in the GMAC control register.
The databook is clear for the receive enable, that this should not be
set until the initialisation of the MAC and DMA has been completed.
The previous RFC patch series ("net: stmmac: fix resume failures due to
RX clock") which moves phylink_resume() solves that, but we are left
with these enables being set when the link is down. This is not correct.
Sadly, when XDP support was added, new calls to netif_carrier_on() and
netif_carrier_off() were added, which are incorrect in drivers that
make use of phylink - by doing so, the driver has no guarantee that
the .mac_link_up() and .mac_link_down() methods will be called in
sequence anymore.
Solving this requires a number of changes. First, fixing XDP to call
into phylink to bring the link down. This removes a source of
phylink method de-sync mentioned above.
Then we remove the racy teardown in the driver's remove method -
nothing should be torn down while userspace still has access to the
netdev.
Then we remove an unnecessary call to disable the enable bits in
the .ndo_stop() method.
Finally, we remove manipulation of the RE and TE bits from the
start_tx(), stop_tx(), start_rx() and stop_rx() methods.
drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c | 8 --------
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c | 12 ------------
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 22 ++++++----------------
3 files changed, 6 insertions(+), 36 deletions(-)
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
Powered by blists - more mailing lists