spin_unlock_irqrestore(&sp->tx_lock, flags); 
static void s2io_card_down(nic_t * sp){	int cnt = 0;	XENA_dev_config_t __iomem *bar0 = sp->bar0;	unsigned long flags;	register u64 val64 = 0;	/* If s2io_set_link task is executing, wait till it completes. */	while (test_and_set_bit(0, &(sp->link_state))) {		msleep(50);	}	atomic_set(&sp->card_state, CARD_DOWN);	/* disable Tx and Rx traffic on the NIC */	stop_nic(sp);	/* Kill tasklet. */	tasklet_kill(&sp->task);	/* Check if the device is Quiescent and then Reset the NIC */	do {		val64 = readq(&bar0->adapter_status);		if (verify_xena_quiescence(sp, val64, sp->device_enabled_once)) {			break;		}		msleep(50);		cnt++;		if (cnt == 10) {			DBG_PRINT(ERR_DBG,				  "s2io_close:Device not Quiescent ");			DBG_PRINT(ERR_DBG, "adaper status reads 0x%llx\n",				  (unsigned long long) val64);			break;		}	} while (1);	spin_lock_irqsave(&sp->tx_lock, flags);	s2io_reset(sp);	/* Free all unused Tx and Rx buffers */	free_tx_buffers(sp);	free_rx_buffers(sp);	spin_unlock_irqrestore(&sp->tx_lock, flags);	clear_bit(0, &(sp->link_state));}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/7ba013ac029513eb4b70cfcd4b86e37c5f16c483/s2io.c/clean/drivers/net/s2io.c