rtnl_lock(); dev_close(card->dev); rtnl_unlock(); 
if(recovery_mode) { qeth_stop(card->dev); } else { rtnl_lock(); dev_close(card->dev); rtnl_unlock(); } 
qeth_stop_card(struct qeth_card *card){	int rc = 0;	QETH_DBF_TEXT(setup ,2,"stopcard");	QETH_DBF_HEX(setup, 2, &card, sizeof(void *));	qeth_set_allowed_threads(card, 0, 1);	if (qeth_wait_for_threads(card, ~QETH_RECOVER_THREAD))		return -ERESTARTSYS;	if (card->read.state == CH_STATE_UP &&	    card->write.state == CH_STATE_UP &&	    (card->state == CARD_STATE_UP)) {		rtnl_lock();		dev_close(card->dev);		rtnl_unlock();		if (!card->use_hard_stop) {			__u8 *mac = &card->dev->dev_addr[0];			rc = qeth_layer2_send_delmac(card, mac);			QETH_DBF_TEXT_(setup, 2, "Lerr%d", rc);			if ((rc = qeth_send_stoplan(card)))				QETH_DBF_TEXT_(setup, 2, "1err%d", rc);		}		card->state = CARD_STATE_SOFTSETUP;	}	if (card->state == CARD_STATE_SOFTSETUP) {#ifdef CONFIG_QETH_VLAN		if (card->options.layer2)			qeth_layer2_process_vlans(card, 1);#endif		qeth_clear_ip_list(card, !card->use_hard_stop, 1);		qeth_clear_ipacmd_list(card);		card->state = CARD_STATE_HARDSETUP;	}	if (card->state == CARD_STATE_HARDSETUP) {		if ((!card->use_hard_stop) &&		    (!card->options.layer2))			if ((rc = qeth_put_unique_id(card)))				QETH_DBF_TEXT_(setup, 2, "2err%d", rc);		qeth_qdio_clear_card(card, 0);		qeth_clear_qdio_buffers(card);		qeth_clear_working_pool_list(card);		card->state = CARD_STATE_DOWN;	}	if (card->state == CARD_STATE_DOWN) {		qeth_clear_cmd_buffers(&card->read);		qeth_clear_cmd_buffers(&card->write);	}	card->use_hard_stop = 0;	return rc;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/05e08a2a297371564020f76d1bf8b3a931d5e1ed/qeth_main.c/buggy/drivers/s390/net/qeth_main.c