spin_unlock(&tp->tx_lock); spin_unlock_irq(&tp->lock); 
 tg3_full_unlock(tp); 
static void tg3_self_test(struct net_device *dev, struct ethtool_test *etest,			  u64 *data){	struct tg3 *tp = netdev_priv(dev);	memset(data, 0, sizeof(u64) * TG3_NUM_TEST);	if (tg3_test_nvram(tp) != 0) {		etest->flags |= ETH_TEST_FL_FAILED;		data[0] = 1;	}	if (tg3_test_link(tp) != 0) {		etest->flags |= ETH_TEST_FL_FAILED;		data[1] = 1;	}	if (etest->flags & ETH_TEST_FL_OFFLINE) {		if (netif_running(dev))			tg3_netif_stop(tp);		spin_lock_irq(&tp->lock);		spin_lock(&tp->tx_lock);		tg3_halt(tp, RESET_KIND_SUSPEND, 1);		tg3_nvram_lock(tp);		tg3_halt_cpu(tp, RX_CPU_BASE);		if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS))			tg3_halt_cpu(tp, TX_CPU_BASE);		tg3_nvram_unlock(tp);		if (tg3_test_registers(tp) != 0) {			etest->flags |= ETH_TEST_FL_FAILED;			data[2] = 1;		}		if (tg3_test_memory(tp) != 0) {			etest->flags |= ETH_TEST_FL_FAILED;			data[3] = 1;		}		if (tg3_test_loopback(tp) != 0) {			etest->flags |= ETH_TEST_FL_FAILED;			data[4] = 1;		}		spin_unlock(&tp->tx_lock);		spin_unlock_irq(&tp->lock);		if (tg3_test_interrupt(tp) != 0) {			etest->flags |= ETH_TEST_FL_FAILED;			data[5] = 1;		}		spin_lock_irq(&tp->lock);		spin_lock(&tp->tx_lock);		tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);		if (netif_running(dev)) {			tp->tg3_flags |= TG3_FLAG_INIT_COMPLETE;			tg3_init_hw(tp);			tg3_netif_start(tp);		}		spin_unlock(&tp->tx_lock);		spin_unlock_irq(&tp->lock);	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f47c11eeccc8820010992eb32dbe7370a08f8bd3/tg3.c/buggy/drivers/net/tg3.c