status = iso_stream_schedule (ehci, urb, stream); 
if (unlikely(!test_bit(HCD_FLAG_HW_ACCESSIBLE, &ehci_to_hcd(ehci)->flags))) status = -ESHUTDOWN; else status = iso_stream_schedule (ehci, urb, stream); 
static int itd_submit (struct ehci_hcd *ehci, struct urb *urb,	gfp_t mem_flags){	int			status = -EINVAL;	unsigned long		flags;	struct ehci_iso_stream	*stream;	/* Get iso_stream head */	stream = iso_stream_find (ehci, urb);	if (unlikely (stream == NULL)) {		ehci_dbg (ehci, "can't get iso stream\n");		return -ENOMEM;	}	if (unlikely (urb->interval != stream->interval)) {		ehci_dbg (ehci, "can't change iso interval %d --> %d\n",			stream->interval, urb->interval);		goto done;	}#ifdef EHCI_URB_TRACE	ehci_dbg (ehci,		"%s %s urb %p ep%d%s len %d, %d pkts %d uframes [%p]\n",		__FUNCTION__, urb->dev->devpath, urb,		usb_pipeendpoint (urb->pipe),		usb_pipein (urb->pipe) ? "in" : "out",		urb->transfer_buffer_length,		urb->number_of_packets, urb->interval,		stream);#endif	/* allocate ITDs w/o locking anything */	status = itd_urb_transaction (stream, ehci, urb, mem_flags);	if (unlikely (status < 0)) {		ehci_dbg (ehci, "can't init itds\n");		goto done;	}	/* schedule ... need to lock */	spin_lock_irqsave (&ehci->lock, flags);	status = iso_stream_schedule (ehci, urb, stream); 	if (likely (status == 0))		itd_link_urb (ehci, urb, ehci->periodic_size << 3, stream);	spin_unlock_irqrestore (&ehci->lock, flags);done:	if (unlikely (status < 0))		iso_stream_put (ehci, stream);	return status;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/8de98402652c01839ae321be6cb3054cf5735d83/ehci-sched.c/clean/drivers/usb/host/ehci-sched.c