USB: tty: sort out the request_room handling for whiteheat
authorAlan Cox <alan@linux.intel.com>
Wed, 17 Feb 2010 13:06:57 +0000 (13:06 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 2 Mar 2010 22:55:09 +0000 (14:55 -0800)
This driver has its own (surplus) backup queue system which wants removing
from the receive overflow logic.

Do this at the same time as removing the request_room logic

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/serial/whiteheat.c

index e89e0d589eb64e75359bb965ccea9378132dfa9a..12ed8209ca72aa594d1c33179db89a63c238298b 100644 (file)
@@ -1492,21 +1492,9 @@ static void rx_data_softint(struct work_struct *work)
                wrap = list_entry(tmp, struct whiteheat_urb_wrap, list);
                urb = wrap->urb;
 
-               if (tty && urb->actual_length) {
-                       int len = tty_buffer_request_room(tty,
-                                                       urb->actual_length);
-                       /* This stuff can go away now I suspect */
-                       if (unlikely(len < urb->actual_length)) {
-                               spin_lock_irqsave(&info->lock, flags);
-                               list_add(tmp, &info->rx_urb_q);
-                               spin_unlock_irqrestore(&info->lock, flags);
-                               tty_flip_buffer_push(tty);
-                               schedule_work(&info->rx_work);
-                               goto out;
-                       }
-                       tty_insert_flip_string(tty, urb->transfer_buffer, len);
-                       sent += len;
-               }
+               if (tty && urb->actual_length)
+                       sent += tty_insert_flip_string(tty,
+                               urb->transfer_buffer, urb->actual_length);
 
                urb->dev = port->serial->dev;
                result = usb_submit_urb(urb, GFP_ATOMIC);