[PATCH net-next v3 02/18] net: stmmac: move tx_lpi_timer tracking to phylib
Choong Yong Liang
yong.liang.choong at linux.intel.com
Tue Jan 7 23:36:57 PST 2025
On 8/1/2025 12:28 am, Russell King (Oracle) wrote:
> When stmmac_ethtool_op_get_eee() is called, stmmac sets the tx_lpi_timer
> and tx_lpi_enabled members, and then calls into phylink and thus phylib.
> phylib overwrites these members.
>
> phylib will also cause a link down/link up transition when settings
> that impact the MAC have been changed.
>
> Convert stmmac to use the tx_lpi_timer setting in struct phy_device,
> updating priv->tx_lpi_timer each time when the link comes up, rather
> than trying to maintain this user setting itself. We initialise the
> phylib tx_lpi_timer setting by doing a get_ee-modify-set_eee sequence
> with the last known priv->tx_lpi_timer value. In order for this to work
> correctly, we also need this member to be initialised earlier.
>
> As stmmac_eee_init() is no longer called outside of stmmac_main.c, make
> it static.
>
> Reviewed-by: Andrew Lunn <andrew at lunn.ch>
> Signed-off-by: Russell King (Oracle) <rmk+kernel at armlinux.org.uk>
Hi Russell,
I have completed the sanity test on the EEE changes to the stmmac driver.
It seems that most of the changes are acceptable with respect to EEE behavior.
However, I noticed that this part of the code requires a minor change to
fix the logic:
/* Configure phylib's copy of the LPI timer */
if (phylink_ethtool_get_eee(priv->phylink, &eee) == 0) {
eee.tx_lpi_timer = priv->tx_lpi_timer;
phylink_ethtool_set_eee(priv->phylink, &eee);
}
Otherwise, the "tx_lpi_timer" will not be set correctly during the initial
state.
Tested-by: Choong Yong Liang <yong.liang.choong at linux.intel.com>
More information about the linux-arm-kernel
mailing list