static int uli526x_start_xmit(struct sk_buff *skb, struct DEVICE *dev) 
static int uli526x_start_xmit(struct sk_buff *skb, struct net_device *dev) 
static int uli526x_start_xmit(struct sk_buff *skb, struct DEVICE *dev){	struct uli526x_board_info *db = netdev_priv(dev);	struct tx_desc *txptr;	unsigned long flags;	ULI526X_DBUG(0, "uli526x_start_xmit", 0);	/* Resource flag check */	netif_stop_queue(dev);	/* Too large packet check */	if (skb->len > MAX_PACKET_SIZE) {		printk(KERN_ERR DRV_NAME ": big packet = %d\n", (u16)skb->len);		dev_kfree_skb(skb);		return 0;	}	spin_lock_irqsave(&db->lock, flags);	/* No Tx resource check, it never happen nromally */	if (db->tx_packet_cnt >= TX_FREE_DESC_CNT) {		spin_unlock_irqrestore(&db->lock, flags);		printk(KERN_ERR DRV_NAME ": No Tx resource %ld\n", db->tx_packet_cnt);		return 1;	}	/* Disable NIC interrupt */	outl(0, dev->base_addr + DCR7);	/* transmit this packet */	txptr = db->tx_insert_ptr;	memcpy(txptr->tx_buf_ptr, skb->data, skb->len);	txptr->tdes1 = cpu_to_le32(0xe1000000 | skb->len);	/* Point to next transmit free descriptor */	db->tx_insert_ptr = txptr->next_tx_desc;	/* Transmit Packet Process */	if ( (db->tx_packet_cnt < TX_DESC_CNT) ) {		txptr->tdes0 = cpu_to_le32(0x80000000);	/* Set owner bit */		db->tx_packet_cnt++;			/* Ready to send */		outl(0x1, dev->base_addr + DCR1);	/* Issue Tx polling */		dev->trans_start = jiffies;		/* saved time stamp */	}	/* Tx resource check */	if ( db->tx_packet_cnt < TX_FREE_DESC_CNT )		netif_wake_queue(dev);	/* Restore CR7 to enable interrupt */	spin_unlock_irqrestore(&db->lock, flags);	outl(db->cr7_data, dev->base_addr + DCR7);		/* free this SKB */	dev_kfree_skb(skb);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/945a787675cc5ba362f5d4ce135d2a2c20be5985/uli526x.c/buggy/drivers/net/tulip/uli526x.c