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

Commit e1944017 authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman
Browse files

USB: fix latency in uhci-hcd and ohci-hcd



Commits c44b2250 (UHCI: implement new
semantics for URB_ISO_ASAP) and
6a41b4d3 (OHCI: implement new
semantics for URB_ISO_ASAP) increased the latency for isochronous URBs
in uhci-hcd and ohci-hcd respectively to 2 milliseconds, in an
attempt to avoid underruns.  It turns out that not only was this
unnecessary -- 1-ms latency works okay -- it also causes problems with
certain application loads such as real-time audio.

This patch changes the latency for both drivers back to 1 ms.

This should be applied to -stable kernels going back to 3.8.

Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Reported-and-tested-by: default avatarJoe Rayhawk <jrayhawk@fairlystable.org>
CC: Clemens Ladisch <clemens@ladisch.de>
CC: <stable@vger.kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 997ff893
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -233,7 +233,7 @@ static int ohci_urb_enqueue (
			urb->start_frame = frame;
		}
	} else if (ed->type == PIPE_ISOCHRONOUS) {
		u16	next = ohci_frame_no(ohci) + 2;
		u16	next = ohci_frame_no(ohci) + 1;
		u16	frame = ed->last_iso + ed->interval;

		/* Behind the scheduling threshold? */
+1 −1
Original line number Diff line number Diff line
@@ -1287,7 +1287,7 @@ static int uhci_submit_isochronous(struct uhci_hcd *uhci, struct urb *urb,
		return -EINVAL;		/* Can't change the period */

	} else {
		next = uhci->frame_number + 2;
		next = uhci->frame_number + 1;

		/* Find the next unused frame */
		if (list_empty(&qh->queue)) {