USB: opticon: move private urb initialisation to attach
authorJohan Hovold <jhovold@gmail.com>
Sun, 18 Nov 2012 12:23:22 +0000 (13:23 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 21 Nov 2012 21:33:54 +0000 (13:33 -0800)
There no need to reinitialise the private urb at every open.

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

index cb8674e..8c66471 100644 (file)
@@ -184,13 +184,6 @@ static int opticon_open(struct tty_struct *tty, struct usb_serial_port *port)
        /* Clear RTS line */
        send_control_msg(port, CONTROL_RTS, 0);
 
-       /* Setup the read URB and start reading from the device */
-       usb_fill_bulk_urb(priv->bulk_read_urb, priv->udev,
-                         usb_rcvbulkpipe(priv->udev,
-                                         priv->bulk_address),
-                         priv->bulk_in_buffer, priv->buffer_size,
-                         opticon_read_bulk_callback, priv);
-
        /* clear the halt status of the enpoint */
        usb_clear_halt(priv->udev, priv->bulk_read_urb->pipe);
 
@@ -530,6 +523,12 @@ static int opticon_startup(struct usb_serial *serial)
                goto error;
        }
 
+       usb_fill_bulk_urb(priv->bulk_read_urb, serial->dev,
+                               usb_rcvbulkpipe(serial->dev,
+                                               priv->bulk_address),
+                               priv->bulk_in_buffer, priv->buffer_size,
+                               opticon_read_bulk_callback, priv);
+
        usb_set_serial_data(serial, priv);
        return 0;