]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
USB: omninet: switch to generic read implementation
authorJohan Hovold <jhovold@gmail.com>
Tue, 16 Apr 2013 16:01:23 +0000 (18:01 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Apr 2013 17:05:34 +0000 (10:05 -0700)
Switch to the more efficient generic read implementation.

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/omninet.c

index 7aaf9692b334f4f6d9c6ab3cce1780f880140e57..5739bf6f7200923afd280219572987a0d9b8f104 100644 (file)
@@ -33,8 +33,7 @@
 
 /* function prototypes */
 static int  omninet_open(struct tty_struct *tty, struct usb_serial_port *port);
-static void omninet_close(struct usb_serial_port *port);
-static void omninet_read_bulk_callback(struct urb *urb);
+static void omninet_process_read_urb(struct urb *urb);
 static void omninet_write_bulk_callback(struct urb *urb);
 static int  omninet_write(struct tty_struct *tty, struct usb_serial_port *port,
                                const unsigned char *buf, int count);
@@ -61,11 +60,10 @@ static struct usb_serial_driver zyxel_omninet_device = {
        .port_probe =           omninet_port_probe,
        .port_remove =          omninet_port_remove,
        .open =                 omninet_open,
-       .close =                omninet_close,
        .write =                omninet_write,
        .write_room =           omninet_write_room,
-       .read_bulk_callback =   omninet_read_bulk_callback,
        .write_bulk_callback =  omninet_write_bulk_callback,
+       .process_read_urb =     omninet_process_read_urb,
        .disconnect =           omninet_disconnect,
 };
 
@@ -134,26 +132,13 @@ static int omninet_open(struct tty_struct *tty, struct usb_serial_port *port)
 {
        struct usb_serial       *serial = port->serial;
        struct usb_serial_port  *wport;
-       int                     result = 0;
 
        wport = serial->port[1];
        tty_port_tty_set(&wport->port, tty);
 
-       /* Start reading from the device */
-       result = usb_submit_urb(port->read_urb, GFP_KERNEL);
-       if (result)
-               dev_err(&port->dev,
-                       "%s - failed submitting read urb, error %d\n",
-                       __func__, result);
-       return result;
-}
-
-static void omninet_close(struct usb_serial_port *port)
-{
-       usb_kill_urb(port->read_urb);
+       return usb_serial_generic_open(tty, port);
 }
 
-
 #define OMNINET_HEADERLEN      4
 #define OMNINET_BULKOUTSIZE    64
 #define OMNINET_PAYLOADSIZE    (OMNINET_BULKOUTSIZE - OMNINET_HEADERLEN)
@@ -175,28 +160,6 @@ static void omninet_process_read_urb(struct urb *urb)
        tty_flip_buffer_push(&port->port);
 }
 
-static void omninet_read_bulk_callback(struct urb *urb)
-{
-       struct usb_serial_port  *port   = urb->context;
-       int status = urb->status;
-       int result;
-
-       if (status) {
-               dev_dbg(&port->dev, "%s - nonzero read bulk status received: %d\n",
-                       __func__, status);
-               return;
-       }
-
-       omninet_process_read_urb(urb);
-
-       /* Continue trying to always read  */
-       result = usb_submit_urb(urb, GFP_ATOMIC);
-       if (result)
-               dev_err(&port->dev,
-                       "%s - failed resubmitting read urb, error %d\n",
-                       __func__, result);
-}
-
 static int omninet_write(struct tty_struct *tty, struct usb_serial_port *port,
                                        const unsigned char *buf, int count)
 {