skb->len, PCI_DMA_TODEVICE); 
cp->tx_skb[tx_tail].len, PCI_DMA_TODEVICE); 
static void cp_tx (struct cp_private *cp){	unsigned tx_head = cp->tx_head;	unsigned tx_tail = cp->tx_tail;	while (tx_tail != tx_head) {		struct sk_buff *skb;		u32 status;		rmb();		status = le32_to_cpu(cp->tx_ring[tx_tail].opts1);		if (status & DescOwn)			break;		skb = cp->tx_skb[tx_tail].skb;		if (!skb)			BUG();		pci_unmap_single(cp->pdev, cp->tx_skb[tx_tail].mapping,					skb->len, PCI_DMA_TODEVICE);		if (status & LastFrag) {			if (status & (TxError | TxFIFOUnder)) {				if (netif_msg_tx_err(cp))					printk(KERN_DEBUG "%s: tx err, status 0x%x\n",					       cp->dev->name, status);				cp->net_stats.tx_errors++;				if (status & TxOWC)					cp->net_stats.tx_window_errors++;				if (status & TxMaxCol)					cp->net_stats.tx_aborted_errors++;				if (status & TxLinkFail)					cp->net_stats.tx_carrier_errors++;				if (status & TxFIFOUnder)					cp->net_stats.tx_fifo_errors++;			} else {				cp->net_stats.collisions +=					((status >> TxColCntShift) & TxColCntMask);				cp->net_stats.tx_packets++;				cp->net_stats.tx_bytes += skb->len;				if (netif_msg_tx_done(cp))					printk(KERN_DEBUG "%s: tx done, slot %d\n", cp->dev->name, tx_tail);			}			dev_kfree_skb_irq(skb);		}		cp->tx_skb[tx_tail].skb = NULL;		tx_tail = NEXT_TX(tx_tail);	}	cp->tx_tail = tx_tail;	if (TX_BUFFS_AVAIL(cp) > (MAX_SKB_FRAGS + 1))		netif_wake_queue(cp->dev);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/5734418d4f3420352eae38c8fcec699bf09874c1/8139cp.c/clean/drivers/net/8139cp.c