spin_lock(&tp->tx_lock); 
static int tg3_poll(struct net_device *netdev, int *budget){	struct tg3 *tp = netdev_priv(netdev);	struct tg3_hw_status *sblk = tp->hw_status;	int done;	/* handle link change and other phy events */	if (!(tp->tg3_flags &	      (TG3_FLAG_USE_LINKCHG_REG |	       TG3_FLAG_POLL_SERDES))) {		if (sblk->status & SD_STATUS_LINK_CHG) {			sblk->status = SD_STATUS_UPDATED |				(sblk->status & ~SD_STATUS_LINK_CHG);			spin_lock(&tp->lock);			tg3_setup_phy(tp, 0);			spin_unlock(&tp->lock);		}	}	/* run TX completion thread */	if (sblk->idx[0].tx_consumer != tp->tx_cons) {		spin_lock(&tp->tx_lock);		tg3_tx(tp);		spin_unlock(&tp->tx_lock);	}	/* run RX thread, within the bounds set by NAPI.	 * All RX "locking" is done by ensuring outside	 * code synchronizes with dev->poll()	 */	if (sblk->idx[0].rx_producer != tp->rx_rcb_ptr) {		int orig_budget = *budget;		int work_done;		if (orig_budget > netdev->quota)			orig_budget = netdev->quota;		work_done = tg3_rx(tp, orig_budget);		*budget -= work_done;		netdev->quota -= work_done;	}	if (tp->tg3_flags & TG3_FLAG_TAGGED_STATUS)		tp->last_tag = sblk->status_tag;	rmb();	sblk->status &= ~SD_STATUS_UPDATED;	/* if no more work, tell net stack and NIC we're done */	done = !tg3_has_work(tp);	if (done) {		spin_lock(&tp->lock);		netif_rx_complete(netdev);		tg3_restart_ints(tp);		spin_unlock(&tp->lock);	}	return (done ? 0 : 1);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/51b9146869ab9492da785c5c9321d85f01655ab6/tg3.c/clean/drivers/net/tg3.c