return 0;
 }
 
+static int dev_do_ioctl(struct net_device *dev,
+                       struct ifreq *ifr, unsigned int cmd)
+{
+       const struct net_device_ops *ops = dev->netdev_ops;
+       int err = -EOPNOTSUPP;
+
+       if (ops->ndo_do_ioctl) {
+               if (netif_device_present(dev))
+                       err = ops->ndo_do_ioctl(dev, ifr, cmd);
+               else
+                       err = -ENODEV;
+       }
+
+       return err;
+}
+
 /*
  *     Perform the SIOCxIFxxx calls, inside rtnl_lock()
  */
                    cmd == SIOCSHWTSTAMP ||
                    cmd == SIOCGHWTSTAMP ||
                    cmd == SIOCWANDEV) {
-                       err = -EOPNOTSUPP;
-                       if (ops->ndo_do_ioctl) {
-                               if (netif_device_present(dev))
-                                       err = ops->ndo_do_ioctl(dev, ifr, cmd);
-                               else
-                                       err = -ENODEV;
-                       }
+                       err = dev_do_ioctl(dev, ifr, cmd);
                } else
                        err = -EINVAL;