static const struct net_device_ops rr_netdev_ops = {
        .ndo_open               = rr_open,
        .ndo_stop               = rr_close,
-       .ndo_do_ioctl           = rr_ioctl,
+       .ndo_siocdevprivate     = rr_siocdevprivate,
        .ndo_start_xmit         = rr_start_xmit,
        .ndo_set_mac_address    = hippi_mac_addr,
 };
 }
 
 
-static int rr_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
+static int rr_siocdevprivate(struct net_device *dev, struct ifreq *rq,
+                            void __user *data, int cmd)
 {
        struct rr_private *rrpriv;
        unsigned char *image, *oldimage;
                        error = -EFAULT;
                        goto gf_out;
                }
-               error = copy_to_user(rq->ifr_data, image, EEPROM_BYTES);
+               error = copy_to_user(data, image, EEPROM_BYTES);
                if (error)
                        error = -EFAULT;
        gf_out:
                        return -EPERM;
                }
 
-               image = memdup_user(rq->ifr_data, EEPROM_BYTES);
+               image = memdup_user(data, EEPROM_BYTES);
                if (IS_ERR(image))
                        return PTR_ERR(image);
 
                return error;
 
        case SIOCRRID:
-               return put_user(0x52523032, (int __user *)rq->ifr_data);
+               return put_user(0x52523032, (int __user *)data);
        default:
                return error;
        }
 
 static netdev_tx_t rr_start_xmit(struct sk_buff *skb,
                                 struct net_device *dev);
 static int rr_close(struct net_device *dev);
-static int rr_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
+static int rr_siocdevprivate(struct net_device *dev, struct ifreq *rq,
+                            void __user *data, int cmd);
 static unsigned int rr_read_eeprom(struct rr_private *rrpriv,
                                   unsigned long offset,
                                   unsigned char *buf,