|
@@ -3177,8 +3177,6 @@ static int qeth_l3_open(struct net_device *dev)
|
|
|
card->state = CARD_STATE_UP;
|
|
|
netif_start_queue(dev);
|
|
|
|
|
|
- if (!card->lan_online && netif_carrier_ok(dev))
|
|
|
- netif_carrier_off(dev);
|
|
|
if (qdio_stop_irq(card->data.ccwdev, 0) >= 0) {
|
|
|
napi_enable(&card->napi);
|
|
|
napi_schedule(&card->napi);
|
|
@@ -3450,13 +3448,14 @@ static int __qeth_l3_set_online(struct ccwgroup_device *gdev, int recovery_mode)
|
|
|
dev_warn(&card->gdev->dev,
|
|
|
"The LAN is offline\n");
|
|
|
card->lan_online = 0;
|
|
|
- goto out;
|
|
|
+ goto contin;
|
|
|
}
|
|
|
rc = -ENODEV;
|
|
|
goto out_remove;
|
|
|
} else
|
|
|
card->lan_online = 1;
|
|
|
|
|
|
+contin:
|
|
|
rc = qeth_l3_setadapter_parms(card);
|
|
|
if (rc)
|
|
|
QETH_DBF_TEXT_(SETUP, 2, "2err%d", rc);
|
|
@@ -3481,10 +3480,13 @@ static int __qeth_l3_set_online(struct ccwgroup_device *gdev, int recovery_mode)
|
|
|
goto out_remove;
|
|
|
}
|
|
|
card->state = CARD_STATE_SOFTSETUP;
|
|
|
- netif_carrier_on(card->dev);
|
|
|
|
|
|
qeth_set_allowed_threads(card, 0xffffffff, 0);
|
|
|
qeth_l3_set_ip_addr_list(card);
|
|
|
+ if (card->lan_online)
|
|
|
+ netif_carrier_on(card->dev);
|
|
|
+ else
|
|
|
+ netif_carrier_off(card->dev);
|
|
|
if (recover_flag == CARD_STATE_RECOVER) {
|
|
|
if (recovery_mode)
|
|
|
qeth_l3_open(card->dev);
|
|
@@ -3497,7 +3499,6 @@ static int __qeth_l3_set_online(struct ccwgroup_device *gdev, int recovery_mode)
|
|
|
}
|
|
|
/* let user_space know that device is online */
|
|
|
kobject_uevent(&gdev->dev.kobj, KOBJ_CHANGE);
|
|
|
-out:
|
|
|
mutex_unlock(&card->conf_mutex);
|
|
|
mutex_unlock(&card->discipline_mutex);
|
|
|
return 0;
|