outl(	vp->tx_skb_dma = pci_map_single(VORTEX_PCI(vp), skb->data, len, PCI_DMA_TODEVICE), 
iowrite32(	vp->tx_skb_dma = pci_map_single(VORTEX_PCI(vp), skb->data, len, PCI_DMA_TODEVICE), 
vortex_start_xmit(struct sk_buff *skb, struct net_device *dev){	struct vortex_private *vp = netdev_priv(dev);	long ioaddr = dev->base_addr;	/* Put out the doubleword header... */	outl(skb->len, ioaddr + TX_FIFO);	if (vp->bus_master) {		/* Set the bus-master controller to transfer the packet. */		int len = (skb->len + 3) & ~3;		outl(	vp->tx_skb_dma = pci_map_single(VORTEX_PCI(vp), skb->data, len, PCI_DMA_TODEVICE),				ioaddr + Wn7_MasterAddr);		outw(len, ioaddr + Wn7_MasterLen);		vp->tx_skb = skb;		outw(StartDMADown, ioaddr + EL3_CMD);		/* netif_wake_queue() will be called at the DMADone interrupt. */	} else {		/* ... and the packet rounded to a doubleword. */		outsl(ioaddr + TX_FIFO, skb->data, (skb->len + 3) >> 2);		dev_kfree_skb (skb);		if (inw(ioaddr + TxFree) > 1536) {			netif_start_queue (dev);	/* AKPM: redundant? */		} else {			/* Interrupt us when the FIFO has room for max-sized packet. */			netif_stop_queue(dev);			outw(SetTxThreshold + (1536>>2), ioaddr + EL3_CMD);		}	}	dev->trans_start = jiffies;	/* Clear the Tx status stack. */	{		int tx_status;		int i = 32;		while (--i > 0	&&	(tx_status = inb(ioaddr + TxStatus)) > 0) {			if (tx_status & 0x3C) {		/* A Tx-disabling error occurred.  */				if (vortex_debug > 2)				  printk(KERN_DEBUG "%s: Tx error, status %2.2x.\n",						 dev->name, tx_status);				if (tx_status & 0x04) vp->stats.tx_fifo_errors++;				if (tx_status & 0x38) vp->stats.tx_aborted_errors++;				if (tx_status & 0x30) {					issue_and_wait(dev, TxReset);				}				outw(TxEnable, ioaddr + EL3_CMD);			}			outb(0x00, ioaddr + TxStatus); /* Pop the status stack. */		}	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/62afe595de7aaac6c140103a34dc8c208afa34e7/3c59x.c/buggy/drivers/net/3c59x.c