Skip to content

Commit 9a1e312

Browse files
hkallweitdavem330
authored andcommitted
net: phy: c45: add support for MDIO_AN_EEE_ADV2
Add support for handling the EEE advertisement 2 register. For now only 2500baseT and 5000baseT modes are supported. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 1bbe04e commit 9a1e312

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

drivers/net/phy/phy-c45.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,22 @@ int genphy_c45_write_eee_adv(struct phy_device *phydev, unsigned long *adv)
706706
changed = 1;
707707
}
708708

709+
if (linkmode_intersects(phydev->supported_eee, PHY_EEE_CAP2_FEATURES)) {
710+
val = linkmode_to_mii_eee_cap2_t(adv);
711+
712+
/* IEEE 802.3-2022 45.2.7.16 EEE advertisement 2
713+
* (Register 7.62)
714+
*/
715+
val = phy_modify_mmd_changed(phydev, MDIO_MMD_AN,
716+
MDIO_AN_EEE_ADV2,
717+
MDIO_EEE_2_5GT | MDIO_EEE_5GT,
718+
val);
719+
if (val < 0)
720+
return val;
721+
if (val > 0)
722+
changed = 1;
723+
}
724+
709725
if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT1L_Full_BIT,
710726
phydev->supported_eee)) {
711727
val = linkmode_adv_to_mii_10base_t1_t(adv);
@@ -745,6 +761,17 @@ int genphy_c45_read_eee_adv(struct phy_device *phydev, unsigned long *adv)
745761
mii_eee_cap1_mod_linkmode_t(adv, val);
746762
}
747763

764+
if (linkmode_intersects(phydev->supported_eee, PHY_EEE_CAP2_FEATURES)) {
765+
/* IEEE 802.3-2022 45.2.7.16 EEE advertisement 2
766+
* (Register 7.62)
767+
*/
768+
val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV2);
769+
if (val < 0)
770+
return val;
771+
772+
mii_eee_cap2_mod_linkmode_adv_t(adv, val);
773+
}
774+
748775
if (linkmode_test_bit(ETHTOOL_LINK_MODE_10baseT1L_Full_BIT,
749776
phydev->supported_eee)) {
750777
/* IEEE 802.3cg-2019 45.2.7.25 10BASE-T1 AN control register

0 commit comments

Comments
 (0)