ethtool: Get link mode in use instead of speed and duplex parameters
Currently, when user space queries the link's parameters, as speed and duplex, each parameter is passed from the driver to ethtool. Instead, get the link mode bit in use, and derive each of the parameters from it in ethtool. Signed-off-by: Danielle Ratson <danieller@nvidia.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
012ce4dd31
commit
c8907043c6
@ -426,13 +426,29 @@ struct ethtool_link_usettings {
|
||||
int __ethtool_get_link_ksettings(struct net_device *dev,
|
||||
struct ethtool_link_ksettings *link_ksettings)
|
||||
{
|
||||
const struct link_mode_info *link_info;
|
||||
int err;
|
||||
|
||||
ASSERT_RTNL();
|
||||
|
||||
if (!dev->ethtool_ops->get_link_ksettings)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
memset(link_ksettings, 0, sizeof(*link_ksettings));
|
||||
return dev->ethtool_ops->get_link_ksettings(dev, link_ksettings);
|
||||
|
||||
link_ksettings->link_mode = -1;
|
||||
err = dev->ethtool_ops->get_link_ksettings(dev, link_ksettings);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (link_ksettings->link_mode != -1) {
|
||||
link_info = &link_mode_params[link_ksettings->link_mode];
|
||||
link_ksettings->base.speed = link_info->speed;
|
||||
link_ksettings->lanes = link_info->lanes;
|
||||
link_ksettings->base.duplex = link_info->duplex;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(__ethtool_get_link_ksettings);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user