net: phy: meson-gxl: improve link-up behavior
[platform/kernel/linux-starfive.git] / drivers / net / phy / meson-gxl.c
index c49062a..73f7962 100644 (file)
@@ -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;
 }