Re: [PATCH 3/4] isp1760-hcd: check for every urb in queue

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

 



On 2012-04-05 14:56, Michael Grzeschik wrote:
> Its possible that there are RETIRED qtds in the
> the qtd_list, which have been dequeued. Make sure
> to iterate through the whole list.
> 
> This for instance fixes hanging serial devices, which wait
> for dequeued urbs to properly close their device node.
> 
> Signed-off-by: Michael Grzeschik <m.grzeschik@xxxxxxxxxxxxxx>
> ---
>  drivers/usb/host/isp1760-hcd.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c
> index 6599616..6e0bd48 100644
> --- a/drivers/usb/host/isp1760-hcd.c
> +++ b/drivers/usb/host/isp1760-hcd.c
> @@ -800,7 +800,7 @@ static void collect_qtds(struct usb_hcd *hcd, struct isp1760_qh *qh,
>  
>  	list_for_each_entry_safe(qtd, qtd_next, &qh->qtd_list, qtd_list) {
>  		if (qtd->status < QTD_XFER_COMPLETE)
> -			break;
> +			continue;
>  
>  		last_qtd = last_qtd_of_urb(qtd, qh);
>  

Ok, so this happens when

1) several urbs are queued to an endpoint
2) an urb (not the first in the list) is dequeued
and
3) the device for some reason won't handle/finish the earlier urbs?

-- 
Arvid Brodin
Enea Services Stockholm AB - since February 16 a part of Xdin in the Alten Group. Soon we
will be working under the common brand name Xdin. Read more at www.xdin.com.��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥



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

  Powered by Linux