return err;
 }
 
+static const struct net_device_ops pn_netdev_ops = {
+       .ndo_open       = pn_net_open,
+       .ndo_stop       = pn_net_close,
+       .ndo_start_xmit = pn_net_xmit,
+       .ndo_change_mtu = pn_net_mtu,
+};
+
 static void pn_net_setup(struct net_device *dev)
 {
        dev->features           = 0;
        dev->addr_len           = 1;
        dev->tx_queue_len       = 1;
 
+       dev->netdev_ops         = &pn_netdev_ops;
        dev->destructor         = free_netdev;
        dev->header_ops         = &phonet_header_ops;
-       dev->open               = pn_net_open;
-       dev->stop               = pn_net_close;
-       dev->hard_start_xmit    = pn_net_xmit; /* mandatory */
-       dev->change_mtu         = pn_net_mtu;
 }
 
 /*-------------------------------------------------------------------------*/
 
        return 0;
 }
 
+static const struct net_device_ops gprs_netdev_ops = {
+       .ndo_open       = gprs_open,
+       .ndo_stop       = gprs_close,
+       .ndo_start_xmit = gprs_xmit,
+       .ndo_change_mtu = gprs_set_mtu,
+};
+
 static void gprs_setup(struct net_device *dev)
 {
        dev->features           = NETIF_F_FRAGLIST;
        dev->addr_len           = 0;
        dev->tx_queue_len       = 10;
 
+       dev->netdev_ops         = &gprs_netdev_ops;
        dev->destructor         = free_netdev;
-       dev->open               = gprs_open;
-       dev->stop               = gprs_close;
-       dev->hard_start_xmit    = gprs_xmit; /* mandatory */
-       dev->change_mtu         = gprs_set_mtu;
 }
 
 /*