Make sure the phy is set to supported speed and duplex
void phy_sanitize_settings(struct phy_device * phydev);
phydev
the target phy_device struct
Make sure the PHY is set to supported speeds and duplexes. Drop down by one in this order: 1000/FULL, 1000/HALF, 100/FULL, 100/HALF, 10/FULL, 10/HALF.