usb_ep_dequeue — dequeues (cancels, unlinks) an I/O request from an endpoint
| int usb_ep_dequeue ( | struct usb_ep * ep, | 
| struct usb_request * req ); | 
   If the request is still active on the endpoint, it is dequeued and its
   completion routine is called (with status -ECONNRESET); else a negative
   error code is returned. This is guaranteed to happen before the call to
   usb_ep_dequeue returns.
   
Note that some hardware can't clear out write fifos (to unlink the request at the head of the queue) except as part of disconnecting from usb. Such restrictions prevent drivers from supporting configuration changes, even to configuration zero (a “chapter 9” requirement).