diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2005-04-18 20:39:30 -0400 |
---|---|---|
committer | Greg K-H <gregkh@suse.de> | 2005-04-18 20:39:30 -0400 |
commit | 8835f6657316162a8937d3f26ccd8f5886ba3845 (patch) | |
tree | 7f6f1860d05a4d6afa4284c385ecb0a402b32f48 /drivers | |
parent | 0e4987639a774d08b69c1c58774f3430f6083d4f (diff) |
[PATCH] USB: USB API documentation modification
In response to complaints about excessive latency in the uhci-hcd driver
I'm planning to convert it to a top-half/bottom-half design. It turns out
that to do this, the USB API has to be modified slightly since the driver
will not be able to meet one of the guarantees in the current API. This
patch changes some kerneldoc, specifying the weaker guarantee.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/core/urb.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c index dc838f81742c..16972159a57a 100644 --- a/drivers/usb/core/urb.c +++ b/drivers/usb/core/urb.c | |||
@@ -420,12 +420,16 @@ int usb_submit_urb(struct urb *urb, int mem_flags) | |||
420 | * | 420 | * |
421 | * Host Controller Drivers (HCDs) place all the URBs for a particular | 421 | * Host Controller Drivers (HCDs) place all the URBs for a particular |
422 | * endpoint in a queue. Normally the queue advances as the controller | 422 | * endpoint in a queue. Normally the queue advances as the controller |
423 | * hardware processes each request. But when an URB terminates with any | 423 | * hardware processes each request. But when an URB terminates with an |
424 | * fault (such as an error, or being unlinked) its queue stops, at least | 424 | * error its queue stops, at least until that URB's completion routine |
425 | * until that URB's completion routine returns. It is guaranteed that | 425 | * returns. It is guaranteed that the queue will not restart until all |
426 | * the queue will not restart until all its unlinked URBs have been fully | 426 | * its unlinked URBs have been fully retired, with their completion |
427 | * retired, with their completion routines run, even if that's not until | 427 | * routines run, even if that's not until some time after the original |
428 | * some time after the original completion handler returns. | 428 | * completion handler returns. Normally the same behavior and guarantees |
429 | * apply when an URB terminates because it was unlinked; however if an | ||
430 | * URB is unlinked before the hardware has started to execute it, then | ||
431 | * its queue is not guaranteed to stop until all the preceding URBs have | ||
432 | * completed. | ||
429 | * | 433 | * |
430 | * This means that USB device drivers can safely build deep queues for | 434 | * This means that USB device drivers can safely build deep queues for |
431 | * large or complex transfers, and clean them up reliably after any sort | 435 | * large or complex transfers, and clean them up reliably after any sort |