#endif 
} else { pci_unmap_single(nic->pdev, (dma_addr_t) ((RxD3_t*)rxdp)->Buffer0_ptr, BUF0_LEN, PCI_DMA_FROMDEVICE); pci_unmap_single(nic->pdev, (dma_addr_t) ((RxD3_t*)rxdp)->Buffer1_ptr, l3l4hdr_size + 4, PCI_DMA_FROMDEVICE); pci_unmap_single(nic->pdev, (dma_addr_t) ((RxD3_t*)rxdp)->Buffer2_ptr, dev->mtu, PCI_DMA_FROMDEVICE); } 
static void rx_intr_handler(ring_info_t *ring_data){	nic_t *nic = ring_data->nic;	struct net_device *dev = (struct net_device *) nic->dev;	int get_block, get_offset, put_block, put_offset, ring_bufs;	rx_curr_get_info_t get_info, put_info;	RxD_t *rxdp;	struct sk_buff *skb;#ifndef CONFIG_S2IO_NAPI	int pkt_cnt = 0;#endif	spin_lock(&nic->rx_lock);	if (atomic_read(&nic->card_state) == CARD_DOWN) {		DBG_PRINT(INTR_DBG, "%s: %s going down for reset\n",			  __FUNCTION__, dev->name);		spin_unlock(&nic->rx_lock);		return;	}	get_info = ring_data->rx_curr_get_info;	get_block = get_info.block_index;	put_info = ring_data->rx_curr_put_info;	put_block = put_info.block_index;	ring_bufs = get_info.ring_len+1;	rxdp = ring_data->rx_blocks[get_block].block_virt_addr +		    get_info.offset;	get_offset = (get_block * (MAX_RXDS_PER_BLOCK + 1)) +		get_info.offset;#ifndef CONFIG_S2IO_NAPI	spin_lock(&nic->put_lock);	put_offset = ring_data->put_pos;	spin_unlock(&nic->put_lock);#else	put_offset = (put_block * (MAX_RXDS_PER_BLOCK + 1)) +		put_info.offset;#endif	while (RXD_IS_UP2DT(rxdp) &&	       (((get_offset + 1) % ring_bufs) != put_offset)) {		skb = (struct sk_buff *) ((unsigned long)rxdp->Host_Control);		if (skb == NULL) {			DBG_PRINT(ERR_DBG, "%s: The skb is ",				  dev->name);			DBG_PRINT(ERR_DBG, "Null in Rx Intr\n");			spin_unlock(&nic->rx_lock);			return;		}#ifndef CONFIG_2BUFF_MODE		pci_unmap_single(nic->pdev, (dma_addr_t)				 rxdp->Buffer0_ptr,				 dev->mtu +				 HEADER_ETHERNET_II_802_3_SIZE +				 HEADER_802_2_SIZE +				 HEADER_SNAP_SIZE,				 PCI_DMA_FROMDEVICE);#else		pci_unmap_single(nic->pdev, (dma_addr_t)				 rxdp->Buffer0_ptr,				 BUF0_LEN, PCI_DMA_FROMDEVICE);		pci_unmap_single(nic->pdev, (dma_addr_t)				 rxdp->Buffer1_ptr,				 BUF1_LEN, PCI_DMA_FROMDEVICE);		pci_unmap_single(nic->pdev, (dma_addr_t)				 rxdp->Buffer2_ptr,				 dev->mtu + BUF0_LEN + 4,				 PCI_DMA_FROMDEVICE);#endif		rx_osm_handler(ring_data, rxdp);		get_info.offset++;		ring_data->rx_curr_get_info.offset =		    get_info.offset;		rxdp = ring_data->rx_blocks[get_block].block_virt_addr +		    get_info.offset;		if (get_info.offset &&		    (!(get_info.offset % MAX_RXDS_PER_BLOCK))) {			get_info.offset = 0;			ring_data->rx_curr_get_info.offset			    = get_info.offset;			get_block++;			get_block %= ring_data->block_count;			ring_data->rx_curr_get_info.block_index			    = get_block;			rxdp = ring_data->rx_blocks[get_block].block_virt_addr;		}		get_offset = (get_block * (MAX_RXDS_PER_BLOCK + 1)) +			    get_info.offset;#ifdef CONFIG_S2IO_NAPI		nic->pkts_to_process -= 1;		if (!nic->pkts_to_process)			break;#else		pkt_cnt++;		if ((indicate_max_pkts) && (pkt_cnt > indicate_max_pkts))			break;#endif	}	spin_unlock(&nic->rx_lock);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/da6971d8ece2ec9762509e20dda6808335b5a10b/s2io.c/clean/drivers/net/s2io.c