> --- a/drivers/net/dsa/mv88e6xxx/port.c
> +++ b/drivers/net/dsa/mv88e6xxx/port.c
> @@ -187,11 +187,16 @@ static int mv88e6xxx_port_set_speed_duplex(struct
> mv88e6xxx_chip *chip,
> ctrl = MV88E6XXX_PORT_MAC_CTL_SPEED_1000;
> break;
> case 2500:
> - if (alt_bit)
> - ctrl = MV88E6390_PORT_MAC_CTL_SPEED_10000 |
> - MV88E6390_PORT_MAC_CTL_ALTSPEED;
> + if (chip->info->family == MV88E6XXX_FAMILY_6393)
> + ctrl = MV88E6XXX_PORT_MAC_CTL_SPEED_1000;
> else
> ctrl = MV88E6390_PORT_MAC_CTL_SPEED_10000;
> + if (alt_bit)
> + ctrl |= MV88E6390_PORT_MAC_CTL_ALTSPEED;
> + break;
> + case 5000:
> + ctrl = MV88E6390_PORT_MAC_CTL_SPEED_10000 |
> + MV88E6390_PORT_MAC_CTL_ALTSPEED;
> break;
> case 10000:
> /* all bits set, fall through... */
This is getting more and more complex. Maybe it is time to refactor it?
Andrew