/* Return an URB to the USB core doing some additional WUSB specific processing. */
void wusbhc_giveback_urb(struct wusbhc *wusbhc, struct urb *urb, int status)
/* Return an URB to the USB core doing some additional WUSB specific processing. */
void wusbhc_giveback_urb(struct wusbhc *wusbhc, struct urb *urb, int status)
{
	struct wusb_dev *wusb_dev = __wusb_dev_get_by_usb_dev(wusbhc, urb->dev);
	if (status == 0 && wusb_dev) {
		wusb_dev->entry_ts = jiffies;
		if (!list_empty(&wusb_dev->cack_node))
			queue_work(wusbd, &wusb_dev->devconnect_acked_work);
		else
			wusb_dev_put(wusb_dev);
	}
	usb_hcd_giveback_urb(&wusbhc->usb_hcd, urb, status);
}