headers: remove sched.h from interrupt.h
[safe/jmp/linux-2.6] / drivers / net / wan / cycx_x25.c
index 5fa5292..cd8cb95 100644 (file)
@@ -84,6 +84,7 @@
 #include <linux/kernel.h>      /* printk(), and other useful stuff */
 #include <linux/module.h>
 #include <linux/string.h>      /* inline memset(), etc. */
+#include <linux/sched.h>
 #include <linux/slab.h>                /* kmalloc(), kfree() */
 #include <linux/stddef.h>      /* offsetof(), etc. */
 #include <linux/wanrouter.h>   /* WAN router definitions */
@@ -139,8 +140,8 @@ static int cycx_netdevice_hard_header(struct sk_buff *skb,
                                      const void *daddr, const void *saddr,
                                      unsigned len);
 static int cycx_netdevice_rebuild_header(struct sk_buff *skb);
-static int cycx_netdevice_hard_start_xmit(struct sk_buff *skb,
-                                         struct net_device *dev);
+static netdev_tx_t cycx_netdevice_hard_start_xmit(struct sk_buff *skb,
+                                                       struct net_device *dev);
 
 static struct net_device_stats *
                        cycx_netdevice_get_stats(struct net_device *dev);
@@ -355,12 +356,6 @@ static int cycx_wan_update(struct wan_device *wandev)
        return 0;
 }
 
-/* callback to initialize device */
-static void cycx_x25_chan_setup(struct net_device *dev)
-{
-       dev->init = cycx_netdevice_init;
-}
-
 /* Create new logical channel.
  * This routine is called by the router when ROUTER_IFNEW IOCTL is being
  * handled.
@@ -476,6 +471,27 @@ static const struct header_ops cycx_header_ops = {
        .rebuild = cycx_netdevice_rebuild_header,
 };
 
+static const struct net_device_ops cycx_netdev_ops = {
+       .ndo_init       = cycx_netdevice_init,
+       .ndo_open       = cycx_netdevice_open,
+       .ndo_stop       = cycx_netdevice_stop,
+       .ndo_start_xmit = cycx_netdevice_hard_start_xmit,
+       .ndo_get_stats  = cycx_netdevice_get_stats,
+};
+
+static void cycx_x25_chan_setup(struct net_device *dev)
+{
+       /* Initialize device driver entry points */
+       dev->netdev_ops         = &cycx_netdev_ops;
+       dev->header_ops         = &cycx_header_ops;
+
+       /* Initialize media-specific parameters */
+       dev->mtu                = CYCX_X25_CHAN_MTU;
+       dev->type               = ARPHRD_HWX25; /* ARP h/w type */
+       dev->hard_header_len    = 0;            /* media header length */
+       dev->addr_len           = 0;            /* hardware address length */
+}
+
 /* Initialize Linux network interface.
  *
  * This routine is called only once for each interface, during Linux network
@@ -487,20 +503,6 @@ static int cycx_netdevice_init(struct net_device *dev)
        struct cycx_device *card = chan->card;
        struct wan_device *wandev = &card->wandev;
 
-       /* Initialize device driver entry points */
-       dev->open               = cycx_netdevice_open;
-       dev->stop               = cycx_netdevice_stop;
-       dev->header_ops         = &cycx_header_ops;
-
-       dev->hard_start_xmit    = cycx_netdevice_hard_start_xmit;
-       dev->get_stats          = cycx_netdevice_get_stats;
-
-       /* Initialize media-specific parameters */
-       dev->mtu                = CYCX_X25_CHAN_MTU;
-       dev->type               = ARPHRD_HWX25; /* ARP h/w type */
-       dev->hard_header_len    = 0;            /* media header length */
-       dev->addr_len           = 0;            /* hardware address length */
-
        if (!chan->svc)
                *(__be16*)dev->dev_addr = htons(chan->lcn);
 
@@ -592,8 +594,8 @@ static int cycx_netdevice_rebuild_header(struct sk_buff *skb)
  *    bottom half" (with interrupts enabled).
  * 2. Setting tbusy flag will inhibit further transmit requests from the
  *    protocol stack and can be used for flow control with protocol layer. */
-static int cycx_netdevice_hard_start_xmit(struct sk_buff *skb,
-                                         struct net_device *dev)
+static netdev_tx_t cycx_netdevice_hard_start_xmit(struct sk_buff *skb,
+                                                       struct net_device *dev)
 {
        struct cycx_x25_channel *chan = netdev_priv(dev);
        struct cycx_device *card = chan->card;
@@ -614,7 +616,7 @@ static int cycx_netdevice_hard_start_xmit(struct sk_buff *skb,
                case WAN_DISCONNECTED:
                        if (cycx_x25_chan_connect(dev)) {
                                netif_stop_queue(dev);
-                               return -EBUSY;
+                               return NETDEV_TX_BUSY;
                        }
                        /* fall thru */
                case WAN_CONNECTED:
@@ -623,7 +625,7 @@ static int cycx_netdevice_hard_start_xmit(struct sk_buff *skb,
                        netif_stop_queue(dev);
 
                        if (cycx_x25_chan_send(dev, skb))
-                               return -EBUSY;
+                               return NETDEV_TX_BUSY;
 
                        break;
                default:
@@ -655,14 +657,14 @@ static int cycx_netdevice_hard_start_xmit(struct sk_buff *skb,
                if (cycx_x25_chan_send(dev, skb)) {
                        /* prepare for future retransmissions */
                        skb_push(skb, 1);
-                       return -EBUSY;
+                       return NETDEV_TX_BUSY;
                }
        }
 
 free_packet:
        dev_kfree_skb(skb);
 
-       return 0;
+       return NETDEV_TX_OK;
 }
 
 /* Get Ethernet-style interface statistics.