mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-21 09:42:09 +00:00
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.e340bff27e
ed623fb8e3
721aa69e70
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> (cherry picked from commit 084618f8db7d0e413b47bab3e0ea70804bf84ee2)
83 lines
2.9 KiB
Diff
83 lines
2.9 KiB
Diff
From e340bff27e63ed61a1e9895bed546107859e48a7 Mon Sep 17 00:00:00 2001
|
|
From: Heiner Kallweit <hkallweit1@gmail.com>
|
|
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 <hkallweit1@gmail.com>
|
|
Link: https://patch.msgid.link/ce185e10-8a2f-4cf8-a49b-fd8fb3c3c8a1@gmail.com
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
---
|
|
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,
|