static irqreturn_t airo_interrupt(int irq, void* dev_id);
 static int airo_thread(void *data);
 static void timer_func(struct net_device *dev);
-static int airo_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
+static int airo_siocdevprivate(struct net_device *dev, struct ifreq *rq, void __user *, int cmd);
 static struct iw_statistics *airo_get_wireless_stats(struct net_device *dev);
 #ifdef CISCO_EXT
 static int readrids(struct net_device *dev, aironet_ioctl *comp);
        .ndo_start_xmit         = airo_start_xmit11,
        .ndo_get_stats          = airo_get_stats,
        .ndo_set_mac_address    = airo_set_mac_address,
-       .ndo_do_ioctl           = airo_ioctl,
+       .ndo_siocdevprivate     = airo_siocdevprivate,
 };
 
 static void wifi_setup(struct net_device *dev)
        .ndo_get_stats          = airo_get_stats,
        .ndo_set_rx_mode        = airo_set_multicast_list,
        .ndo_set_mac_address    = airo_set_mac_address,
-       .ndo_do_ioctl           = airo_ioctl,
+       .ndo_siocdevprivate     = airo_siocdevprivate,
        .ndo_validate_addr      = eth_validate_addr,
 };
 
        .ndo_get_stats          = airo_get_stats,
        .ndo_set_rx_mode        = airo_set_multicast_list,
        .ndo_set_mac_address    = airo_set_mac_address,
-       .ndo_do_ioctl           = airo_ioctl,
+       .ndo_siocdevprivate     = airo_siocdevprivate,
        .ndo_validate_addr      = eth_validate_addr,
 };
 
  * Javier Achirica did a great job of merging code from the unnamed CISCO
  * developer that added support for flashing the card.
  */
-static int airo_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
+static int airo_siocdevprivate(struct net_device *dev, struct ifreq *rq,
+                              void __user *data, int cmd)
 {
        int rc = 0;
        struct airo_info *ai = dev->ml_priv;
        {
                int val = AIROMAGIC;
                aironet_ioctl com;
-               if (copy_from_user(&com, rq->ifr_data, sizeof(com)))
+               if (copy_from_user(&com, data, sizeof(com)))
                        rc = -EFAULT;
                else if (copy_to_user(com.data, (char *)&val, sizeof(val)))
                        rc = -EFAULT;
                 */
        {
                aironet_ioctl com;
-               if (copy_from_user(&com, rq->ifr_data, sizeof(com))) {
+               if (copy_from_user(&com, data, sizeof(com))) {
                        rc = -EFAULT;
                        break;
                }