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.
Unified · Split
| @@ -3959,7 +3959,7 @@ static void mvneta_mac_config(struct phylink_config *config, unsigned int mode, · 3958 unmodified lines | |||
| 3959 | /* When at 2.5G, the link partner can send frames with shortened | 3959 | /* When at 2.5G, the link partner can send frames with shortened |
| 3960 | * preambles. | 3960 | * preambles. |
| 3961 | */ | 3961 | */ |
| 3962 | if (state->speed == SPEED_2500) | 3962 | if (state->interface == PHY_INTERFACE_MODE_2500BASEX) |
| 3963 | new_ctrl4 |= MVNETA_GMAC4_SHORT_PREAMBLE_ENABLE; | 3963 | new_ctrl4 |= MVNETA_GMAC4_SHORT_PREAMBLE_ENABLE; |
| 3964 | 3964 | ||
| 3965 | if (pp->phy_interface != state->interface) { | 3965 | if (pp->phy_interface != state->interface) { |