net: mvneta: fix use of state->speed
authorRussell King <rmk+kernel@armlinux.org.uk>
Tue, 30 Jun 2020 10:04:40 +0000 (11:04 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 30 Jun 2020 20:01:12 +0000 (13:01 -0700)
When support for short preambles was added, it incorrectly keyed its
decision off state->speed instead of state->interface.  state->speed
is not guaranteed to be correct for in-band modes, which can lead to
short preambles being unexpectedly disabled.

Fix this by keying off the interface mode, which is the only way that
mvneta can operate at 2.5Gbps.

Fixes: da58a931f248 ("net: mvneta: Add support for 2500Mbps SGMII")
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/mvneta.c

index c639e3a293024fe48d685e129699de993c7cd098..7d5d9d34f4e470ceadc201f44caea0b6509fc1b4 100644 (file)
@@ -3959,7 +3959,7 @@ static void mvneta_mac_config(struct phylink_config *config, unsigned int mode,
        /* When at 2.5G, the link partner can send frames with shortened
         * preambles.
         */
-       if (state->speed == SPEED_2500)
+       if (state->interface == PHY_INTERFACE_MODE_2500BASEX)
                new_ctrl4 |= MVNETA_GMAC4_SHORT_PREAMBLE_ENABLE;
 
        if (pp->phy_interface != state->interface) {