return 0;
 }
 
+static const struct net_device_ops ixpdev_netdev_ops = {
+       .ndo_open               = ixpdev_open,
+       .ndo_stop               = ixpdev_close,
+       .ndo_start_xmit         = ixpdev_xmit,
+       .ndo_change_mtu         = eth_change_mtu,
+       .ndo_validate_addr      = eth_validate_addr,
+       .ndo_set_mac_address    = eth_mac_addr,
+#ifdef CONFIG_NET_POLL_CONTROLLER
+       .ndo_poll_controller    = ixpdev_poll_controller,
+#endif
+};
+
 struct net_device *ixpdev_alloc(int channel, int sizeof_priv)
 {
        struct net_device *dev;
        if (dev == NULL)
                return NULL;
 
-       dev->hard_start_xmit = ixpdev_xmit;
-       dev->open = ixpdev_open;
-       dev->stop = ixpdev_close;
-#ifdef CONFIG_NET_POLL_CONTROLLER
-       dev->poll_controller = ixpdev_poll_controller;
-#endif
+       dev->netdev_ops = &ixpdev_netdev_ops;
 
        dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM;