irda: convert to netdev_tx_t
[linux-2.6.git] / drivers / net / irda / kingsun-sir.c
index b4a6171..2fc30b4 100644 (file)
@@ -150,15 +150,13 @@ static void kingsun_send_irq(struct urb *urb)
 /*
  * Called from net/core when new frame is available.
  */
-static int kingsun_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
+static netdev_tx_t kingsun_hard_xmit(struct sk_buff *skb,
+                                          struct net_device *netdev)
 {
        struct kingsun_cb *kingsun;
        int wraplen;
        int ret = 0;
 
-       if (skb == NULL || netdev == NULL)
-               return -EINVAL;
-
        netif_stop_queue(netdev);
 
        /* the IRDA wrapping routines don't deal with non linear skb */
@@ -197,7 +195,7 @@ static int kingsun_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
        dev_kfree_skb(skb);
        spin_unlock(&kingsun->lock);
 
-       return ret;
+       return NETDEV_TX_OK;
 }
 
 /* Receive callback function */
@@ -418,6 +416,12 @@ static int kingsun_net_ioctl(struct net_device *netdev, struct ifreq *rq,
        return ret;
 }
 
+static const struct net_device_ops kingsun_ops = {
+       .ndo_start_xmit      = kingsun_hard_xmit,
+       .ndo_open            = kingsun_net_open,
+       .ndo_stop            = kingsun_net_close,
+       .ndo_do_ioctl        = kingsun_net_ioctl,
+};
 
 /*
  * This routine is called by the USB subsystem for each new device
@@ -520,10 +524,7 @@ static int kingsun_probe(struct usb_interface *intf,
        irda_qos_bits_to_value(&kingsun->qos);
 
        /* Override the network functions we need to use */
-       net->hard_start_xmit = kingsun_hard_xmit;
-       net->open            = kingsun_net_open;
-       net->stop            = kingsun_net_close;
-       net->do_ioctl        = kingsun_net_ioctl;
+       net->netdev_ops = &kingsun_ops;
 
        ret = register_netdev(net);
        if (ret != 0)