USB: fsl_udc_core: Fix kernel oops on module removal
[safe/jmp/linux-2.6] / drivers / net / plip.c
index 0c46d60..00487f5 100644 (file)
@@ -265,6 +265,16 @@ static const struct header_ops plip_header_ops = {
        .cache  = plip_hard_header_cache,
 };
 
+static const struct net_device_ops plip_netdev_ops = {
+       .ndo_open                = plip_open,
+       .ndo_stop                = plip_close,
+       .ndo_start_xmit          = plip_tx_packet,
+       .ndo_do_ioctl            = plip_ioctl,
+       .ndo_change_mtu          = eth_change_mtu,
+       .ndo_set_mac_address     = eth_mac_addr,
+       .ndo_validate_addr       = eth_validate_addr,
+};
+
 /* Entry point of PLIP driver.
    Probe the hardware, and register/initialize the driver.
 
@@ -280,15 +290,11 @@ plip_init_netdev(struct net_device *dev)
        struct net_local *nl = netdev_priv(dev);
 
        /* Then, override parts of it */
-       dev->hard_start_xmit     = plip_tx_packet;
-       dev->open                = plip_open;
-       dev->stop                = plip_close;
-       dev->do_ioctl            = plip_ioctl;
-
        dev->tx_queue_len        = 10;
        dev->flags               = IFF_POINTOPOINT|IFF_NOARP;
        memset(dev->dev_addr, 0xfc, ETH_ALEN);
 
+       dev->netdev_ops          = &plip_netdev_ops;
        dev->header_ops          = &plip_header_ops;
 
 
@@ -952,12 +958,12 @@ plip_tx_packet(struct sk_buff *skb, struct net_device *dev)
        struct plip_local *snd = &nl->snd_data;
 
        if (netif_queue_stopped(dev))
-               return 1;
+               return NETDEV_TX_BUSY;
 
        /* We may need to grab the bus */
        if (!nl->port_owner) {
                if (parport_claim(nl->pardev))
-                       return 1;
+                       return NETDEV_TX_BUSY;
                nl->port_owner = 1;
        }
 
@@ -966,7 +972,7 @@ plip_tx_packet(struct sk_buff *skb, struct net_device *dev)
        if (skb->len > dev->mtu + dev->hard_header_len) {
                printk(KERN_WARNING "%s: packet too big, %d.\n", dev->name, (int)skb->len);
                netif_start_queue (dev);
-               return 1;
+               return NETDEV_TX_BUSY;
        }
 
        if (net_debug > 2)
@@ -984,7 +990,7 @@ plip_tx_packet(struct sk_buff *skb, struct net_device *dev)
        schedule_work(&nl->immediate);
        spin_unlock_irq(&nl->lock);
 
-       return 0;
+       return NETDEV_TX_OK;
 }
 
 static void