/* This can be called directly from usb_submit_urb (while we have the sc->lock taken) and from an interrupt (while we do NOT have the sc->lock taken). Therefore, bounce this off to a tasklet.  */
static void ub_urb_complete(struct urb *urb)
/* This can be called directly from usb_submit_urb (while we have the sc->lock taken) and from an interrupt (while we do NOT have the sc->lock taken). Therefore, bounce this off to a tasklet.  */
static void ub_urb_complete(struct urb *urb)
{
	struct ub_dev *sc = urb->context;
	ub_complete(&sc->work_done);
	tasklet_schedule(&sc->tasklet);
}