mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
linux (Generic): r8169: fix broken Wake-on-LAN from S5 (poweroff)
This commit is contained in:
parent
550237b9fd
commit
75fefcaf9a
@ -0,0 +1,47 @@
|
|||||||
|
From f02436d19bfd25e249184f4eff557ae96eed47ab Mon Sep 17 00:00:00 2001
|
||||||
|
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||||
|
Date: Thu, 25 Oct 2018 18:40:19 +0200
|
||||||
|
Subject: [PATCH] r8169: fix broken Wake-on-LAN from S5 (poweroff)
|
||||||
|
|
||||||
|
It was reported that WoL from S5 is broken (WoL from S3 works) and the
|
||||||
|
analysis showed that during system shutdown the network interface was
|
||||||
|
brought down already when the actual kernel shutdown started.
|
||||||
|
Therefore netif_running() returned false and as a consequence the PHY
|
||||||
|
was suspended. Obviously WoL wasn't working then.
|
||||||
|
To fix this the original patch needs to be effectively reverted.
|
||||||
|
A side effect is that when normally bringing down the interface and
|
||||||
|
WoL is enabled the PHY will remain powered on (like it was before the
|
||||||
|
original patch).
|
||||||
|
|
||||||
|
Fixes: fe87bef01f9b ("r8169: don't check WoL when powering down PHY and interface is down")
|
||||||
|
Reported-by: Neil MacLeod <neil@nmacleod.com>
|
||||||
|
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/net/ethernet/realtek/r8169.c | 9 +++++++--
|
||||||
|
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
|
||||||
|
index 2c35009..4930e03 100644
|
||||||
|
--- a/drivers/net/ethernet/realtek/r8169.c
|
||||||
|
+++ b/drivers/net/ethernet/realtek/r8169.c
|
||||||
|
@@ -4175,10 +4175,15 @@ static void rtl_wol_suspend_quirk(struct rtl8169_private *tp)
|
||||||
|
|
||||||
|
static bool rtl_wol_pll_power_down(struct rtl8169_private *tp)
|
||||||
|
{
|
||||||
|
- if (!netif_running(tp->dev) || !__rtl8169_get_wol(tp))
|
||||||
|
+ struct phy_device *phydev;
|
||||||
|
+
|
||||||
|
+ if (!__rtl8169_get_wol(tp))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
- phy_speed_down(tp->dev->phydev, false);
|
||||||
|
+ /* phydev may not be attached to netdevice */
|
||||||
|
+ phydev = mdiobus_get_phy(tp->mii_bus, 0);
|
||||||
|
+
|
||||||
|
+ phy_speed_down(phydev, false);
|
||||||
|
rtl_wol_suspend_quirk(tp);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user