hcd
urb
Host controller drivers should call this routine in their enqueue method. The HCD's private spinlock must be held and interrupts must be disabled. The actions carried out here are required for URB submission, as well as for endpoint shutdown and for usb_kill_urb.
Returns 0 for no error, otherwise a negative error code (in which case the enqueue method must fail). If no error occurs but enqueue fails anyway, it must call usb_hcd_unlink_urb_from_ep before releasing the private spinlock and returning.