Hi Marc, one more attempt, could you please test the following with 4.19 or 4.20 (w/o the other debug patches) ?
Rgds, Heiner --- drivers/net/ethernet/realtek/r8169.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c index 3e650bd9e..2dab28115 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c @@ -1371,6 +1371,8 @@ static void rtl_link_chg_patch(struct rtl8169_private *tp) #define WAKE_ANY (WAKE_PHY | WAKE_MAGIC | WAKE_UCAST | WAKE_BCAST | WAKE_MCAST) +/* Don't delete it completely, in case we need to re-enable it */ +#if 0 static u32 __rtl8169_get_wol(struct rtl8169_private *tp) { u8 options; @@ -1405,6 +1407,7 @@ static u32 __rtl8169_get_wol(struct rtl8169_private *tp) return wolopts; } +#endif static void rtl8169_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) { @@ -4284,7 +4287,7 @@ static void rtl_wol_suspend_quirk(struct rtl8169_private *tp) static bool rtl_wol_pll_power_down(struct rtl8169_private *tp) { - if (!__rtl8169_get_wol(tp)) + if (!device_may_wakeup(tp_to_dev(tp))) return false; phy_speed_down(tp->phydev, false); @@ -7441,8 +7444,6 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) return rc; } - tp->saved_wolopts = __rtl8169_get_wol(tp); - mutex_init(&tp->wk.mutex); INIT_WORK(&tp->wk.work, rtl_task); u64_stats_init(&tp->rx_stats.syncp); -- 2.20.1 On 29.01.2019 16:35, Marc Haber wrote: > Hi, > > after having a good night's sleep over that, it's obviously a merge > commit which cannot easily be reverted. How would I continue after > identifying a merge commit as the culprit? > > On Tue, Jan 29, 2019 at 08:32:53AM +0100, Marc Haber wrote: >> According to bisect, the first bad commit is >> 19725496da5602b401eae389736ab00d1817e264 >> >> commit 19725496da5602b401eae389736ab00d1817e264 >> Merge: aea5f654e6b7 9981b4fb8684 > > git diff aea5f654e6b7..19725496da5602b401eae389736ab00d1817e264, > filtered for r8169 looks manageable: > > --- a/drivers/net/ethernet/realtek/r8169.c > +++ b/drivers/net/ethernet/realtek/r8169.c > @@ -7396,8 +7396,7 @@ static int rtl_init_one(struct pci_dev *pdev, const > struc > return rc; > } > > - /* override BIOS settings, use userspace tools to enable WOL */ > - __rtl8169_set_wol(tp, 0); > + tp->saved_wolopts = __rtl8169_get_wol(tp); > > mutex_init(&tp->wk.mutex); > u64_stats_init(&tp->rx_stats.syncp); > > but the other one seems unmanageably big: > > [18/5009]mh@fan:~/linux/git/linux (master % u=) $ git diff > 9981b4fb8684..19725496da5602b401eae389736ab00d1817e264 -- > drivers/net/ethernet/realtek/r8169.c | diffstat > r8169.c | 815 > ++++++++++++++++++---------------------------------------------- > 1 file changed, 234 insertions(+), 581 deletions(-) > [19/5009]mh@fan:~/linux/git/linux (master % u=) $ > > ------- > But, indeed, adding the call to __rtl8169_set_wol(tp, 0) fixes the issue > for me and the machine now wakes up from StR on a magic packet without > having to go through strange ethtool motions. > ------- > > Would that code change be suitable for the official kernel cod? > > Greetings > Marc >