mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2025-05-20 13:17:55 +00:00
Upstream e2015942e90a couldn't be backported to 6.6 because the following symbols were missing: - disable_work - disable_work_sync - enable_work Seee2015942e9
Upstream 34e5ededf4b8 couldn't be backported to 6.6 because the following symbol was missing: - pcim_iomap_region See34e5ededf4
Reorganize patch numbers now that < 6.12 patches are no longer needed. The following patches still differ from upstream: - e340bff27e63 phy_set_eee_broken symbol is missing in 6.12 https://github.com/torvalds/linux/commit/e340bff27e63 The following patches can't be backported to 6.12 due to missing symbols: - 5e7a74b6a357 phy_disable_eee_mode symbol is missing in 6.12 https://github.com/torvalds/linux/commit/5e7a74b6a357 Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
95 lines
2.9 KiB
Diff
95 lines
2.9 KiB
Diff
From e2015942e90a021151a5751776f35830ba063be7 Mon Sep 17 00:00:00 2001
|
|
From: Heiner Kallweit <hkallweit1@gmail.com>
|
|
Date: Wed, 16 Oct 2024 22:06:53 +0200
|
|
Subject: [PATCH] r8169: replace custom flag with disable_work() et al
|
|
|
|
So far we use a custom flag to define when a task can be scheduled and
|
|
when not. Let's use the standard mechanism with disable_work() et al
|
|
instead.
|
|
Note that in rtl8169_close() we can remove the call to cancel_work()
|
|
because we now call disable_work_sync() in rtl8169_down() already.
|
|
|
|
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
|
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
|
|
---
|
|
drivers/net/ethernet/realtek/r8169_main.c | 18 ++++++------------
|
|
1 file changed, 6 insertions(+), 12 deletions(-)
|
|
|
|
--- a/drivers/net/ethernet/realtek/r8169_main.c
|
|
+++ b/drivers/net/ethernet/realtek/r8169_main.c
|
|
@@ -617,7 +617,6 @@ struct rtl8169_tc_offsets {
|
|
};
|
|
|
|
enum rtl_flag {
|
|
- RTL_FLAG_TASK_ENABLED = 0,
|
|
RTL_FLAG_TASK_RESET_PENDING,
|
|
RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE,
|
|
RTL_FLAG_TASK_TX_TIMEOUT,
|
|
@@ -2502,11 +2501,9 @@ u16 rtl8168h_2_get_adc_bias_ioffset(stru
|
|
|
|
static void rtl_schedule_task(struct rtl8169_private *tp, enum rtl_flag flag)
|
|
{
|
|
- if (!test_bit(RTL_FLAG_TASK_ENABLED, tp->wk.flags))
|
|
- return;
|
|
-
|
|
set_bit(flag, tp->wk.flags);
|
|
- schedule_work(&tp->wk.work);
|
|
+ if (!schedule_work(&tp->wk.work))
|
|
+ clear_bit(flag, tp->wk.flags);
|
|
}
|
|
|
|
static void rtl8169_init_phy(struct rtl8169_private *tp)
|
|
@@ -4800,9 +4797,6 @@ static void rtl_task(struct work_struct
|
|
container_of(work, struct rtl8169_private, wk.work);
|
|
int ret;
|
|
|
|
- if (!test_bit(RTL_FLAG_TASK_ENABLED, tp->wk.flags))
|
|
- return;
|
|
-
|
|
if (test_and_clear_bit(RTL_FLAG_TASK_TX_TIMEOUT, tp->wk.flags)) {
|
|
/* if chip isn't accessible, reset bus to revive it */
|
|
if (RTL_R32(tp, TxConfig) == ~0) {
|
|
@@ -4886,6 +4880,7 @@ static int r8169_phy_connect(struct rtl8
|
|
|
|
static void rtl8169_down(struct rtl8169_private *tp)
|
|
{
|
|
+ disable_work_sync(&tp->wk.work);
|
|
/* Clear all task flags */
|
|
bitmap_zero(tp->wk.flags, RTL_FLAG_MAX);
|
|
|
|
@@ -4914,7 +4909,7 @@ static void rtl8169_up(struct rtl8169_pr
|
|
phy_resume(tp->phydev);
|
|
rtl8169_init_phy(tp);
|
|
napi_enable(&tp->napi);
|
|
- set_bit(RTL_FLAG_TASK_ENABLED, tp->wk.flags);
|
|
+ enable_work(&tp->wk.work);
|
|
rtl_reset_work(tp);
|
|
|
|
phy_start(tp->phydev);
|
|
@@ -4931,8 +4926,6 @@ static int rtl8169_close(struct net_devi
|
|
rtl8169_down(tp);
|
|
rtl8169_rx_clear(tp);
|
|
|
|
- cancel_work(&tp->wk.work);
|
|
-
|
|
free_irq(tp->irq, tp);
|
|
|
|
phy_disconnect(tp->phydev);
|
|
@@ -5165,7 +5158,7 @@ static void rtl_remove_one(struct pci_de
|
|
if (pci_dev_run_wake(pdev))
|
|
pm_runtime_get_noresume(&pdev->dev);
|
|
|
|
- cancel_work_sync(&tp->wk.work);
|
|
+ disable_work_sync(&tp->wk.work);
|
|
|
|
if (IS_ENABLED(CONFIG_R8169_LEDS))
|
|
r8169_remove_leds(tp->leds);
|
|
@@ -5542,6 +5535,7 @@ static int rtl_init_one(struct pci_dev *
|
|
tp->irq = pci_irq_vector(pdev, 0);
|
|
|
|
INIT_WORK(&tp->wk.work, rtl_task);
|
|
+ disable_work(&tp->wk.work);
|
|
|
|
rtl_init_mac_address(tp);
|
|
|