mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-10 23:12:48 +00:00
56b2d856a2
7a3bcd39ae1f r8169: use helper r8169_mod_reg8_cond to simplify rtl_jumbo_config
e3e9e9039fa6 r8169: align WAKE_PHY handling with r8125/r8126 vendor drivers
330dc2297c82 r8169: improve rtl_set_d3_pll_down
c507e96b5763 r8169: improve __rtl8169_set_wol
83cb4b470c66 r8169: remove leftover locks after reverted change
2cd02f2fdd8a r8169: improve initialization of RSS registers on RTL8125/RTL8126
a3d8520e6a19 r8169: align RTL8126 EEE config with vendor driver
4af2f60bf737 r8169: align RTL8125/RTL8126 PHY config with vendor driver
eb90f876b796 r8169: align RTL8125 EEE config with vendor driver
b8bd8c44a266 r8169: fix inconsistent indenting in rtl8169_get_eth_mac_stats
f75d1fbe7809 r8169: add support for RTL8125D
c4e64095c00c r8169: enable EEE at 2.5G per default on RTL8125B
d64113c6bb5e r8169: remove rtl_dash_loop_wait_high/low
1c105bacb160 r8169: avoid duplicated messages if loading firmware fails and switch to warn level
ac48430368c1 r8169: don't take RTNL lock in rtl_task()
e3fc5139bd8f r8169: implement additional ethtool stats ops
b8bf38440ba9 r8169: enable SG/TSO on selected chip versions per default
854d71c555df r8169: remove original workaround for RTL8125 broken rx issue
1ffcc8d41306 r8169: add support for the temperature sensor being available from RTL8125B
The following patches require backporting additional linux patches:
e2015942e90a r8169: replace custom flag with disable_work() et al
e340bff27e63 r8169: copy vendor driver 2.5G/5G EEE advertisement constraints
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 0eeba04a16
)
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
|
|
@@ -4802,10 +4802,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 */
|
|
@@ -4814,7 +4812,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;
|
|
}
|
|
}
|
|
|
|
@@ -4833,8 +4831,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)
|