Message ID | 20240221062107.778661-5-o.rempel@pengutronix.de (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: ethernet: Rework EEE | expand |
On Wed, 21 Feb 2024 07:21:03 +0100 Oleksij Rempel wrote: > @@ -595,6 +596,7 @@ struct macsec_ops; > * @advertising_eee: Currently advertised EEE linkmodes > * @eee_enabled: Flag indicating whether the EEE feature is enabled > * @enable_tx_lpi: When True, MAC should transmit LPI to PHY > + * eee_cfg: User configuration of EEE missing @ in front of the name here > * @lp_advertising: Current link partner advertised linkmodes > * @host_interfaces: PHY interface modes supported by host > * @eee_broken_modes: Energy efficient ethernet modes which should be prohibited > @@ -715,6 +717,7 @@ struct phy_device { > /* Energy efficient ethernet modes which should be prohibited */ > u32 eee_broken_modes; > bool enable_tx_lpi; > + struct eee_config eee_cfg;
On 2/20/2024 10:21 PM, Oleksij Rempel wrote: > From: Andrew Lunn <andrew@lunn.ch> > > Have phylib keep track of the EEE configuration. This simplifies the > MAC drivers, in that they don't need to store it. > > Future patches to phylib will also make use of this information to > further simplify the MAC drivers. > > Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> > Signed-off-by: Andrew Lunn <andrew@lunn.ch> > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 207e68b0eec6..7f3629d56503 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -1660,8 +1660,8 @@ EXPORT_SYMBOL(phy_get_eee_err); * @phydev: target phy_device struct * @data: ethtool_keee data * - * Description: it reportes the Supported/Advertisement/LP Advertisement - * capabilities. + * Description: reports the Supported/Advertisement/LP Advertisement + * capabilities, etc. */ int phy_ethtool_get_eee(struct phy_device *phydev, struct ethtool_keee *data) { @@ -1672,6 +1672,7 @@ int phy_ethtool_get_eee(struct phy_device *phydev, struct ethtool_keee *data) mutex_lock(&phydev->lock); ret = genphy_c45_ethtool_get_eee(phydev, data); + eeecfg_to_eee(&phydev->eee_cfg, data); mutex_unlock(&phydev->lock); return ret; @@ -1694,6 +1695,8 @@ int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_keee *data) mutex_lock(&phydev->lock); ret = genphy_c45_ethtool_set_eee(phydev, data); + if (!ret) + eee_to_eeecfg(data, &phydev->eee_cfg); mutex_unlock(&phydev->lock); return ret; diff --git a/include/linux/phy.h b/include/linux/phy.h index 432c561f5809..356916695a26 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -30,6 +30,7 @@ #include <linux/refcount.h> #include <linux/atomic.h> +#include <net/eee.h> #define PHY_DEFAULT_FEATURES (SUPPORTED_Autoneg | \ SUPPORTED_TP | \ @@ -595,6 +596,7 @@ struct macsec_ops; * @advertising_eee: Currently advertised EEE linkmodes * @eee_enabled: Flag indicating whether the EEE feature is enabled * @enable_tx_lpi: When True, MAC should transmit LPI to PHY + * eee_cfg: User configuration of EEE * @lp_advertising: Current link partner advertised linkmodes * @host_interfaces: PHY interface modes supported by host * @eee_broken_modes: Energy efficient ethernet modes which should be prohibited @@ -715,6 +717,7 @@ struct phy_device { /* Energy efficient ethernet modes which should be prohibited */ u32 eee_broken_modes; bool enable_tx_lpi; + struct eee_config eee_cfg; #ifdef CONFIG_LED_TRIGGER_PHY struct phy_led_trigger *phy_led_triggers;