net/mlx5e: IPoIB, Show unknown speed instead of error
ethtool is returning an error for unknown speeds for the IPoIB interface: $ ethtool ib0 netlink error: failed to retrieve link settings netlink error: Invalid argument netlink error: failed to retrieve link settings netlink error: Invalid argument Settings for ib0: Link detected: no After this change, ethtool will return success and show "unknown speed": $ ethtool ib0 Settings for ib0: Supported ports: [ ] Supported link modes: Not reported Supported pause frame use: No Supports auto-negotiation: No Supported FEC modes: Not reported Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: Unknown! Duplex: Full Auto-negotiation: off Port: Other PHYAD: 0 Transceiver: internal Link detected: no Fixes: eb234ee9d541 ("net/mlx5e: IPoIB, Add support for get_link_ksettings in ethtool") Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com> Reviewed-by: Gal Pressman <gal@nvidia.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
8974aa9638
commit
8aa5f171d5
@ -189,16 +189,16 @@ static inline int mlx5_ptys_rate_enum_to_int(enum mlx5_ptys_rate rate)
|
||||
}
|
||||
}
|
||||
|
||||
static int mlx5i_get_speed_settings(u16 ib_link_width_oper, u16 ib_proto_oper)
|
||||
static u32 mlx5i_get_speed_settings(u16 ib_link_width_oper, u16 ib_proto_oper)
|
||||
{
|
||||
int rate, width;
|
||||
|
||||
rate = mlx5_ptys_rate_enum_to_int(ib_proto_oper);
|
||||
if (rate < 0)
|
||||
return -EINVAL;
|
||||
return SPEED_UNKNOWN;
|
||||
width = mlx5_ptys_width_enum_to_int(ib_link_width_oper);
|
||||
if (width < 0)
|
||||
return -EINVAL;
|
||||
return SPEED_UNKNOWN;
|
||||
|
||||
return rate * width;
|
||||
}
|
||||
@ -221,16 +221,13 @@ static int mlx5i_get_link_ksettings(struct net_device *netdev,
|
||||
ethtool_link_ksettings_zero_link_mode(link_ksettings, advertising);
|
||||
|
||||
speed = mlx5i_get_speed_settings(ib_link_width_oper, ib_proto_oper);
|
||||
if (speed < 0)
|
||||
return -EINVAL;
|
||||
link_ksettings->base.speed = speed;
|
||||
link_ksettings->base.duplex = speed == SPEED_UNKNOWN ? DUPLEX_UNKNOWN : DUPLEX_FULL;
|
||||
|
||||
link_ksettings->base.duplex = DUPLEX_FULL;
|
||||
link_ksettings->base.port = PORT_OTHER;
|
||||
|
||||
link_ksettings->base.autoneg = AUTONEG_DISABLE;
|
||||
|
||||
link_ksettings->base.speed = speed;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user