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 955ba7a31b90..1b1e80336d2c 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) | |||
373 | QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); | 373 | QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); |
374 | 374 | ||
375 | qeth_set_allowed_threads(card, 0, 1); | 375 | qeth_set_allowed_threads(card, 0, 1); |
376 | if (qeth_wait_for_threads(card, ~QETH_RECOVER_THREAD)) | ||
377 | return -ERESTARTSYS; | ||
378 | if (card->read.state == CH_STATE_UP && | 376 | if (card->read.state == CH_STATE_UP && |
379 | card->write.state == CH_STATE_UP && | 377 | card->write.state == CH_STATE_UP && |
380 | (card->state == CARD_STATE_UP)) { | 378 | (card->state == CARD_STATE_UP)) { |
@@ -451,12 +449,15 @@ static void qeth_l2_process_inbound_buffer(struct qeth_card *card, | |||
451 | netif_rx(skb); | 449 | netif_rx(skb); |
452 | break; | 450 | break; |
453 | case QETH_HEADER_TYPE_OSN: | 451 | case QETH_HEADER_TYPE_OSN: |
454 | skb_push(skb, sizeof(struct qeth_hdr)); | 452 | if (card->info.type == QETH_CARD_TYPE_OSN) { |
455 | skb_copy_to_linear_data(skb, hdr, | 453 | skb_push(skb, sizeof(struct qeth_hdr)); |
454 | skb_copy_to_linear_data(skb, hdr, | ||
456 | sizeof(struct qeth_hdr)); | 455 | sizeof(struct qeth_hdr)); |
457 | len = skb->len; | 456 | len = skb->len; |
458 | card->osn_info.data_cb(skb); | 457 | card->osn_info.data_cb(skb); |
459 | break; | 458 | break; |
459 | } | ||
460 | /* else unknown */ | ||
460 | default: | 461 | default: |
461 | dev_kfree_skb_any(skb); | 462 | dev_kfree_skb_any(skb); |
462 | QETH_DBF_TEXT(TRACE, 3, "inbunkno"); | 463 | QETH_DBF_TEXT(TRACE, 3, "inbunkno"); |
@@ -975,12 +976,6 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode) | |||
975 | QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); | 976 | QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); |
976 | 977 | ||
977 | qeth_set_allowed_threads(card, QETH_RECOVER_THREAD, 1); | 978 | qeth_set_allowed_threads(card, QETH_RECOVER_THREAD, 1); |
978 | if (qeth_wait_for_threads(card, ~QETH_RECOVER_THREAD)) { | ||
979 | PRINT_WARN("set_online of card %s interrupted by user!\n", | ||
980 | CARD_BUS_ID(card)); | ||
981 | return -ERESTARTSYS; | ||
982 | } | ||
983 | |||
984 | recover_flag = card->state; | 979 | recover_flag = card->state; |
985 | rc = ccw_device_set_online(CARD_RDEV(card)); | 980 | rc = ccw_device_set_online(CARD_RDEV(card)); |
986 | if (rc) { | 981 | if (rc) { |
@@ -1091,11 +1086,7 @@ static int __qeth_l2_set_offline(struct ccwgroup_device *cgdev, | |||
1091 | if (card->dev && netif_carrier_ok(card->dev)) | 1086 | if (card->dev && netif_carrier_ok(card->dev)) |
1092 | netif_carrier_off(card->dev); | 1087 | netif_carrier_off(card->dev); |
1093 | recover_flag = card->state; | 1088 | recover_flag = card->state; |
1094 | if (qeth_l2_stop_card(card, recovery_mode) == -ERESTARTSYS) { | 1089 | qeth_l2_stop_card(card, recovery_mode); |
1095 | PRINT_WARN("Stopping card %s interrupted by user!\n", | ||
1096 | CARD_BUS_ID(card)); | ||
1097 | return -ERESTARTSYS; | ||
1098 | } | ||
1099 | rc = ccw_device_set_offline(CARD_DDEV(card)); | 1090 | rc = ccw_device_set_offline(CARD_DDEV(card)); |
1100 | rc2 = ccw_device_set_offline(CARD_WDEV(card)); | 1091 | rc2 = ccw_device_set_offline(CARD_WDEV(card)); |
1101 | rc3 = ccw_device_set_offline(CARD_RDEV(card)); | 1092 | rc3 = ccw_device_set_offline(CARD_RDEV(card)); |