size_t			size; 
size_t			size = dev->rx_urb_size; 
static void rx_submit (struct usbnet *dev, struct urb *urb, unsigned flags){	struct sk_buff		*skb;	struct skb_data		*entry;	int			retval = 0;	unsigned long		lockflags;	size_t			size;	size = max(dev->net->hard_header_len + dev->net->mtu,			(unsigned)ETH_FRAME_LEN);	if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) {		if (netif_msg_rx_err (dev))			devdbg (dev, "no rx skb");		defer_kevent (dev, EVENT_RX_MEMORY);		usb_free_urb (urb);		return;	}	skb_reserve (skb, NET_IP_ALIGN);	entry = (struct skb_data *) skb->cb;	entry->urb = urb;	entry->dev = dev;	entry->state = rx_start;	entry->length = 0;	usb_fill_bulk_urb (urb, dev->udev, dev->in,		skb->data, size, rx_complete, skb);	spin_lock_irqsave (&dev->rxq.lock, lockflags);	if (netif_running (dev->net)			&& netif_device_present (dev->net)			&& !test_bit (EVENT_RX_HALT, &dev->flags)) {		switch (retval = usb_submit_urb (urb, GFP_ATOMIC)){ 		case -EPIPE:			defer_kevent (dev, EVENT_RX_HALT);			break;		case -ENOMEM:			defer_kevent (dev, EVENT_RX_MEMORY);			break;		case -ENODEV:			if (netif_msg_ifdown (dev))				devdbg (dev, "device gone");			netif_device_detach (dev->net);			break;		default:			if (netif_msg_rx_err (dev))				devdbg (dev, "rx submit, %d", retval);			tasklet_schedule (&dev->bh);			break;		case 0:			__skb_queue_tail (&dev->rxq, skb);		}	} else {		if (netif_msg_ifdown (dev))			devdbg (dev, "rx: stopped");		retval = -ENOLINK;	}	spin_unlock_irqrestore (&dev->rxq.lock, lockflags);	if (retval) {		dev_kfree_skb_any (skb);		usb_free_urb (urb);	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/2e55cc7210fef90f88201e860d8767594974574e/usbnet.c/clean/drivers/usb/net/usbnet.c