On Mon, 28 Nov 2011, Matthieu CASTET wrote: > Fix a regression that was introduced by commit > 811c926c538f7e8d3c08b630dd5844efd7e000f6 (USB: EHCI: fix HUB TT scheduling > issue with iso transfer). > > We detect an error if next == start, but this means uframe 0 can't be allocated > anymore for iso transfer... > > Reported-by: Sander Eikelenboom <linux@xxxxxxxxxxxxxx> > Signed-off-by: Matthieu CASTET <castet.matthieu@xxxxxxx> > --- > 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 56a3203..a60679c 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; Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> I can't believe I missed that. Must be getting old... Alan Stern -- 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