Re: [PATCH net-next] net: phy: marvell10g: add downshift tunable support
From: Andrew Lunn <andrew@lunn.ch>
Date: 2021-09-26 15:24:21
So, some further questions: should we be calling the set_downshift implementation from the .config_init as the Marvell driver does to ensure that downshift is correctly enabled?
The bootloader might of messed it up, so it does not seem unreasonable to set it somewhere at startup.
Is .config_init really the best place to do this? So many things with Marvell PHYs seem to require a reset, which bounces the link. So if one brings up the network interface, then sets EEE (you get a link bounce) and then set downshift, you get another link bounce. Each link bounce takes more than a second, which means the more features that need to be configured after bringing the interface up, the longer it takes for the network to become usable. Note that Marvell downshift will cause the link to bounce even if the values programmed into the register were already there - there is no check to see if we actually changed anything before calling genphy_soft_reset() which seems suboptimal given that we have phy_modify_changed() which can tell us that.
This can clearly be optimized. Add a test if the values are being
changed. Skip the reset if it is being done as part of .config_init
and there is a guarantee a later stage will perform the reset, etc.
Andrew