net: vlan: convert to ndo_hwtstamp_get() / ndo_hwtstamp_set()
[linux-2.6-block.git] / net / 8021q / vlan_dev.c
index b90781b9ece6402664552295e1f07b2fd97c2465..2a7f1b15714ab9dcde24448dbedba1efd0b81aa5 100644 (file)
@@ -354,6 +354,26 @@ out:
        return 0;
 }
 
+static int vlan_hwtstamp_get(struct net_device *dev,
+                            struct kernel_hwtstamp_config *cfg)
+{
+       struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
+
+       return generic_hwtstamp_get_lower(real_dev, cfg);
+}
+
+static int vlan_hwtstamp_set(struct net_device *dev,
+                            struct kernel_hwtstamp_config *cfg,
+                            struct netlink_ext_ack *extack)
+{
+       struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
+
+       if (!net_eq(dev_net(dev), dev_net(real_dev)))
+               return -EOPNOTSUPP;
+
+       return generic_hwtstamp_set_lower(real_dev, cfg, extack);
+}
+
 static int vlan_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
        struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
@@ -365,14 +385,9 @@ static int vlan_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
        ifrr.ifr_ifru = ifr->ifr_ifru;
 
        switch (cmd) {
-       case SIOCSHWTSTAMP:
-               if (!net_eq(dev_net(dev), dev_net(real_dev)))
-                       break;
-               fallthrough;
        case SIOCGMIIPHY:
        case SIOCGMIIREG:
        case SIOCSMIIREG:
-       case SIOCGHWTSTAMP:
                if (netif_device_present(real_dev) && ops->ndo_eth_ioctl)
                        err = ops->ndo_eth_ioctl(real_dev, &ifrr, cmd);
                break;
@@ -1081,6 +1096,8 @@ static const struct net_device_ops vlan_netdev_ops = {
        .ndo_fix_features       = vlan_dev_fix_features,
        .ndo_get_iflink         = vlan_dev_get_iflink,
        .ndo_fill_forward_path  = vlan_dev_fill_forward_path,
+       .ndo_hwtstamp_get       = vlan_hwtstamp_get,
+       .ndo_hwtstamp_set       = vlan_hwtstamp_set,
 };
 
 static void vlan_dev_free(struct net_device *dev)