vserver 2.0 rc7
[linux-2.6.git] / drivers / net / wan / x25_asy.c
index 4243fea..1c540d8 100644 (file)
@@ -18,7 +18,7 @@
 
 #include <asm/system.h>
 #include <asm/uaccess.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
 #include <linux/string.h>
 #include <linux/mm.h>
 #include <linux/interrupt.h>
 #include <linux/init.h>
 #include "x25_asy.h"
 
+#include <net/x25device.h>
+
 static struct net_device **x25_asy_devs;
 static int x25_asy_maxdev = SL_NRUNIT;
 
-MODULE_PARM(x25_asy_maxdev, "i");
+module_param(x25_asy_maxdev, int, 0);
 MODULE_LICENSE("GPL");
 
 static int x25_asy_esc(unsigned char *p, unsigned char *d, int len);
@@ -105,13 +107,9 @@ static struct x25_asy *x25_asy_alloc(void)
 static void x25_asy_free(struct x25_asy *sl)
 {
        /* Free all X.25 frame buffers. */
-       if (sl->rbuff)  {
-               kfree(sl->rbuff);
-       }
+       kfree(sl->rbuff);
        sl->rbuff = NULL;
-       if (sl->xbuff)  {
-               kfree(sl->xbuff);
-       }
+       kfree(sl->xbuff);
        sl->xbuff = NULL;
 
        if (!test_and_clear_bit(SLF_INUSE, &sl->flags)) {
@@ -132,10 +130,8 @@ static int x25_asy_change_mtu(struct net_device *dev, int newmtu)
        {
                printk("%s: unable to grow X.25 buffers, MTU change cancelled.\n",
                       dev->name);
-               if (xbuff != NULL)  
-                       kfree(xbuff);
-               if (rbuff != NULL)  
-                       kfree(rbuff);
+               kfree(xbuff);
+               kfree(rbuff);
                return -ENOMEM;
        }
 
@@ -167,10 +163,8 @@ static int x25_asy_change_mtu(struct net_device *dev, int newmtu)
 
        spin_unlock_bh(&sl->lock);
 
-       if (xbuff != NULL) 
-               kfree(xbuff);
-       if (rbuff != NULL)
-               kfree(rbuff);
+       kfree(xbuff);
+       kfree(rbuff);
        return 0;
 }
 
@@ -209,10 +203,8 @@ static void x25_asy_bump(struct x25_asy *sl)
                return;
        }
        skb_push(skb,1);        /* LAPB internal control */
-       skb->dev = sl->dev;
        memcpy(skb_put(skb,count), sl->rbuff, count);
-       skb->mac.raw=skb->data;
-       skb->protocol=htons(ETH_P_X25);
+       skb->protocol = x25_type_trans(skb, sl->dev);
        if((err=lapb_data_received(skb->dev, skb))!=LAPB_OK)
        {
                kfree_skb(skb);
@@ -253,7 +245,7 @@ static void x25_asy_encaps(struct x25_asy *sl, unsigned char *icp, int len)
         *       14 Oct 1994  Dmitry Gorodchanin.
         */
        sl->tty->flags |= (1 << TTY_DO_WRITE_WAKEUP);
-       actual = sl->tty->driver->write(sl->tty, 0, sl->xbuff, count);
+       actual = sl->tty->driver->write(sl->tty, sl->xbuff, count);
        sl->xleft = count - actual;
        sl->xhead = sl->xbuff + actual;
        /* VSV */
@@ -283,7 +275,7 @@ static void x25_asy_write_wakeup(struct tty_struct *tty)
                return;
        }
 
-       actual = tty->driver->write(tty, 0, sl->xhead, sl->xleft);
+       actual = tty->driver->write(tty, sl->xhead, sl->xleft);
        sl->xleft -= actual;
        sl->xhead += actual;
 }
@@ -419,11 +411,7 @@ static void x25_asy_connected(struct net_device *dev, int reason)
        ptr  = skb_put(skb, 1);
        *ptr = 0x01;
 
-       skb->dev      = sl->dev;
-       skb->protocol = htons(ETH_P_X25);
-       skb->mac.raw  = skb->data;
-       skb->pkt_type = PACKET_HOST;
-
+       skb->protocol = x25_type_trans(skb, sl->dev);
        netif_rx(skb);
        sl->dev->last_rx = jiffies;
 }
@@ -442,11 +430,7 @@ static void x25_asy_disconnected(struct net_device *dev, int reason)
        ptr  = skb_put(skb, 1);
        *ptr = 0x02;
 
-       skb->dev      = sl->dev;
-       skb->protocol = htons(ETH_P_X25);
-       skb->mac.raw  = skb->data;
-       skb->pkt_type = PACKET_HOST;
-
+       skb->protocol = x25_type_trans(skb, sl->dev);
        netif_rx(skb);
        sl->dev->last_rx = jiffies;
 }
@@ -627,7 +611,7 @@ static void x25_asy_close_tty(struct tty_struct *tty)
                (void) dev_close(sl->dev);
        }
 
-       tty->disc_data = 0;
+       tty->disc_data = NULL;
        sl->tty = NULL;
        x25_asy_free(sl);
 }
@@ -733,7 +717,7 @@ static int x25_asy_ioctl(struct tty_struct *tty, struct file *file,
 
        switch(cmd) {
        case SIOCGIFNAME:
-               if (copy_to_user((void *)arg, sl->dev->name,
+               if (copy_to_user((void __user *)arg, sl->dev->name,
                                        strlen(sl->dev->name) + 1))
                        return -EFAULT;
                return 0;