• Andy Roulin's avatar
    ethtool: reset #lanes when lanes is omitted · e847c767
    Andy Roulin authored
    If the number of lanes was forced and then subsequently the user
    omits this parameter, the ksettings->lanes is reset. The driver
    should then reset the number of lanes to the device's default
    for the specified speed.
    
    However, although the ksettings->lanes is set to 0, the mod variable
    is not set to true to indicate the driver and userspace should be
    notified of the changes.
    
    The consequence is that the same ethtool operation will produce
    different results based on the initial state.
    
    If the initial state is:
    $ ethtool swp1 | grep -A 3 'Speed: '
            Speed: 500000Mb/s
            Lanes: 2
            Duplex: Full
            Auto-negotiation: on
    
    then executing 'ethtool -s swp1 speed 50000 autoneg off' will yield:
    $ ethtool swp1 | grep -A 3 'Speed: '
            Speed: 500000Mb/s
            Lanes: 2
            Duplex: Full
            Auto-negotiation: off
    
    While if the initial state is:
    $ ethtool swp1 | grep -A 3 'Speed: '
            Speed: 500000Mb/s
            Lanes: 1
            Duplex: Full
            Auto-negotiation: off
    
    executing the same 'ethtool -s swp1 speed 50000 autoneg off' results in:
    $ ethtool swp1 | grep -A 3 'Speed: '
            Speed: 500000Mb/s
            Lanes: 1
            Duplex: Full
            Auto-negotiation: off
    
    This patch fixes this behavior. Omitting lanes will always results in
    the driver choosing the default lane width for the chosen speed. In this
    scenario, regardless of the initial state, the end state will be, e.g.,
    
    $ ethtool swp1 | grep -A 3 'Speed: '
            Speed: 500000Mb/s
            Lanes: 2
            Duplex: Full
            Auto-negotiation: off
    
    Fixes: 012ce4dd ("ethtool: Extend link modes settings uAPI with lanes")
    Signed-off-by: default avatarAndy Roulin <aroulin@nvidia.com>
    Reviewed-by: default avatarDanielle Ratson <danieller@nvidia.com>
    Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Link: https://lore.kernel.org/r/ac238d6b-8726-8156-3810-6471291dbc7f@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    e847c767
linkmodes.c 10.7 KB