mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
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>
This commit is contained in:
parent
ed623fb8e3
commit
e340bff27e
@ -5228,6 +5228,12 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
|
||||
phy_support_eee(tp->phydev);
|
||||
phy_support_asym_pause(tp->phydev);
|
||||
|
||||
/* mimic behavior of r8125/r8126 vendor drivers */
|
||||
if (tp->mac_version == RTL_GIGA_MAC_VER_61)
|
||||
phy_set_eee_broken(tp->phydev,
|
||||
ETHTOOL_LINK_MODE_2500baseT_Full_BIT);
|
||||
phy_set_eee_broken(tp->phydev, ETHTOOL_LINK_MODE_5000baseT_Full_BIT);
|
||||
|
||||
/* PHY will be woken up in rtl_open() */
|
||||
phy_suspend(tp->phydev);
|
||||
|
||||
|
@ -96,15 +96,7 @@ static void rtl8125_common_config_eee_phy(struct phy_device *phydev)
|
||||
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(struct rtl8169_private *tp,
|
||||
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(struct rtl8169_private *tp,
|
||||
|
||||
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(struct rtl8169_private *tp,
|
||||
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,
|
||||
|
Loading…
Reference in New Issue
Block a user