-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
generic: 6.6: backport upstream r8169 patches
b11bff90f2ad r8169: add support for RTL8125BP rev.b b3593df26ab1 r8169: add support for RTL8125D rev.b b299ea006928 r8169: adjust version numbering for RTL8126 bb18265c3aba r8169: remove support for chip version 11 2e20bf8cc057 r8169: remove unused flag RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE e340bff27e63 r8169: copy vendor driver 2.5G/5G EEE advertisement constraints The EEE advertisement patch has been reworked for linux v6.6 because phy_set_eee_broken() is only present on linux >= v6.13 and eee_broken_modes declaration has been converted to a bitmap, so linkmode_set_bit() can't be used either. torvalds/linux@e340bff torvalds/linux@ed623fb torvalds/linux@721aa69 Signed-off-by: Álvaro Fernández Rojas <[email protected]>
- Loading branch information
Showing
6 changed files
with
762 additions
and
0 deletions.
There are no files selected for viewing
82 changes: 82 additions & 0 deletions
82
...eric/backport-6.6/780-44-v6.13-r8169-copy-vendor-driver-2.5G-5G-EEE-advertisement-c.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
From e340bff27e63ed61a1e9895bed546107859e48a7 Mon Sep 17 00:00:00 2001 | ||
From: Heiner Kallweit <[email protected]> | ||
Date: Fri, 8 Nov 2024 08:08:24 +0100 | ||
Subject: [PATCH] r8169: copy vendor driver 2.5G/5G EEE advertisement | ||
constraints | ||
|
||
Vendor driver r8125 doesn't advertise 2.5G EEE on RTL8125A, and r8126 | ||
doesn't advertise 5G EEE. Likely there are compatibility issues, | ||
therefore do the same in r8169. | ||
With this change we don't have to disable 2.5G EEE advertisement in | ||
rtl8125a_config_eee_phy() any longer. | ||
We use new phylib accessor phy_set_eee_broken() to mark the respective | ||
EEE modes as broken. | ||
|
||
Signed-off-by: Heiner Kallweit <[email protected]> | ||
Link: https://patch.msgid.link/[email protected] | ||
Signed-off-by: Jakub Kicinski <[email protected]> | ||
--- | ||
drivers/net/ethernet/realtek/r8169_main.c | 6 ++++++ | ||
drivers/net/ethernet/realtek/r8169_phy_config.c | 16 ++++------------ | ||
2 files changed, 10 insertions(+), 12 deletions(-) | ||
|
||
--- a/drivers/net/ethernet/realtek/r8169_main.c | ||
+++ b/drivers/net/ethernet/realtek/r8169_main.c | ||
@@ -5236,6 +5236,11 @@ static int r8169_mdio_register(struct rt | ||
tp->phydev->supported_eee); | ||
phy_support_asym_pause(tp->phydev); | ||
|
||
+ /* mimic behavior of r8125/r8126 vendor drivers */ | ||
+ if (tp->mac_version == RTL_GIGA_MAC_VER_61) | ||
+ tp->phydev->eee_broken_modes |= MDIO_EEE_2_5GT; | ||
+ tp->phydev->eee_broken_modes |= MDIO_EEE_5GT; | ||
+ | ||
/* PHY will be woken up in rtl_open() */ | ||
phy_suspend(tp->phydev); | ||
|
||
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c | ||
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c | ||
@@ -96,15 +96,7 @@ static void rtl8125_common_config_eee_ph | ||
phy_modify_paged(phydev, 0xa4a, 0x11, 0x0200, 0x0000); | ||
} | ||
|
||
-static void rtl8125a_config_eee_phy(struct phy_device *phydev) | ||
-{ | ||
- rtl8168g_config_eee_phy(phydev); | ||
- /* disable EEE at 2.5Gbps */ | ||
- phy_modify_paged(phydev, 0xa6d, 0x12, 0x0001, 0x0000); | ||
- rtl8125_common_config_eee_phy(phydev); | ||
-} | ||
- | ||
-static void rtl8125b_config_eee_phy(struct phy_device *phydev) | ||
+static void rtl8125_config_eee_phy(struct phy_device *phydev) | ||
{ | ||
rtl8168g_config_eee_phy(phydev); | ||
rtl8125_common_config_eee_phy(phydev); | ||
@@ -1066,7 +1058,7 @@ static void rtl8125a_2_hw_phy_config(str | ||
rtl8168g_enable_gphy_10m(phydev); | ||
|
||
rtl8168g_disable_aldps(phydev); | ||
- rtl8125a_config_eee_phy(phydev); | ||
+ rtl8125_config_eee_phy(phydev); | ||
} | ||
|
||
static void rtl8125b_hw_phy_config(struct rtl8169_private *tp, | ||
@@ -1106,7 +1098,7 @@ static void rtl8125b_hw_phy_config(struc | ||
|
||
rtl8125_legacy_force_mode(phydev); | ||
rtl8168g_disable_aldps(phydev); | ||
- rtl8125b_config_eee_phy(phydev); | ||
+ rtl8125_config_eee_phy(phydev); | ||
} | ||
|
||
static void rtl8125d_hw_phy_config(struct rtl8169_private *tp, | ||
@@ -1116,7 +1108,7 @@ static void rtl8125d_hw_phy_config(struc | ||
rtl8168g_enable_gphy_10m(phydev); | ||
rtl8125_legacy_force_mode(phydev); | ||
rtl8168g_disable_aldps(phydev); | ||
- rtl8125b_config_eee_phy(phydev); | ||
+ rtl8125_config_eee_phy(phydev); | ||
} | ||
|
||
static void rtl8126a_hw_phy_config(struct rtl8169_private *tp, |
35 changes: 35 additions & 0 deletions
35
...eric/backport-6.6/780-45-v6.14-r8169-remove-unused-flag-RTL_FLAG_TASK_RESET_NO_QUEU.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
From 2e20bf8cc05766dcd0357cdfcada49e1bc45512b Mon Sep 17 00:00:00 2001 | ||
From: Heiner Kallweit <[email protected]> | ||
Date: Mon, 2 Dec 2024 21:14:35 +0100 | ||
Subject: [PATCH] r8169: remove unused flag RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE | ||
|
||
After 854d71c555dfc3 ("r8169: remove original workaround for RTL8125 | ||
broken rx issue") this flag isn't used any longer. So remove it. | ||
|
||
Signed-off-by: Heiner Kallweit <[email protected]> | ||
Reviewed-by: Michal Swiatkowski <[email protected]> | ||
Link: https://patch.msgid.link/[email protected] | ||
Signed-off-by: Jakub Kicinski <[email protected]> | ||
--- | ||
drivers/net/ethernet/realtek/r8169_main.c | 3 --- | ||
1 file changed, 3 deletions(-) | ||
|
||
--- a/drivers/net/ethernet/realtek/r8169_main.c | ||
+++ b/drivers/net/ethernet/realtek/r8169_main.c | ||
@@ -623,7 +623,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, | ||
RTL_FLAG_MAX | ||
}; | ||
@@ -4729,8 +4728,6 @@ static void rtl_task(struct work_struct | ||
reset: | ||
rtl_reset_work(tp); | ||
netif_wake_queue(tp->dev); | ||
- } else if (test_and_clear_bit(RTL_FLAG_TASK_RESET_NO_QUEUE_WAKE, tp->wk.flags)) { | ||
- rtl_reset_work(tp); | ||
} | ||
} | ||
|
114 changes: 114 additions & 0 deletions
114
...et/linux/generic/backport-6.6/780-46-v6.14-r8169-remove-support-for-chip-version-11.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
From bb18265c3aba92b91a1355609769f3e967b65dee Mon Sep 17 00:00:00 2001 | ||
From: Heiner Kallweit <[email protected]> | ||
Date: Mon, 2 Dec 2024 21:20:02 +0100 | ||
Subject: [PATCH] r8169: remove support for chip version 11 | ||
|
||
This is a follow-up to 982300c115d2 ("r8169: remove detection of chip | ||
version 11 (early RTL8168b)"). Nobody complained yet, so remove | ||
support for this chip version. | ||
|
||
Signed-off-by: Heiner Kallweit <[email protected]> | ||
Reviewed-by: Simon Horman <[email protected]> | ||
Link: https://patch.msgid.link/[email protected] | ||
Signed-off-by: Jakub Kicinski <[email protected]> | ||
--- | ||
drivers/net/ethernet/realtek/r8169.h | 2 +- | ||
drivers/net/ethernet/realtek/r8169_main.c | 14 +------------- | ||
drivers/net/ethernet/realtek/r8169_phy_config.c | 10 ---------- | ||
3 files changed, 2 insertions(+), 24 deletions(-) | ||
|
||
--- a/drivers/net/ethernet/realtek/r8169.h | ||
+++ b/drivers/net/ethernet/realtek/r8169.h | ||
@@ -23,7 +23,7 @@ enum mac_version { | ||
RTL_GIGA_MAC_VER_08, | ||
RTL_GIGA_MAC_VER_09, | ||
RTL_GIGA_MAC_VER_10, | ||
- RTL_GIGA_MAC_VER_11, | ||
+ /* support for RTL_GIGA_MAC_VER_11 has been removed */ | ||
/* RTL_GIGA_MAC_VER_12 was handled the same as VER_17 */ | ||
/* RTL_GIGA_MAC_VER_13 was merged with VER_10 */ | ||
RTL_GIGA_MAC_VER_14, | ||
--- a/drivers/net/ethernet/realtek/r8169_main.c | ||
+++ b/drivers/net/ethernet/realtek/r8169_main.c | ||
@@ -103,7 +103,6 @@ static const struct { | ||
[RTL_GIGA_MAC_VER_08] = {"RTL8102e" }, | ||
[RTL_GIGA_MAC_VER_09] = {"RTL8102e/RTL8103e" }, | ||
[RTL_GIGA_MAC_VER_10] = {"RTL8101e/RTL8100e" }, | ||
- [RTL_GIGA_MAC_VER_11] = {"RTL8168b/8111b" }, | ||
[RTL_GIGA_MAC_VER_14] = {"RTL8401" }, | ||
[RTL_GIGA_MAC_VER_17] = {"RTL8168b/8111b" }, | ||
[RTL_GIGA_MAC_VER_18] = {"RTL8168cp/8111cp" }, | ||
@@ -2336,7 +2335,7 @@ static enum mac_version rtl8169_get_mac_ | ||
|
||
/* 8168B family. */ | ||
{ 0x7c8, 0x380, RTL_GIGA_MAC_VER_17 }, | ||
- /* This one is very old and rare, let's see if anybody complains. | ||
+ /* This one is very old and rare, support has been removed. | ||
* { 0x7c8, 0x300, RTL_GIGA_MAC_VER_11 }, | ||
*/ | ||
|
||
@@ -3806,7 +3805,6 @@ static void rtl_hw_config(struct rtl8169 | ||
[RTL_GIGA_MAC_VER_08] = rtl_hw_start_8102e_3, | ||
[RTL_GIGA_MAC_VER_09] = rtl_hw_start_8102e_2, | ||
[RTL_GIGA_MAC_VER_10] = NULL, | ||
- [RTL_GIGA_MAC_VER_11] = rtl_hw_start_8168b, | ||
[RTL_GIGA_MAC_VER_14] = rtl_hw_start_8401, | ||
[RTL_GIGA_MAC_VER_17] = rtl_hw_start_8168b, | ||
[RTL_GIGA_MAC_VER_18] = rtl_hw_start_8168cp_1, | ||
@@ -4682,12 +4680,6 @@ static irqreturn_t rtl8169_interrupt(int | ||
if (status & LinkChg) | ||
phy_mac_interrupt(tp->phydev); | ||
|
||
- if (unlikely(status & RxFIFOOver && | ||
- tp->mac_version == RTL_GIGA_MAC_VER_11)) { | ||
- netif_stop_queue(tp->dev); | ||
- rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_PENDING); | ||
- } | ||
- | ||
rtl_irq_disable(tp); | ||
napi_schedule(&tp->napi); | ||
out: | ||
@@ -5107,9 +5099,6 @@ static void rtl_set_irq_mask(struct rtl8 | ||
|
||
if (tp->mac_version <= RTL_GIGA_MAC_VER_06) | ||
tp->irq_mask |= SYSErr | RxFIFOOver; | ||
- else if (tp->mac_version == RTL_GIGA_MAC_VER_11) | ||
- /* special workaround needed */ | ||
- tp->irq_mask |= RxFIFOOver; | ||
} | ||
|
||
static int rtl_alloc_irq(struct rtl8169_private *tp) | ||
@@ -5304,7 +5293,6 @@ static int rtl_jumbo_max(struct rtl8169_ | ||
case RTL_GIGA_MAC_VER_02 ... RTL_GIGA_MAC_VER_06: | ||
return JUMBO_7K; | ||
/* RTL8168b */ | ||
- case RTL_GIGA_MAC_VER_11: | ||
case RTL_GIGA_MAC_VER_17: | ||
return JUMBO_4K; | ||
/* RTL8168c */ | ||
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c | ||
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c | ||
@@ -276,15 +276,6 @@ static void rtl8169sce_hw_phy_config(str | ||
rtl_writephy_batch(phydev, phy_reg_init); | ||
} | ||
|
||
-static void rtl8168bb_hw_phy_config(struct rtl8169_private *tp, | ||
- struct phy_device *phydev) | ||
-{ | ||
- phy_write(phydev, 0x1f, 0x0001); | ||
- phy_set_bits(phydev, 0x16, BIT(0)); | ||
- phy_write(phydev, 0x10, 0xf41b); | ||
- phy_write(phydev, 0x1f, 0x0000); | ||
-} | ||
- | ||
static void rtl8168bef_hw_phy_config(struct rtl8169_private *tp, | ||
struct phy_device *phydev) | ||
{ | ||
@@ -1136,7 +1127,6 @@ void r8169_hw_phy_config(struct rtl8169_ | ||
[RTL_GIGA_MAC_VER_08] = rtl8102e_hw_phy_config, | ||
[RTL_GIGA_MAC_VER_09] = rtl8102e_hw_phy_config, | ||
[RTL_GIGA_MAC_VER_10] = NULL, | ||
- [RTL_GIGA_MAC_VER_11] = rtl8168bb_hw_phy_config, | ||
[RTL_GIGA_MAC_VER_14] = rtl8401_hw_phy_config, | ||
[RTL_GIGA_MAC_VER_17] = rtl8168bef_hw_phy_config, | ||
[RTL_GIGA_MAC_VER_18] = rtl8168cp_1_hw_phy_config, |
Oops, something went wrong.