net: dsa: mv88e6xxx: Don't support >1G speeds on 6191X on ports other than 10
authorMarek Behún <kabel@kernel.org>
Thu, 4 Nov 2021 17:17:47 +0000 (18:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 18:17:12 +0000 (19:17 +0100)
[ Upstream commit dc2fc9f03c5c410d8f01c2206b3d529f80b13733 ]

Model 88E6191X only supports >1G speeds on port 10. Port 0 and 9 are
only 1G.

Fixes: de776d0d316f ("net: dsa: mv88e6xxx: add support for mv88e6393x family")
Signed-off-by: Marek Behún <kabel@kernel.org>
Cc: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20211104171747.10509-1-kabel@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/dsa/mv88e6xxx/chip.c

index 8dadcae..be8589f 100644 (file)
@@ -640,7 +640,10 @@ static void mv88e6393x_phylink_validate(struct mv88e6xxx_chip *chip, int port,
                                        unsigned long *mask,
                                        struct phylink_link_state *state)
 {
-       if (port == 0 || port == 9 || port == 10) {
+       bool is_6191x =
+               chip->info->prod_num == MV88E6XXX_PORT_SWITCH_ID_PROD_6191X;
+
+       if (((port == 0 || port == 9) && !is_6191x) || port == 10) {
                phylink_set(mask, 10000baseT_Full);
                phylink_set(mask, 10000baseKR_Full);
                phylink_set(mask, 10000baseCR_Full);