diff options
Diffstat (limited to 'drivers/s390/net/qeth_l2_main.c')
| -rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 27 | 
1 files changed, 9 insertions, 18 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 955ba7a31b9..1b1e80336d2 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c @@ -373,8 +373,6 @@ static int qeth_l2_stop_card(struct qeth_card *card, int recovery_mode)  	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)) { @@ -451,12 +449,15 @@ static void qeth_l2_process_inbound_buffer(struct qeth_card *card,  			netif_rx(skb);  			break;  		case QETH_HEADER_TYPE_OSN: -			skb_push(skb, sizeof(struct qeth_hdr)); -			skb_copy_to_linear_data(skb, hdr, +			if (card->info.type == QETH_CARD_TYPE_OSN) { +				skb_push(skb, sizeof(struct qeth_hdr)); +				skb_copy_to_linear_data(skb, hdr,  						sizeof(struct qeth_hdr)); -			len = skb->len; -			card->osn_info.data_cb(skb); -			break; +				len = skb->len; +				card->osn_info.data_cb(skb); +				break; +			} +			/* else unknown */  		default:  			dev_kfree_skb_any(skb);  			QETH_DBF_TEXT(TRACE, 3, "inbunkno"); @@ -975,12 +976,6 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)  	QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));  	qeth_set_allowed_threads(card, QETH_RECOVER_THREAD, 1); -	if (qeth_wait_for_threads(card, ~QETH_RECOVER_THREAD)) { -		PRINT_WARN("set_online of card %s interrupted by user!\n", -			   CARD_BUS_ID(card)); -		return -ERESTARTSYS; -	} -  	recover_flag = card->state;  	rc = ccw_device_set_online(CARD_RDEV(card));  	if (rc) { @@ -1091,11 +1086,7 @@ static int __qeth_l2_set_offline(struct ccwgroup_device *cgdev,  	if (card->dev && netif_carrier_ok(card->dev))  		netif_carrier_off(card->dev);  	recover_flag = card->state; -	if (qeth_l2_stop_card(card, recovery_mode) == -ERESTARTSYS) { -		PRINT_WARN("Stopping card %s interrupted by user!\n", -			   CARD_BUS_ID(card)); -		return -ERESTARTSYS; -	} +	qeth_l2_stop_card(card, recovery_mode);  	rc  = ccw_device_set_offline(CARD_DDEV(card));  	rc2 = ccw_device_set_offline(CARD_WDEV(card));  	rc3 = ccw_device_set_offline(CARD_RDEV(card));  |