forked from Openwrt-EcoNet/openwrt
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.31 Remove upstreamed patches: backport-6.12/780-27-v6.15-r8169-don-t-scan-PHY-addresses-0.patch [1] backport-6.12/780-33-v6.15-r8169-disable-RTL8126-ZRX-DC-timeout.patch [2] bcm27xx/patches-6.12/950-0315-media-i2c-imx219-Correct-the-minimum-vblanking-value.patch [3] bcm27xx/patches-6.12/950-0857-drm-v3d-Add-clock-handling.patch [4] bcm27xx/patches-6.12/950-0874-PCI-brcmstb-Expand-inbound-window-size-up-to-64GB.patch [5] bcm27xx/patches-6.12/950-0877-PCI-brcmstb-Adding-a-softdep-to-MIP-MSI-X-driver.patch [6] bcm27xx/patches-6.12/950-0960-media-imx335-Set-vblank-immediately.patch [7] Manually rebased patches: d1/patches-6.12/0009-ASoC-sunxi-sun4i-codec-add-basic-support-for-D1-audi.patch [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=ba59747562c49974cbace989d76b94a8331da442 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=2780aa8394415df0a69e3b908d6dd8c79e1d1bcc [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=9a981079097bee6a0583877798de0b240717bdde [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=bbd6dc1fb6c56267ad1d58810d92287fcd5b0058 [5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=3ffaa2e999380477774e76680ff4cef247451168 [6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=12153e3948c596737853c3ec4ff7e4e3f4a9f9a6 [7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.31&id=8d7e13c31c52690655883dff604238b0760a3644 Signed-off-by: Shiji Yang <yangshiji66@outlook.com> Link: https://github.com/openwrt/openwrt/pull/18953 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
From ac48430368c1a4f4e6c2fa92243b4b93fd25bee4 Mon Sep 17 00:00:00 2001
|
|
From: Heiner Kallweit <hkallweit1@gmail.com>
|
|
Date: Wed, 16 Oct 2024 22:05:57 +0200
|
|
Subject: [PATCH] r8169: don't take RTNL lock in rtl_task()
|
|
|
|
There's not really a benefit here in taking the RTNL lock. The task
|
|
handler does exception handling only, so we're in trouble anyway when
|
|
we come here, and there's no need to protect against e.g. a parallel
|
|
ethtool call.
|
|
A benefit of removing the RTNL lock here is that we now can
|
|
synchronously cancel the workqueue from a context holding the RTNL mutex.
|
|
|
|
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
|
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
|
|
---
|
|
drivers/net/ethernet/realtek/r8169_main.c | 8 ++------
|
|
1 file changed, 2 insertions(+), 6 deletions(-)
|
|
|
|
--- a/drivers/net/ethernet/realtek/r8169_main.c
|
|
+++ b/drivers/net/ethernet/realtek/r8169_main.c
|
|
@@ -4827,10 +4827,8 @@ static void rtl_task(struct work_struct
|
|
container_of(work, struct rtl8169_private, wk.work);
|
|
int ret;
|
|
|
|
- rtnl_lock();
|
|
-
|
|
if (!test_bit(RTL_FLAG_TASK_ENABLED, tp->wk.flags))
|
|
- goto out_unlock;
|
|
+ return;
|
|
|
|
if (test_and_clear_bit(RTL_FLAG_TASK_TX_TIMEOUT, tp->wk.flags)) {
|
|
/* if chip isn't accessible, reset bus to revive it */
|
|
@@ -4839,7 +4837,7 @@ static void rtl_task(struct work_struct
|
|
if (ret < 0) {
|
|
netdev_err(tp->dev, "Can't reset secondary PCI bus, detach NIC\n");
|
|
netif_device_detach(tp->dev);
|
|
- goto out_unlock;
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
@@ -4858,8 +4856,6 @@ reset:
|
|
} else if (test_and_clear_bit(RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE, tp->wk.flags)) {
|
|
rtl_reset_work(tp);
|
|
}
|
|
-out_unlock:
|
|
- rtnl_unlock();
|
|
}
|
|
|
|
static int rtl8169_poll(struct napi_struct *napi, int budget)
|