Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[pandora-kernel.git] / arch / um / drivers / daemon_user.c
index 8d2008f..f23c109 100644 (file)
@@ -1,24 +1,23 @@
 /*
- * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) and 
+ * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
+ * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) and
  * James Leu (jleu@mindspring.net).
  * Copyright (C) 2001 by various other people who didn't put their name here.
  * Licensed under the GPL.
  */
 
-#include <errno.h>
-#include <unistd.h>
 #include <stdint.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
 #include <sys/socket.h>
-#include <sys/un.h>
 #include <sys/time.h>
-#include "net_user.h"
+#include <sys/un.h>
 #include "daemon.h"
-#include "kern_util.h"
-#include "user.h"
+#include "net_user.h"
 #include "os.h"
 #include "um_malloc.h"
-
-#define MAX_PACKET (ETH_MAX_PACKET + ETH_HEADER_OTHER)
+#include "user.h"
 
 enum request_type { REQ_NEW_CONTROL };
 
@@ -36,8 +35,9 @@ static struct sockaddr_un *new_addr(void *name, int len)
        struct sockaddr_un *sun;
 
        sun = kmalloc(sizeof(struct sockaddr_un), UM_GFP_KERNEL);
-       if(sun == NULL){
-               printk("new_addr: allocation of sockaddr_un failed\n");
+       if (sun == NULL) {
+               printk(UM_KERN_ERR "new_addr: allocation of sockaddr_un "
+                      "failed\n");
                return NULL;
        }
        sun->sun_family = AF_UNIX;
@@ -54,38 +54,39 @@ static int connect_to_switch(struct daemon_data *pri)
        int fd, n, err;
 
        pri->control = socket(AF_UNIX, SOCK_STREAM, 0);
-       if(pri->control < 0){
+       if (pri->control < 0) {
                err = -errno;
-               printk("daemon_open : control socket failed, errno = %d\n", 
-                      -err);
+               printk(UM_KERN_ERR "daemon_open : control socket failed, "
+                      "errno = %d\n", -err);
                return err;
        }
 
-       if(connect(pri->control, (struct sockaddr *) ctl_addr, 
-                  sizeof(*ctl_addr)) < 0){
+       if (connect(pri->control, (struct sockaddr *) ctl_addr,
+                  sizeof(*ctl_addr)) < 0) {
                err = -errno;
-               printk("daemon_open : control connect failed, errno = %d\n",
-                      -err);
+               printk(UM_KERN_ERR "daemon_open : control connect failed, "
+                      "errno = %d\n", -err);
                goto out;
        }
 
        fd = socket(AF_UNIX, SOCK_DGRAM, 0);
-       if(fd < 0){
+       if (fd < 0) {
                err = -errno;
-               printk("daemon_open : data socket failed, errno = %d\n",
-                      -err);
+               printk(UM_KERN_ERR "daemon_open : data socket failed, "
+                      "errno = %d\n", -err);
                goto out;
        }
-       if(bind(fd, (struct sockaddr *) local_addr, sizeof(*local_addr)) < 0){
+       if (bind(fd, (struct sockaddr *) local_addr, sizeof(*local_addr)) < 0) {
                err = -errno;
-               printk("daemon_open : data bind failed, errno = %d\n",
-                      -err);
+               printk(UM_KERN_ERR "daemon_open : data bind failed, "
+                      "errno = %d\n", -err);
                goto out_close;
        }
 
        sun = kmalloc(sizeof(struct sockaddr_un), UM_GFP_KERNEL);
-       if(sun == NULL){
-               printk("new_addr: allocation of sockaddr_un failed\n");
+       if (sun == NULL) {
+               printk(UM_KERN_ERR "new_addr: allocation of sockaddr_un "
+                      "failed\n");
                err = -ENOMEM;
                goto out_close;
        }
@@ -94,18 +95,18 @@ static int connect_to_switch(struct daemon_data *pri)
        req.version = SWITCH_VERSION;
        req.type = REQ_NEW_CONTROL;
        req.sock = *local_addr;
-       n = os_write_file(pri->control, &req, sizeof(req));
-       if(n != sizeof(req)){
-               printk("daemon_open : control setup request failed, err = %d\n",
-                      -n);
+       n = write(pri->control, &req, sizeof(req));
+       if (n != sizeof(req)) {
+               printk(UM_KERN_ERR "daemon_open : control setup request "
+                      "failed, err = %d\n", -errno);
                err = -ENOTCONN;
                goto out_free;
        }
 
-       n = os_read_file(pri->control, sun, sizeof(*sun));
-       if(n != sizeof(*sun)){
-               printk("daemon_open : read of data socket failed, err = %d\n",
-                      -n);
+       n = read(pri->control, sun, sizeof(*sun));
+       if (n != sizeof(*sun)) {
+               printk(UM_KERN_ERR "daemon_open : read of data socket failed, "
+                      "err = %d\n", -errno);
                err = -ENOTCONN;
                goto out_free;
        }
@@ -116,9 +117,9 @@ static int connect_to_switch(struct daemon_data *pri)
  out_free:
        kfree(sun);
  out_close:
-       os_close_file(fd);
+       close(fd);
  out:
-       os_close_file(pri->control);
+       close(pri->control);
        return err;
 }
 
@@ -132,8 +133,8 @@ static int daemon_user_init(void *data, void *dev)
                int usecs;
        } name;
 
-       if(!strcmp(pri->sock_type, "unix"))
-               pri->ctl_addr = new_addr(pri->ctl_sock, 
+       if (!strcmp(pri->sock_type, "unix"))
+               pri->ctl_addr = new_addr(pri->ctl_sock,
                                         strlen(pri->ctl_sock) + 1);
        name.zero = 0;
        name.pid = os_getpid();
@@ -142,7 +143,7 @@ static int daemon_user_init(void *data, void *dev)
        pri->local_addr = new_addr(&name, sizeof(name));
        pri->dev = dev;
        pri->fd = connect_to_switch(pri);
-       if(pri->fd < 0){
+       if (pri->fd < 0) {
                kfree(pri->local_addr);
                pri->local_addr = NULL;
                return pri->fd;
@@ -161,9 +162,9 @@ static void daemon_remove(void *data)
 {
        struct daemon_data *pri = data;
 
-       os_close_file(pri->fd);
+       close(pri->fd);
        pri->fd = -1;
-       os_close_file(pri->control);
+       close(pri->control);
        pri->control = -1;
 
        kfree(pri->data_addr);
@@ -181,18 +182,13 @@ int daemon_user_write(int fd, void *buf, int len, struct daemon_data *pri)
        return net_sendto(fd, buf, len, data_addr, sizeof(*data_addr));
 }
 
-static int daemon_set_mtu(int mtu, void *data)
-{
-       return mtu;
-}
-
 const struct net_user_info daemon_user_info = {
        .init           = daemon_user_init,
        .open           = daemon_open,
        .close          = NULL,
        .remove         = daemon_remove,
-       .set_mtu        = daemon_set_mtu,
        .add_address    = NULL,
        .delete_address = NULL,
-       .max_packet     = MAX_PACKET - ETH_HEADER_OTHER
+       .mtu            = ETH_MAX_PACKET,
+       .max_packet     = ETH_MAX_PACKET + ETH_HEADER_OTHER,
 };