Message ID | e3473452-a1f9-efcf-5fdd-02b6f44c3fcd@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 2c87c6f9fbddc5b84d67b2fa3f432fcac6d99d93 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] net: phy: meson-gxl: improve link-up behavior | expand |
Hello: This patch was applied to netdev/net.git (master) by Jakub Kicinski <kuba@kernel.org>: On Wed, 9 Mar 2022 22:04:47 +0100 you wrote: > Sometimes the link comes up but no data flows. This patch fixes > this behavior. It's not clear what's the root cause of the issue. > > According to the tests one other link-up issue remains. > In very rare cases the link isn't even reported as up. > > Fixes: 84c8f773d2dc ("net: phy: meson-gxl: remove the use of .ack_callback()") > Tested-by: Erico Nunes <nunes.erico@gmail.com> > Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> > > [...] Here is the summary with links: - [net] net: phy: meson-gxl: improve link-up behavior https://git.kernel.org/netdev/net/c/2c87c6f9fbdd You are awesome, thank you!
diff --git a/drivers/net/phy/meson-gxl.c b/drivers/net/phy/meson-gxl.c index c49062ad7..73f7962a3 100644 --- a/drivers/net/phy/meson-gxl.c +++ b/drivers/net/phy/meson-gxl.c @@ -243,7 +243,13 @@ static irqreturn_t meson_gxl_handle_interrupt(struct phy_device *phydev) irq_status == INTSRC_ENERGY_DETECT) return IRQ_HANDLED; - phy_trigger_machine(phydev); + /* Give PHY some time before MAC starts sending data. This works + * around an issue where network doesn't come up properly. + */ + if (!(irq_status & INTSRC_LINK_DOWN)) + phy_queue_state_machine(phydev, msecs_to_jiffies(100)); + else + phy_trigger_machine(phydev); return IRQ_HANDLED; }