]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
generic: backport upstream r8169 irq patch 16812/head
authorÁlvaro Fernández Rojas <noltari@gmail.com>
Tue, 29 Oct 2024 08:58:57 +0000 (09:58 +0100)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Tue, 29 Oct 2024 11:00:53 +0000 (12:00 +0100)
This commit backports an additional patch from linux v6.12 release.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
target/linux/generic/backport-6.6/780-22-v6.12-r8169-add-support-for-RTL8126A-rev.b.patch
target/linux/generic/backport-6.6/780-23-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch [moved from target/linux/generic/backport-6.6/780-26-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch with 91% similarity]
target/linux/generic/backport-6.6/780-24-v6.12-r8169-avoid-unsolicited-interrupts.patch [new file with mode: 0644]

index 0915cb729fdcf24239a5668d5d5815892b7963dd..dd90fc1a65a67e9bf258eadfb31b5bb99363126b 100644 (file)
@@ -1,7 +1,7 @@
 From 69cb89981c7a181d857b634c0740e914d5df79ea Mon Sep 17 00:00:00 2001
 From: ChunHao Lin <hau@realtek.com>
 Date: Fri, 30 Aug 2024 10:18:10 +0800
-Subject: [PATCH 43/47] r8169: add support for RTL8126A rev.b
+Subject: [PATCH] r8169: add support for RTL8126A rev.b
 
 Add support for RTL8126A rev.b. Its XID is 0x64a. It is basically
 based on the one with XID 0x649, but with different firmware file.
similarity index 91%
rename from target/linux/generic/backport-6.6/780-26-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch
rename to target/linux/generic/backport-6.6/780-23-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch
index 13bbc2ab113d5f51e03385c397e3f33e5d26b097..14234814ef095ed81dcca3836741e8ddac67e685 100644 (file)
@@ -1,8 +1,7 @@
 From 3b067536daa4842adbf685accf47c899a26367d3 Mon Sep 17 00:00:00 2001
 From: Heiner Kallweit <hkallweit1@gmail.com>
 Date: Wed, 18 Sep 2024 20:45:15 +0200
-Subject: [PATCH 47/47] r8169: add missing MODULE_FIRMWARE entry for RTL8126A
- rev.b
+Subject: [PATCH] r8169: add missing MODULE_FIRMWARE entry for RTL8126A rev.b
 
 Add a missing MODULE_FIRMWARE entry.
 
diff --git a/target/linux/generic/backport-6.6/780-24-v6.12-r8169-avoid-unsolicited-interrupts.patch b/target/linux/generic/backport-6.6/780-24-v6.12-r8169-avoid-unsolicited-interrupts.patch
new file mode 100644 (file)
index 0000000..8332a28
--- /dev/null
@@ -0,0 +1,39 @@
+From 10ce0db787004875f4dba068ea952207d1d8abeb Mon Sep 17 00:00:00 2001
+From: Heiner Kallweit <hkallweit1@gmail.com>
+Date: Fri, 18 Oct 2024 11:08:16 +0200
+Subject: [PATCH] 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: 0e4851502f84 ("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 <atlas.yu@canonical.com>
+Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Link: https://patch.msgid.link/78e2f535-438f-4212-ad94-a77637ac6c9c@gmail.com
+Signed-off-by: Paolo Abeni <pabeni@redhat.com>
+---
+ drivers/net/ethernet/realtek/r8169_main.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/realtek/r8169_main.c
++++ b/drivers/net/ethernet/realtek/r8169_main.c
+@@ -4683,7 +4683,9 @@ static irqreturn_t rtl8169_interrupt(int
+       if ((status & 0xffff) == 0xffff || !(status & tp->irq_mask))
+               return IRQ_NONE;
+-      if (unlikely(status & SYSErr)) {
++      /* At least RTL8168fp may unexpectedly set the SYSErr bit */
++      if (unlikely(status & SYSErr &&
++          tp->mac_version <= RTL_GIGA_MAC_VER_06)) {
+               rtl8169_pcierr_interrupt(tp->dev);
+               goto out;
+       }