/* If throttled, delay receive processing until unthrottled. */ spin_lock(&priv->rx_lock); if (priv->rx_flags & THROTTLED) { dbg("Deferring read urb processing until unthrottled"); priv->rx_flags |= ACTUALLY_THROTTLED; spin_unlock(&priv->rx_lock); return; } spin_unlock(&priv->rx_lock);  
static void ftdi_read_bulk_callback (struct urb *urb, struct pt_regs *regs){ /* ftdi_read_bulk_callback */	struct usb_serial_port *port = (struct usb_serial_port *)urb->context;	struct tty_struct *tty;	struct ftdi_private *priv;	if (urb->number_of_packets > 0) {		err("%s transfer_buffer_length %d actual_length %d number of packets %d",__FUNCTION__,		    urb->transfer_buffer_length, urb->actual_length, urb->number_of_packets );		err("%s transfer_flags %x ", __FUNCTION__,urb->transfer_flags );	}	dbg("%s - port %d", __FUNCTION__, port->number);	if (port->open_count <= 0)		return;	tty = port->tty;	if (!tty) {		dbg("%s - bad tty pointer - exiting",__FUNCTION__);		return;	}	priv = usb_get_serial_port_data(port);	if (!priv) {		dbg("%s - bad port private data pointer - exiting", __FUNCTION__);		return;	}	if (urb != port->read_urb) {		err("%s - Not my urb!", __FUNCTION__);	}	if (urb->status) {		/* This will happen at close every time so it is a dbg not an err */		dbg("(this is ok on close) nonzero read bulk status received: %d", urb->status);		return;	}	/* If throttled, delay receive processing until unthrottled. */	spin_lock(&priv->rx_lock);	if (priv->rx_flags & THROTTLED) {		dbg("Deferring read urb processing until unthrottled");		priv->rx_flags |= ACTUALLY_THROTTLED;		spin_unlock(&priv->rx_lock);		return;	}	spin_unlock(&priv->rx_lock);	ftdi_process_read(port);} /* ftdi_read_bulk_callback */
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/76854ceac3ef3408ab9a50a2521147fb14779f58/ftdi_sio.c/buggy/drivers/usb/serial/ftdi_sio.c