diff options
Diffstat (limited to 'drivers/usb/host/ehci-sched.c')
| -rw-r--r-- | drivers/usb/host/ehci-sched.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c index 56a32033adb..a60679cbbf8 100644 --- a/drivers/usb/host/ehci-sched.c +++ b/drivers/usb/host/ehci-sched.c @@ -1475,6 +1475,7 @@ iso_stream_schedule (  	 * jump until after the queue is primed.  	 */  	else { +		int done = 0;  		start = SCHEDULE_SLOP + (now & ~0x07);  		/* NOTE:  assumes URB_ISO_ASAP, to limit complexity/bugs */ @@ -1492,18 +1493,18 @@ iso_stream_schedule (  			if (stream->highspeed) {  				if (itd_slot_ok(ehci, mod, start,  						stream->usecs, period)) -					break; +					done = 1;  			} else {  				if ((start % 8) >= 6)  					continue;  				if (sitd_slot_ok(ehci, mod, stream,  						start, sched, period)) -					break; +					done = 1;  			} -		} while (start > next); +		} while (start > next && !done);  		/* no room in the schedule */ -		if (start == next) { +		if (!done) {  			ehci_dbg(ehci, "iso resched full %p (now %d max %d)\n",  				urb, now, now + mod);  			status = -ENOSPC;  |