Re: Audio I/O parameters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 27 Jul 2013, James Stone wrote:

> OK. So this seems to have solved the starting jack at low latencies
> problem, but I am still getting sporadic cannot submit urb (err = -18)
> under normal use. Will try to add some more info to the #1191603
> report if I can get it to happen while logging IRQ.

Do these errors occur at the start of a session or somewhere in the 
middle?

If they occur in the middle, they indicate possible underruns.  The
patch below will greatly reduce the number of these errors (probably to
the point where you don't see any at all), although it won't fix
possible underruns.

Alan Stern



Index: usb-3.10/drivers/usb/host/ehci-sched.c
===================================================================
--- usb-3.10.orig/drivers/usb/host/ehci-sched.c
+++ usb-3.10/drivers/usb/host/ehci-sched.c
@@ -1388,7 +1388,7 @@ iso_stream_schedule (
 	struct ehci_iso_stream	*stream
 )
 {
-	u32			now, base, next, start, period, span;
+	u32			now, now2, base, next, start, period, span;
 	int			status;
 	unsigned		mod = ehci->periodic_size << 3;
 	struct ehci_iso_sched	*sched = urb->hcpriv;
@@ -1422,6 +1422,7 @@ iso_stream_schedule (
 		base = ehci->last_iso_frame << 3;
 		next = (next - base) & (mod - 1);
 		start = (stream->next_uframe - base) & (mod - 1);
+		now2 = (now - base) & (mod - 1);
 
 		/* Is the schedule already full? */
 		if (unlikely(start < period)) {
@@ -1441,12 +1442,12 @@ iso_stream_schedule (
 
 			/*
 			 * Not ASAP: Use the next slot in the stream.  If
-			 * the entire URB falls before the threshold, fail.
+			 * the entire URB falls before the current frame, fail.
 			 */
-			else if (start + span - period < next) {
+			else if (start + span - period < now2) {
 				ehci_dbg(ehci, "iso urb late %p (%u+%u < %u)\n",
 						urb, start + base,
-						span - period, next + base);
+						span - period, now2 + base);
 				status = -EXDEV;
 				goto fail;
 			}

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux