On 10.07.2018 21:15, Andrew Lunn wrote: >> static void r8168_pll_power_down(struct rtl8169_private *tp) >> { >> if (r8168_check_dash(tp)) >> @@ -4503,7 +4462,8 @@ static void r8168_pll_power_down(struct >> rtl8169_private *tp) >> if (rtl_wol_pll_power_down(tp)) >> return; >> >> - r8168_phy_power_down(tp); >> + /* cover the case that PHY isn't connected */ >> + phy_suspend(mdiobus_get_phy(tp->mii_bus, 0)); > > I don't particularly like this, because no other MAC driver does it. > I have to agree, it doesn't look too nice. In general quite few network drivers seem to use runtime pm.
> Why is it powered up, but not connected? Is it powered down before it > is disconnected? Is it the bootloader which is powering it up? > Exactly, if the device is active when driver is loaded and the interface isn't used and therefore not brought up, then, when runtime- suspending, we face this situation. This could be changed by connecting the PHY in probe() already instead of doing it in open(). I had this in the beginning, based on a recommendation from Florian or you (don't remember) I changed this to connect in open() only. Do you have any preference or see a good way to deal with the situation? Heiner > Andrew >