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