If device is runtime-suspended and not accessible then it may be
flagged as not present. If checking whether device is present is
done too early then we may bail out before we have the chance to
runtime-resume the device. Therefore move this check to
ethnl_ops_begin(). This is in preparation of a follow-up patch
that tries to runtime-resume the device before executing ethtool
ops.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
int ethnl_ops_begin(struct net_device *dev)
{
- if (dev && dev->ethtool_ops->begin)
+ if (!dev)
+ return 0;
+
+ if (!netif_device_present(dev))
+ return -ENODEV;
+
+ if (dev->ethtool_ops->begin)
return dev->ethtool_ops->begin(dev);
else
return 0;
return -EINVAL;
}
- if (dev && !netif_device_present(dev)) {
- dev_put(dev);
- NL_SET_ERR_MSG(extack, "device not present");
- return -ENODEV;
- }
-
req_info->dev = dev;
req_info->flags = flags;
return 0;