|
@@ -551,7 +551,12 @@ int __ethtool_get_link_ksettings(struct net_device *dev,
|
|
|
* legacy %ethtool_cmd API, unless it's not supported either.
|
|
|
* TODO: remove when ethtool_ops::get_settings disappears internally
|
|
|
*/
|
|
|
- err = __ethtool_get_settings(dev, &cmd);
|
|
|
+ if (!dev->ethtool_ops->get_settings)
|
|
|
+ return -EOPNOTSUPP;
|
|
|
+
|
|
|
+ memset(&cmd, 0, sizeof(cmd));
|
|
|
+ cmd.cmd = ETHTOOL_GSET;
|
|
|
+ err = dev->ethtool_ops->get_settings(dev, &cmd);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
|
|
|
@@ -729,30 +734,6 @@ static int ethtool_set_link_ksettings(struct net_device *dev,
|
|
|
return dev->ethtool_ops->set_link_ksettings(dev, &link_ksettings);
|
|
|
}
|
|
|
|
|
|
-/* Internal kernel helper to query a device ethtool_cmd settings.
|
|
|
- *
|
|
|
- * Note about transition to ethtool_link_settings API: We do not need
|
|
|
- * (or want) this function to support "dev" instances that implement
|
|
|
- * the ethtool_link_settings API as we will update the drivers calling
|
|
|
- * this function to call __ethtool_get_link_ksettings instead, before
|
|
|
- * the first drivers implement ethtool_ops::get_link_ksettings.
|
|
|
- *
|
|
|
- * TODO 1: at least make this function static when no driver is using it
|
|
|
- * TODO 2: remove when ethtool_ops::get_settings disappears internally
|
|
|
- */
|
|
|
-int __ethtool_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
|
|
|
-{
|
|
|
- ASSERT_RTNL();
|
|
|
-
|
|
|
- if (!dev->ethtool_ops->get_settings)
|
|
|
- return -EOPNOTSUPP;
|
|
|
-
|
|
|
- memset(cmd, 0, sizeof(struct ethtool_cmd));
|
|
|
- cmd->cmd = ETHTOOL_GSET;
|
|
|
- return dev->ethtool_ops->get_settings(dev, cmd);
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(__ethtool_get_settings);
|
|
|
-
|
|
|
static void
|
|
|
warn_incomplete_ethtool_legacy_settings_conversion(const char *details)
|
|
|
{
|
|
@@ -796,16 +777,18 @@ static int ethtool_get_settings(struct net_device *dev, void __user *useraddr)
|
|
|
/* send a sensible cmd tag back to user */
|
|
|
cmd.cmd = ETHTOOL_GSET;
|
|
|
} else {
|
|
|
- int err;
|
|
|
- /* TODO: return -EOPNOTSUPP when
|
|
|
- * ethtool_ops::get_settings disappears internally
|
|
|
- */
|
|
|
-
|
|
|
/* driver doesn't support %ethtool_link_ksettings
|
|
|
* API. revert to legacy %ethtool_cmd API, unless it's
|
|
|
* not supported either.
|
|
|
*/
|
|
|
- err = __ethtool_get_settings(dev, &cmd);
|
|
|
+ int err;
|
|
|
+
|
|
|
+ if (!dev->ethtool_ops->get_settings)
|
|
|
+ return -EOPNOTSUPP;
|
|
|
+
|
|
|
+ memset(&cmd, 0, sizeof(cmd));
|
|
|
+ cmd.cmd = ETHTOOL_GSET;
|
|
|
+ err = dev->ethtool_ops->get_settings(dev, &cmd);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
|
}
|