[PATCH RFC net-next 1/5] net: stmmac: call phylink_start() and phylink_stop() in XDP functions
Russell King (Oracle)
linux at armlinux.org.uk
Thu Feb 27 16:02:10 PST 2025
On Thu, Feb 27, 2025 at 11:27:57PM +0100, Andrew Lunn wrote:
> On Thu, Feb 27, 2025 at 03:05:02PM +0000, Russell King (Oracle) wrote:
> > Phylink does not permit drivers to mess with the netif carrier, as
> > this will de-synchronise phylink with the MAC driver. Moreover,
> > setting and clearing the TE and RE bits via stmmac_mac_set() in this
> > path is also wrong as the link may not be up.
> >
> > Replace the netif_carrier_on(), netif_carrier_off() and
> > stmmac_mac_set() calls with the appropriate phylink_start() and
> > phylink_stop() calls, thereby allowing phylink to manage the netif
> > carrier and TE/RE bits through the .mac_link_up() and .mac_link_down()
> > methods.
> >
> > Note that RE should only be set after the DMA is ready to avoid the
> > receive FIFO between the MAC and DMA blocks overflowing, so
> > phylink_start() needs to be placed after DMA has been started.
>
> Sorry, i don't know enough about XDP to review this :-(
I suspect there aren't many people who could review it.
However, delving into the history, it seems that this commit was
responsible for introducing stmmac_xdp_{open,release}, thus
intrducing the fidding of the netif carrier which is prohibited
by phylink:
commit ac746c8520d9d056b6963ecca8ff1da9929d02f1
Author: Ong Boon Leong <boon.leong.ong at intel.com>
Date: Thu Nov 11 22:39:49 2021 +0800
net: stmmac: enhance XDP ZC driver level switching performance
but that commit was wrong for this very reason.
Didn't phylib used to not renegotiate the link if nothing changed
across a phy_stop()..phy_start() ?
I'm wondering whether my commit is in essence reverting this commit.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
More information about the linux-arm-kernel
mailing list