From adc1c76dd480a87af3ef006b9923f9ace961f028 Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Mon, 18 Apr 2005 17:39:30 -0700 Subject: [PATCH] --- yaml --- r: 278 b: refs/heads/master c: 8835f6657316162a8937d3f26ccd8f5886ba3845 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/core/urb.c | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index eed14eabef79..0c883333e052 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0e4987639a774d08b69c1c58774f3430f6083d4f +refs/heads/master: 8835f6657316162a8937d3f26ccd8f5886ba3845 diff --git a/trunk/drivers/usb/core/urb.c b/trunk/drivers/usb/core/urb.c index dc838f81742c..16972159a57a 100644 --- a/trunk/drivers/usb/core/urb.c +++ b/trunk/drivers/usb/core/urb.c @@ -420,12 +420,16 @@ int usb_submit_urb(struct urb *urb, int mem_flags) * * Host Controller Drivers (HCDs) place all the URBs for a particular * endpoint in a queue. Normally the queue advances as the controller - * hardware processes each request. But when an URB terminates with any - * fault (such as an error, or being unlinked) its queue stops, at least - * until that URB's completion routine returns. It is guaranteed that - * the queue will not restart until all its unlinked URBs have been fully - * retired, with their completion routines run, even if that's not until - * some time after the original completion handler returns. + * hardware processes each request. But when an URB terminates with an + * error its queue stops, at least until that URB's completion routine + * returns. It is guaranteed that the queue will not restart until all + * its unlinked URBs have been fully retired, with their completion + * routines run, even if that's not until some time after the original + * completion handler returns. Normally the same behavior and guarantees + * apply when an URB terminates because it was unlinked; however if an + * URB is unlinked before the hardware has started to execute it, then + * its queue is not guaranteed to stop until all the preceding URBs have + * completed. * * This means that USB device drivers can safely build deep queues for * large or complex transfers, and clean them up reliably after any sort