u16 j, frg_cnt; 
static void tx_intr_handler(fifo_info_t *fifo_data){	nic_t *nic = fifo_data->nic;	struct net_device *dev = (struct net_device *) nic->dev;	tx_curr_get_info_t get_info, put_info;	struct sk_buff *skb;	TxD_t *txdlp;	u16 j, frg_cnt;	get_info = fifo_data->tx_curr_get_info;	put_info = fifo_data->tx_curr_put_info;	txdlp = (TxD_t *) fifo_data->list_info[get_info.offset].	    list_virt_addr;	while ((!(txdlp->Control_1 & TXD_LIST_OWN_XENA)) &&	       (get_info.offset != put_info.offset) &&	       (txdlp->Host_Control)) {		/* Check for TxD errors */		if (txdlp->Control_1 & TXD_T_CODE) {			unsigned long long err;			err = txdlp->Control_1 & TXD_T_CODE;			if ((err >> 48) == 0xA) {				DBG_PRINT(TX_DBG, "TxD returned due \to loss of link\n");			}			else {				DBG_PRINT(ERR_DBG, "***TxD error \%llx\n", err);			}		}		skb = (struct sk_buff *) ((unsigned long)				txdlp->Host_Control);		if (skb == NULL) {			DBG_PRINT(ERR_DBG, "%s: Null skb ",			__FUNCTION__);			DBG_PRINT(ERR_DBG, "in Tx Free Intr\n");			return;		}		frg_cnt = skb_shinfo(skb)->nr_frags;		nic->tx_pkt_count++;		pci_unmap_single(nic->pdev, (dma_addr_t)				 txdlp->Buffer_Pointer,				 skb->len - skb->data_len,				 PCI_DMA_TODEVICE);		if (frg_cnt) {			TxD_t *temp;			temp = txdlp;			txdlp++;			for (j = 0; j < frg_cnt; j++, txdlp++) {				skb_frag_t *frag =				    &skb_shinfo(skb)->frags[j];				if (!txdlp->Buffer_Pointer)					break;				pci_unmap_page(nic->pdev,					       (dma_addr_t)					       txdlp->					       Buffer_Pointer,					       frag->size,					       PCI_DMA_TODEVICE);			}			txdlp = temp;		}		memset(txdlp, 0,		       (sizeof(TxD_t) * fifo_data->max_txds));		/* Updating the statistics block */		nic->stats.tx_bytes += skb->len;		dev_kfree_skb_irq(skb);		get_info.offset++;		get_info.offset %= get_info.fifo_len + 1;		txdlp = (TxD_t *) fifo_data->list_info		    [get_info.offset].list_virt_addr;		fifo_data->tx_curr_get_info.offset =		    get_info.offset;	}	spin_lock(&nic->tx_lock);	if (netif_queue_stopped(dev))		netif_wake_queue(dev);	spin_unlock(&nic->tx_lock);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/fed5eccdcf542742786701b2514b5cb7ab282b93/s2io.c/clean/drivers/net/s2io.c