[XFS] Fix merge failures
[pandora-kernel.git] / arch / um / os-Linux / drivers / ethertap_kern.c
index 542bcc5..7f6f9a7 100644 (file)
@@ -6,7 +6,7 @@
  * Licensed under the GPL.
  */
 
-#include "linux/init.h"
+#include <linux/init.h>
 #include <linux/netdevice.h>
 #include "etap.h"
 #include "net_kern.h"
@@ -22,7 +22,7 @@ static void etap_init(struct net_device *dev, void *data)
        struct ethertap_data *epri;
        struct ethertap_init *init = data;
 
-       pri = dev->priv;
+       pri = netdev_priv(dev);
        epri = (struct ethertap_data *) pri->user;
        epri->dev_name = init->dev_name;
        epri->gate_addr = init->gate_addr;
@@ -30,41 +30,30 @@ static void etap_init(struct net_device *dev, void *data)
        epri->control_fd = -1;
        epri->dev = dev;
 
-       printk("ethertap backend - %s", epri->dev_name);
+       printk(KERN_INFO "ethertap backend - %s", epri->dev_name);
        if (epri->gate_addr != NULL)
-               printk(", IP = %s", epri->gate_addr);
-       printk("\n");
+               printk(KERN_CONT ", IP = %s", epri->gate_addr);
+       printk(KERN_CONT "\n");
 }
 
-static int etap_read(int fd, struct sk_buff **skb, struct uml_net_private *lp)
+static int etap_read(int fd, struct sk_buff *skb, struct uml_net_private *lp)
 {
        int len;
 
-       *skb = ether_adjust_skb(*skb, ETH_HEADER_ETHERTAP);
-       if (*skb == NULL)
-               return -ENOMEM;
-       len = net_recvfrom(fd, skb_mac_header(*skb),
-                          (*skb)->dev->mtu + 2 * ETH_HEADER_ETHERTAP);
+       len = net_recvfrom(fd, skb_mac_header(skb),
+                          skb->dev->mtu + 2 + ETH_HEADER_ETHERTAP);
        if (len <= 0)
-               return len;
-       skb_pull(*skb, 2);
+               return(len);
+
+       skb_pull(skb, 2);
        len -= 2;
        return len;
 }
 
-static int etap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp)
+static int etap_write(int fd, struct sk_buff *skb, struct uml_net_private *lp)
 {
-       if (skb_headroom(*skb) < 2) {
-               struct sk_buff *skb2;
-
-               skb2 = skb_realloc_headroom(*skb, 2);
-               dev_kfree_skb(*skb);
-               if (skb2 == NULL)
-                       return -ENOMEM;
-               *skb = skb2;
-       }
-       skb_push(*skb, 2);
-       return net_send(fd, (*skb)->data, (*skb)->len);
+       skb_push(skb, 2);
+       return net_send(fd, skb->data, skb->len);
 }
 
 const struct net_kern_info ethertap_kern_info = {
@@ -99,6 +88,7 @@ static struct transport ethertap_transport = {
        .user           = &ethertap_user_info,
        .kern           = &ethertap_kern_info,
        .private_size   = sizeof(struct ethertap_data),
+       .setup_size     = sizeof(struct ethertap_init),
 };
 
 static int register_ethertap(void)