aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/net/qeth_l2_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/net/qeth_l2_main.c')
-rw-r--r--drivers/s390/net/qeth_l2_main.c27
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));