On Thu, Jun 13, 2024 at 09:33:01PM +0200, Andrew Lunn wrote:
On Thu, Jun 13, 2024 at 08:30:34PM +0200, Oleksij Rempel wrote:
Get initial master/slave configuration, otherwise ethtool wont be able to provide this information until link is established. This makes troubleshooting harder, since wrong role configuration would prevent the link start.
I looked at how genphy_c45_read_status() works. If we have phydev->autoneg == AUTONEG_ENABLE then genphy_c45_baset1_read_status() is called which sets phydev->master_slave_get. If not AUTONEG_ENABLE it calls genphy_c45_read_pma() which ends up calling genphy_c45_pma_baset1_read_master_slave().
So it seems like the .read_status op should be setting master/slave each time it is called, and not one time during .config_init.
What do you think?
Yes, you are right. I verified it: In case of this driver, .config_init will be executed every time no link is detected over phy_init_hw() call. If link is detected genphy_c45_pma_baset1_read_master_slave() is called directly. It is not directly visible but read_master_slave() will be executed on every .read_status.