First, there are some SFP modules that only uses RX_LOS for link indication. Add check that link is operational before actual read of line-side status.
Second, it is invalid to set 10G speed without autonegotiation, according to phy_ethtool_ksettings_set(). Implement switching between 10GBase-R and 1000Base-X/SGMII if autonegotiation can't complete but there is signal in line. Changelog: v1 -> v2: * make checking that link is operational more friendly for trancievers without SFP cages. * split swapping 1G/10G modes into non-functional and functional commits for the sake of easier review. Ivan Bornyakov (3): net: phy: marvell-88x2222: check that link is operational net: phy: marvell-88x2222: move read_status after config_aneg net: phy: marvell-88x2222: swap 1G/10G modes on autoneg drivers/net/phy/marvell-88x2222.c | 314 ++++++++++++++++++++---------- 1 file changed, 209 insertions(+), 105 deletions(-) -- 2.26.3