Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 67ccbd6f authored by Alan Cox's avatar Alan Cox Committed by Greg Kroah-Hartman
Browse files

USB: tty: sort out the request_room handling for whiteheat



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: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 5d3034ab
Loading
Loading
Loading
Loading
+3 −15
Original line number Diff line number Diff line
@@ -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);