defer_bh (dev, skb); 
defer_bh(dev, skb, &dev->txq); 
static void tx_complete (struct urb *urb, struct pt_regs *regs){	struct sk_buff		*skb = (struct sk_buff *) urb->context;	struct skb_data		*entry = (struct skb_data *) skb->cb;	struct usbnet		*dev = entry->dev;	if (urb->status == 0) {		dev->stats.tx_packets++;		dev->stats.tx_bytes += entry->length;	} else {		dev->stats.tx_errors++;		switch (urb->status) {		case -EPIPE:			defer_kevent (dev, EVENT_TX_HALT);			break;		/* software-driven interface shutdown */		case -ECONNRESET:		// async unlink		case -ESHUTDOWN:		// hardware gone			break;		// like rx, tx gets controller i/o faults during khubd delays		// and so it uses the same throttling mechanism.		case -EPROTO:		// ehci		case -ETIMEDOUT:	// ohci		case -EILSEQ:		// uhci			if (!timer_pending (&dev->delay)) {				mod_timer (&dev->delay,					jiffies + THROTTLE_JIFFIES);				if (netif_msg_link (dev))					devdbg (dev, "tx throttle %d",							urb->status);			}			netif_stop_queue (dev->net);			break;		default:			if (netif_msg_tx_err (dev))				devdbg (dev, "tx err %d", entry->urb->status);			break;		}	}	urb->dev = NULL;	entry->state = tx_done;	defer_bh (dev, skb);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8728b834b226ffcf2c94a58530090e292af2a7bf/usbnet.c/buggy/drivers/usb/net/usbnet.c