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 18623ef01287..8a8fad7a8bea 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
@@ -367,8 +367,6 @@ static int qeth_l2_stop_card(struct qeth_card *card, int recovery_mode) | |||
367 | QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); | 367 | QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); |
368 | 368 | ||
369 | qeth_set_allowed_threads(card, 0, 1); | 369 | qeth_set_allowed_threads(card, 0, 1); |
370 | if (qeth_wait_for_threads(card, ~QETH_RECOVER_THREAD)) | ||
371 | return -ERESTARTSYS; | ||
372 | if (card->read.state == CH_STATE_UP && | 370 | if (card->read.state == CH_STATE_UP && |
373 | card->write.state == CH_STATE_UP && | 371 | card->write.state == CH_STATE_UP && |
374 | (card->state == CARD_STATE_UP)) { | 372 | (card->state == CARD_STATE_UP)) { |
@@ -445,12 +443,15 @@ static void qeth_l2_process_inbound_buffer(struct qeth_card *card, | |||
445 | netif_rx(skb); | 443 | netif_rx(skb); |
446 | break; | 444 | break; |
447 | case QETH_HEADER_TYPE_OSN: | 445 | case QETH_HEADER_TYPE_OSN: |
448 | skb_push(skb, sizeof(struct qeth_hdr)); | 446 | if (card->info.type == QETH_CARD_TYPE_OSN) { |
449 | skb_copy_to_linear_data(skb, hdr, | 447 | skb_push(skb, sizeof(struct qeth_hdr)); |
448 | skb_copy_to_linear_data(skb, hdr, | ||
450 | sizeof(struct qeth_hdr)); | 449 | sizeof(struct qeth_hdr)); |
451 | len = skb->len; | 450 | len = skb->len; |
452 | card->osn_info.data_cb(skb); | 451 | card->osn_info.data_cb(skb); |
453 | break; | 452 | break; |
453 | } | ||
454 | /* else unknown */ | ||
454 | default: | 455 | default: |
455 | dev_kfree_skb_any(skb); | 456 | dev_kfree_skb_any(skb); |
456 | QETH_DBF_TEXT(TRACE, 3, "inbunkno"); | 457 | QETH_DBF_TEXT(TRACE, 3, "inbunkno"); |
@@ -969,12 +970,6 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode) | |||
969 | QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); | 970 | QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); |
970 | 971 | ||
971 | qeth_set_allowed_threads(card, QETH_RECOVER_THREAD, 1); | 972 | qeth_set_allowed_threads(card, QETH_RECOVER_THREAD, 1); |
972 | if (qeth_wait_for_threads(card, ~QETH_RECOVER_THREAD)) { | ||
973 | PRINT_WARN("set_online of card %s interrupted by user!\n", | ||
974 | CARD_BUS_ID(card)); | ||
975 | return -ERESTARTSYS; | ||
976 | } | ||
977 | |||
978 | recover_flag = card->state; | 973 | recover_flag = card->state; |
979 | rc = ccw_device_set_online(CARD_RDEV(card)); | 974 | rc = ccw_device_set_online(CARD_RDEV(card)); |
980 | if (rc) { | 975 | if (rc) { |
@@ -1085,11 +1080,7 @@ static int __qeth_l2_set_offline(struct ccwgroup_device *cgdev, | |||
1085 | if (card->dev && netif_carrier_ok(card->dev)) | 1080 | if (card->dev && netif_carrier_ok(card->dev)) |
1086 | netif_carrier_off(card->dev); | 1081 | netif_carrier_off(card->dev); |
1087 | recover_flag = card->state; | 1082 | recover_flag = card->state; |
1088 | if (qeth_l2_stop_card(card, recovery_mode) == -ERESTARTSYS) { | 1083 | qeth_l2_stop_card(card, recovery_mode); |
1089 | PRINT_WARN("Stopping card %s interrupted by user!\n", | ||
1090 | CARD_BUS_ID(card)); | ||
1091 | return -ERESTARTSYS; | ||
1092 | } | ||
1093 | rc = ccw_device_set_offline(CARD_DDEV(card)); | 1084 | rc = ccw_device_set_offline(CARD_DDEV(card)); |
1094 | rc2 = ccw_device_set_offline(CARD_WDEV(card)); | 1085 | rc2 = ccw_device_set_offline(CARD_WDEV(card)); |
1095 | rc3 = ccw_device_set_offline(CARD_RDEV(card)); | 1086 | rc3 = ccw_device_set_offline(CARD_RDEV(card)); |