forked from Openwrt-EcoNet/openwrt
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.93 Removed upstreamed: backport-6.6/780-51-v6.15-r8169-don-t-scan-PHY-addresses-0.patch[1] All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.93&id=961ee132104b09e054308e53d8ab4a2386a21904 Build system: x86/64 Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64 Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64 Signed-off-by: John Audia <therealgraysky@proton.me> Link: https://github.com/openwrt/openwrt/pull/19026 Signed-off-by: Nick Hainke <vincent@systemli.org>
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
|
|
@@ -5237,6 +5237,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,
|