entry = lp->cur_tx & TX_RING_MOD_MASK; 
entry = lp->cur_tx & lp->tx_mod_mask; 
pcnet32_start_xmit(struct sk_buff *skb, struct net_device *dev){    struct pcnet32_private *lp = dev->priv;    unsigned long ioaddr = dev->base_addr;    u16 status;    int entry;    unsigned long flags;    spin_lock_irqsave(&lp->lock, flags);    if (netif_msg_tx_queued(lp)) {	printk(KERN_DEBUG "%s: pcnet32_start_xmit() called, csr0 %4.4x.\n",	       dev->name, lp->a.read_csr(ioaddr, 0));    }    /* Default status -- will not enable Successful-TxDone     * interrupt when that option is available to us.     */    status = 0x8300;    /* Fill in a Tx ring entry */    /* Mask to ring buffer boundary. */    entry = lp->cur_tx & TX_RING_MOD_MASK;    /* Caution: the write order is important here, set the status     * with the "ownership" bits last. */    lp->tx_ring[entry].length = le16_to_cpu(-skb->len);    lp->tx_ring[entry].misc = 0x00000000;    lp->tx_skbuff[entry] = skb;    lp->tx_dma_addr[entry] = pci_map_single(lp->pci_dev, skb->data, skb->len,	    PCI_DMA_TODEVICE);    lp->tx_ring[entry].base = (u32)le32_to_cpu(lp->tx_dma_addr[entry]);    wmb(); /* Make sure owner changes after all others are visible */    lp->tx_ring[entry].status = le16_to_cpu(status);    lp->cur_tx++;    lp->stats.tx_bytes += skb->len;    /* Trigger an immediate send poll. */    lp->a.write_csr (ioaddr, 0, 0x0048);    dev->trans_start = jiffies;    if (lp->tx_ring[(entry+1) & TX_RING_MOD_MASK].base != 0) {	lp->tx_full = 1;	netif_stop_queue(dev);    }    spin_unlock_irqrestore(&lp->lock, flags);    return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/eabf04151682bc7b57c84fea58cf9e4e5a3cf2a9/pcnet32.c/buggy/drivers/net/pcnet32.c