aboutsummaryrefslogtreecommitdiffstats
path: root/net/8021q/vlan_dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/8021q/vlan_dev.c')
-rw-r--r--net/8021q/vlan_dev.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 8883e9c8a223..c269fcbd13d5 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -648,6 +648,26 @@ static void vlan_dev_uninit(struct net_device *dev)
648 } 648 }
649} 649}
650 650
651static int vlan_ethtool_get_settings(struct net_device *dev,
652 struct ethtool_cmd *cmd)
653{
654 const struct vlan_dev_info *vlan = vlan_dev_info(dev);
655 struct net_device *real_dev = vlan->real_dev;
656
657 if (!real_dev->ethtool_ops->get_settings)
658 return -EOPNOTSUPP;
659
660 return real_dev->ethtool_ops->get_settings(real_dev, cmd);
661}
662
663static void vlan_ethtool_get_drvinfo(struct net_device *dev,
664 struct ethtool_drvinfo *info)
665{
666 strcpy(info->driver, vlan_fullname);
667 strcpy(info->version, vlan_version);
668 strcpy(info->fw_version, "N/A");
669}
670
651static u32 vlan_ethtool_get_rx_csum(struct net_device *dev) 671static u32 vlan_ethtool_get_rx_csum(struct net_device *dev)
652{ 672{
653 const struct vlan_dev_info *vlan = vlan_dev_info(dev); 673 const struct vlan_dev_info *vlan = vlan_dev_info(dev);
@@ -672,6 +692,8 @@ static u32 vlan_ethtool_get_flags(struct net_device *dev)
672} 692}
673 693
674static const struct ethtool_ops vlan_ethtool_ops = { 694static const struct ethtool_ops vlan_ethtool_ops = {
695 .get_settings = vlan_ethtool_get_settings,
696 .get_drvinfo = vlan_ethtool_get_drvinfo,
675 .get_link = ethtool_op_get_link, 697 .get_link = ethtool_op_get_link,
676 .get_rx_csum = vlan_ethtool_get_rx_csum, 698 .get_rx_csum = vlan_ethtool_get_rx_csum,
677 .get_flags = vlan_ethtool_get_flags, 699 .get_flags = vlan_ethtool_get_flags,