Support for scatter/gather i/o
struct usb_sg_request { int status; size_t bytes; };
status
zero indicates success, else negative errno
bytes
counts bytes transferred.
These requests are initialized using usb_sg_init, and then are used as request handles passed to usb_sg_wait or usb_sg_cancel. Most members of the request object aren't for driver access.
The status and bytecount values are valid only after usb_sg_wait returns. If the status is zero, then the bytecount matches the total from the request.
After an error completion, drivers may need to clear a halt condition on the endpoint.