struct usb_sg_request — support for scatter/gather I/O
struct usb_sg_request {
  int status;
  size_t bytes;
};  
   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.