struct sky2_port *sky2 = netdev_priv(dev); 
struct net_device *dev = sky2->netdev; 
static void sky2_tx_complete(struct net_device *dev, u16 done){	struct sky2_port *sky2 = netdev_priv(dev);	unsigned i;	if (netif_msg_tx_done(sky2))		printk(KERN_DEBUG "%s: tx done, upto %u\n", dev->name, done);	spin_lock(&sky2->tx_lock);	while (sky2->tx_cons != done) {		struct ring_info *re = sky2->tx_ring + sky2->tx_cons;		struct sk_buff *skb;		/* Check for partial status */		if (tx_dist(sky2->tx_cons, done)		    < tx_dist(sky2->tx_cons, re->idx))			goto out;		skb = re->skb;		pci_unmap_single(sky2->hw->pdev,				 re->mapaddr, re->maplen, PCI_DMA_TODEVICE);		for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {			struct ring_info *fre;			fre =			    sky2->tx_ring + (sky2->tx_cons + i +					     1) % TX_RING_SIZE;			pci_unmap_page(sky2->hw->pdev, fre->mapaddr,				       fre->maplen, PCI_DMA_TODEVICE);		}		dev_kfree_skb_any(skb);		sky2->tx_cons = re->idx;	}out:	if (netif_queue_stopped(dev) && tx_avail(sky2) > MAX_SKB_TX_LE)		netif_wake_queue(dev);	spin_unlock(&sky2->tx_lock);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/d11c13e752c4e34777d33579ee0378e0178ef52d/sky2.c/clean/drivers/net/sky2.c