diff options
Diffstat (limited to 'drivers/net/macvlan.c')
-rw-r--r-- | drivers/net/macvlan.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 42394505bb50..1d2de0b77a2c 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c | |||
@@ -333,10 +333,34 @@ static u32 macvlan_ethtool_get_rx_csum(struct net_device *dev) | |||
333 | return lowerdev->ethtool_ops->get_rx_csum(lowerdev); | 333 | return lowerdev->ethtool_ops->get_rx_csum(lowerdev); |
334 | } | 334 | } |
335 | 335 | ||
336 | static int macvlan_ethtool_get_settings(struct net_device *dev, | ||
337 | struct ethtool_cmd *cmd) | ||
338 | { | ||
339 | const struct macvlan_dev *vlan = netdev_priv(dev); | ||
340 | struct net_device *lowerdev = vlan->lowerdev; | ||
341 | |||
342 | if (!lowerdev->ethtool_ops->get_settings) | ||
343 | return -EOPNOTSUPP; | ||
344 | |||
345 | return lowerdev->ethtool_ops->get_settings(lowerdev, cmd); | ||
346 | } | ||
347 | |||
348 | static u32 macvlan_ethtool_get_flags(struct net_device *dev) | ||
349 | { | ||
350 | const struct macvlan_dev *vlan = netdev_priv(dev); | ||
351 | struct net_device *lowerdev = vlan->lowerdev; | ||
352 | |||
353 | if (!lowerdev->ethtool_ops->get_flags) | ||
354 | return 0; | ||
355 | return lowerdev->ethtool_ops->get_flags(lowerdev); | ||
356 | } | ||
357 | |||
336 | static const struct ethtool_ops macvlan_ethtool_ops = { | 358 | static const struct ethtool_ops macvlan_ethtool_ops = { |
337 | .get_link = ethtool_op_get_link, | 359 | .get_link = ethtool_op_get_link, |
360 | .get_settings = macvlan_ethtool_get_settings, | ||
338 | .get_rx_csum = macvlan_ethtool_get_rx_csum, | 361 | .get_rx_csum = macvlan_ethtool_get_rx_csum, |
339 | .get_drvinfo = macvlan_ethtool_get_drvinfo, | 362 | .get_drvinfo = macvlan_ethtool_get_drvinfo, |
363 | .get_flags = macvlan_ethtool_get_flags, | ||
340 | }; | 364 | }; |
341 | 365 | ||
342 | static void macvlan_setup(struct net_device *dev) | 366 | static void macvlan_setup(struct net_device *dev) |