MODULE_PARM_DESC (msg_level, "Override default message level");
 
 MODULE_DEVICE_TABLE(usb, pegasus_ids);
+static const struct net_device_ops pegasus_netdev_ops;
 
 static int update_eth_regs_async(pegasus_t *);
 /* Aargh!!! I _really_ hate such tweaks */
        pegasus->intf = intf;
        pegasus->usb = dev;
        pegasus->net = net;
-       net->open = pegasus_open;
-       net->stop = pegasus_close;
+
+
        net->watchdog_timeo = PEGASUS_TX_TIMEOUT;
-       net->tx_timeout = pegasus_tx_timeout;
-       net->do_ioctl = pegasus_ioctl;
-       net->hard_start_xmit = pegasus_start_xmit;
-       net->set_multicast_list = pegasus_set_multicast;
-       net->get_stats = pegasus_netdev_stats;
+       net->netdev_ops = &pegasus_netdev_ops;
        SET_ETHTOOL_OPS(net, &ops);
        pegasus->mii.dev = net;
        pegasus->mii.mdio_read = mdio_read;
        return 0;
 }
 
+static const struct net_device_ops pegasus_netdev_ops = {
+       .ndo_open =                     pegasus_open,
+       .ndo_stop =                     pegasus_close,
+       .ndo_do_ioctl =                 pegasus_ioctl,
+       .ndo_start_xmit =               pegasus_start_xmit,
+       .ndo_set_multicast_list =       pegasus_set_multicast,
+       .ndo_get_stats =                pegasus_netdev_stats,
+       .ndo_tx_timeout =               pegasus_tx_timeout,
+};
+
 static struct usb_driver pegasus_driver = {
        .name = driver_name,
        .probe = pegasus_probe,