re->skb = sky2_rx_alloc_skb(sky2, rx_buf_size, GFP_ATOMIC); if (!re->skb) goto reuse; 
if (length < RX_COPY_THRESHOLD) { nskb = sky2_rx_alloc(sky2, length, GFP_ATOMIC); if (!nskb) goto resubmit; 
static struct sk_buff *sky2_receive(struct sky2_hw *hw, unsigned port,				    u16 length, u32 status){	struct net_device *dev = hw->dev[port];	struct sky2_port *sky2 = netdev_priv(dev);	struct ring_info *re = sky2->rx_ring + sky2->rx_next;	struct sk_buff *skb = re->skb;	dma_addr_t mapping;	const unsigned int rx_buf_size = dev->mtu + ETH_HLEN + 8;	if (unlikely(netif_msg_rx_status(sky2)))		printk(KERN_DEBUG PFX "%s: rx slot %u status 0x%x len %d\n",		       dev->name, sky2->rx_next, status, length);	sky2->rx_next = (sky2->rx_next + 1) % sky2->rx_ring_size;	pci_unmap_single(sky2->hw->pdev,			 pci_unmap_addr(re, mapaddr),			 pci_unmap_len(re, maplen),			 PCI_DMA_FROMDEVICE);	prefetch(skb->data);	if (!(status & GMR_FS_RX_OK) 	    || (status & GMR_FS_ANY_ERR) 	    || (length << 16) != (status & GMR_FS_LEN) 	    || length > rx_buf_size) 		goto error;	re->skb = sky2_rx_alloc_skb(sky2, rx_buf_size, GFP_ATOMIC);	if (!re->skb) 		goto reuse;submit:	mapping = pci_map_single(sky2->hw->pdev, re->skb->data,				 rx_buf_size, PCI_DMA_FROMDEVICE);	pci_unmap_len_set(re, maplen, rx_buf_size);	pci_unmap_addr_set(re, mapaddr, mapping);	sky2_rx_add(sky2, mapping, rx_buf_size);	sky2_put_idx(sky2->hw, rxqaddr[sky2->port],		     sky2->rx_put, &sky2->rx_last_put, RX_LE_SIZE);	return skb;error:	if (netif_msg_rx_err(sky2))		printk(KERN_INFO PFX "%s: rx error, status 0x%x length %d\n",		       sky2->netdev->name, status, length);		if (status & (GMR_FS_LONG_ERR|GMR_FS_UN_SIZE))		sky2->net_stats.rx_length_errors++;	if (status & GMR_FS_FRAGMENT)		sky2->net_stats.rx_frame_errors++;	if (status & GMR_FS_CRC_ERR)		sky2->net_stats.rx_crc_errors++;reuse:	re->skb = skb;	skb = NULL;	goto submit;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/793b883ed12a6ae6e2901ddb5e038b77d6f0c0ac/sky2.c/buggy/drivers/net/sky2.c