Skip to content

Commit 10ce0db

Browse files
hkallweitPaolo Abeni
authored andcommitted
r8169: avoid unsolicited interrupts
It was reported that after resume from suspend a PCI error is logged and connectivity is broken. Error message is: PCI error (cmd = 0x0407, status_errs = 0x0000) The message seems to be a red herring as none of the error bits is set, and the PCI command register value also is normal. Exception handling for a PCI error includes a chip reset what apparently brakes connectivity here. The interrupt status bit triggering the PCI error handling isn't actually used on PCIe chip versions, so it's not clear why this bit is set by the chip. Fix this by ignoring this bit on PCIe chip versions. Fixes: 0e48515 ("r8169: merge with version 8.001.00 of Realtek's r8168 driver") Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219388 Tested-by: Atlas Yu <[email protected]> Signed-off-by: Heiner Kallweit <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
1 parent b22db8b commit 10ce0db

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

drivers/net/ethernet/realtek/r8169_main.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4682,7 +4682,9 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
46824682
if ((status & 0xffff) == 0xffff || !(status & tp->irq_mask))
46834683
return IRQ_NONE;
46844684

4685-
if (unlikely(status & SYSErr)) {
4685+
/* At least RTL8168fp may unexpectedly set the SYSErr bit */
4686+
if (unlikely(status & SYSErr &&
4687+
tp->mac_version <= RTL_GIGA_MAC_VER_06)) {
46864688
rtl8169_pcierr_interrupt(tp->dev);
46874689
goto out;
46884690
}

0 commit comments

Comments
 (0)