r8169: don't use MSI-X on RTL8168g
authorHeiner Kallweit <hkallweit1@gmail.com>
Sun, 12 Aug 2018 11:26:26 +0000 (13:26 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 13 Aug 2018 15:58:00 +0000 (08:58 -0700)
There have been two reports that network doesn't come back on resume
from suspend when using MSI-X. Both cases affect the same chip version
(RTL8168g - version 40), on different systems. Falling back to MSI
fixes the issue.
Even though we don't really have a proof yet that the network chip
version is to blame, let's disable MSI-X for this version.

Reported-by: Steve Dodd <steved424@gmail.com>
Reported-by: Lou Reed <gogen@disroot.org>
Tested-by: Steve Dodd <steved424@gmail.com>
Tested-by: Lou Reed <gogen@disroot.org>
Fixes: 6c6aa15fdea5 ("r8169: improve interrupt handling")
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/realtek/r8169.c

index 14d185b10cda61165d31509a3353aa54be255e39..0d9c3831838fe0dc366bfa9ab2105e83b493a1bd 100644 (file)
@@ -7076,6 +7076,11 @@ static int rtl_alloc_irq(struct rtl8169_private *tp)
                RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~MSIEnable);
                RTL_W8(tp, Cfg9346, Cfg9346_Lock);
                flags = PCI_IRQ_LEGACY;
+       } else if (tp->mac_version == RTL_GIGA_MAC_VER_40) {
+               /* This version was reported to have issues with resume
+                * from suspend when using MSI-X
+                */
+               flags = PCI_IRQ_LEGACY | PCI_IRQ_MSI;
        } else {
                flags = PCI_IRQ_ALL_TYPES;
        }