diff options
Diffstat (limited to 'drivers/s390/net/qeth_l2_main.c')
-rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 847e8797073c..7a7a1b664781 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
@@ -849,8 +849,6 @@ static int qeth_l2_open(struct net_device *dev) | |||
849 | card->state = CARD_STATE_UP; | 849 | card->state = CARD_STATE_UP; |
850 | netif_start_queue(dev); | 850 | netif_start_queue(dev); |
851 | 851 | ||
852 | if (!card->lan_online && netif_carrier_ok(dev)) | ||
853 | netif_carrier_off(dev); | ||
854 | if (qdio_stop_irq(card->data.ccwdev, 0) >= 0) { | 852 | if (qdio_stop_irq(card->data.ccwdev, 0) >= 0) { |
855 | napi_enable(&card->napi); | 853 | napi_enable(&card->napi); |
856 | napi_schedule(&card->napi); | 854 | napi_schedule(&card->napi); |
@@ -1013,13 +1011,14 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode) | |||
1013 | dev_warn(&card->gdev->dev, | 1011 | dev_warn(&card->gdev->dev, |
1014 | "The LAN is offline\n"); | 1012 | "The LAN is offline\n"); |
1015 | card->lan_online = 0; | 1013 | card->lan_online = 0; |
1016 | goto out; | 1014 | goto contin; |
1017 | } | 1015 | } |
1018 | rc = -ENODEV; | 1016 | rc = -ENODEV; |
1019 | goto out_remove; | 1017 | goto out_remove; |
1020 | } else | 1018 | } else |
1021 | card->lan_online = 1; | 1019 | card->lan_online = 1; |
1022 | 1020 | ||
1021 | contin: | ||
1023 | if ((card->info.type == QETH_CARD_TYPE_OSD) || | 1022 | if ((card->info.type == QETH_CARD_TYPE_OSD) || |
1024 | (card->info.type == QETH_CARD_TYPE_OSX)) | 1023 | (card->info.type == QETH_CARD_TYPE_OSX)) |
1025 | /* configure isolation level */ | 1024 | /* configure isolation level */ |
@@ -1038,7 +1037,10 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode) | |||
1038 | goto out_remove; | 1037 | goto out_remove; |
1039 | } | 1038 | } |
1040 | card->state = CARD_STATE_SOFTSETUP; | 1039 | card->state = CARD_STATE_SOFTSETUP; |
1041 | netif_carrier_on(card->dev); | 1040 | if (card->lan_online) |
1041 | netif_carrier_on(card->dev); | ||
1042 | else | ||
1043 | netif_carrier_off(card->dev); | ||
1042 | 1044 | ||
1043 | qeth_set_allowed_threads(card, 0xffffffff, 0); | 1045 | qeth_set_allowed_threads(card, 0xffffffff, 0); |
1044 | if (recover_flag == CARD_STATE_RECOVER) { | 1046 | if (recover_flag == CARD_STATE_RECOVER) { |
@@ -1055,7 +1057,6 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode) | |||
1055 | } | 1057 | } |
1056 | /* let user_space know that device is online */ | 1058 | /* let user_space know that device is online */ |
1057 | kobject_uevent(&gdev->dev.kobj, KOBJ_CHANGE); | 1059 | kobject_uevent(&gdev->dev.kobj, KOBJ_CHANGE); |
1058 | out: | ||
1059 | mutex_unlock(&card->conf_mutex); | 1060 | mutex_unlock(&card->conf_mutex); |
1060 | mutex_unlock(&card->discipline_mutex); | 1061 | mutex_unlock(&card->discipline_mutex); |
1061 | return 0; | 1062 | return 0; |