OK, so I did some tests with Peridot and 88X3310: On 88E6390 switch, when CMODE in the port register for a port capable of SerDes is set to 1000base-x, the switch self-configures the SerDes PHY to inband AN: register 4.2000 has value 0x1940
but when CMODE is set to 2500base-x, the switch self-configure the PHY without inband AN: register 4.2000 has value 0x0940 Also the 88X3310 PHY, when configured with MACTYPE=4 (that is the mode that switches host interface between 10gbase-r/5gbase-r/2500base-x/sgmii, depending on copper speed) and when copper speed is 2500, the PHY self-configures without inband AN: register 4.2000 has value 0x0140 It seems to me that on these Marvell devices, they consider 2500base-x not capable of inband AN and disable it by default. Moreover when the PHY has disabled inband AN and the Peridot switch has it enabled (by software), they won't link. I tried enabling the inband AN on the PHY, but it does not seem to work. Peridot can only communicate with the PHY in 2500base-x with inband AN disabled. This means that the commit a5a6858b793ff ("net: dsa: mv88e6xxx: extend phylink to Serdes PHYs") causes a regression, since the code started enabling inband AN on 2500base-x mode on the mv88e6390 family, and they stopped working with the PHY. Russell, could we, for now, just edit the code so that when mv88e6390_serdes_pcs_config is being configured with inband mode in 2500base-x, the inband mode won't be enabled and the function will print a warning? This could come with a Fixes tag so that it is backported to stable. Afterwards we can work on refactoring the phylink code so that either the driver can inform phylink whether 2500base-x inband AN is supported, or maybe we can determine from some documentation or whatnot whether inband AN is supported on 2500base-x at all. Marek