[PATCH 2/3] r8169: don't use MSI-X on RTL8168g

Kai-Heng Feng kai.heng.feng at canonical.com
Mon Aug 27 04:36:37 UTC 2018


From: Heiner Kallweit <hkallweit1 at gmail.com>

BugLink: https://bugs.launchpad.net/bugs/1779817

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 at gmail.com>
Reported-by: Lou Reed <gogen at disroot.org>
Tested-by: Steve Dodd <steved424 at gmail.com>
Tested-by: Lou Reed <gogen at disroot.org>
Fixes: 6c6aa15fdea5 ("r8169: improve interrupt handling")
Signed-off-by: Heiner Kallweit <hkallweit1 at gmail.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
(cherry picked from commit 7c53a722459c1d6ffb0f5b2058c06ca8980b8600)
Signed-off-by: Kai-Heng Feng <kai.heng.feng at canonical.com>
---
 drivers/net/ethernet/realtek/r8169.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index 0c86641dd912..9c6e65896108 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -8305,6 +8305,11 @@ static int rtl_alloc_irq(struct rtl8169_private *tp)
 		RTL_W8(Config2, RTL_R8(Config2) & ~MSIEnable);
 		RTL_W8(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;
 	}
-- 
2.17.1





More information about the kernel-team mailing list