• Vladimir Oltean's avatar
    net: dsa: sja1105: Fix link speed not working at 100 Mbps and below · f4cfcfbd
    Vladimir Oltean authored
    The hardware values for link speed are held in the sja1105_speed_t enum.
    However they do not increase in the order that sja1105_get_speed_cfg was
    iterating over them (basically from SJA1105_SPEED_AUTO - 0 - to
    SJA1105_SPEED_1000MBPS - 1 - skipping the other two).
    
    Another bug is that the code in sja1105_adjust_port_config relies on the
    fact that an invalid link speed is detected by sja1105_get_speed_cfg and
    returned as -EINVAL.  However storing this into an enum that only has
    positive members will cast it into an unsigned value, and it will miss
    the negative check.
    
    So take the simplest approach and remove the sja1105_get_speed_cfg
    function and replace it with a simple switch-case statement.
    
    Fixes: 8aa9ebcc ("net: dsa: Introduce driver for NXP SJA1105 5-port L2 switch")
    Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
    Suggested-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f4cfcfbd
sja1105_main.c 47.8 KB