> --- 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

Reply via email to