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�����٥