Re: [PATCH] EHCI : Fix a regression in the ISO scheduler

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

 



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


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

  Powered by Linux