|
@@ -863,7 +863,7 @@ static const struct net_device_ops qeth_l2_netdev_ops = {
|
|
.ndo_set_features = qeth_set_features
|
|
.ndo_set_features = qeth_set_features
|
|
};
|
|
};
|
|
|
|
|
|
-static int qeth_l2_setup_netdev(struct qeth_card *card)
|
|
|
|
|
|
+static int qeth_l2_setup_netdev(struct qeth_card *card, bool carrier_ok)
|
|
{
|
|
{
|
|
int rc;
|
|
int rc;
|
|
|
|
|
|
@@ -920,6 +920,9 @@ static int qeth_l2_setup_netdev(struct qeth_card *card)
|
|
qeth_l2_request_initial_mac(card);
|
|
qeth_l2_request_initial_mac(card);
|
|
netif_napi_add(card->dev, &card->napi, qeth_poll, QETH_NAPI_WEIGHT);
|
|
netif_napi_add(card->dev, &card->napi, qeth_poll, QETH_NAPI_WEIGHT);
|
|
rc = register_netdev(card->dev);
|
|
rc = register_netdev(card->dev);
|
|
|
|
+ if (!rc && carrier_ok)
|
|
|
|
+ netif_carrier_on(card->dev);
|
|
|
|
+
|
|
if (rc)
|
|
if (rc)
|
|
card->dev->netdev_ops = NULL;
|
|
card->dev->netdev_ops = NULL;
|
|
return rc;
|
|
return rc;
|
|
@@ -950,6 +953,7 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)
|
|
struct qeth_card *card = dev_get_drvdata(&gdev->dev);
|
|
struct qeth_card *card = dev_get_drvdata(&gdev->dev);
|
|
int rc = 0;
|
|
int rc = 0;
|
|
enum qeth_card_states recover_flag;
|
|
enum qeth_card_states recover_flag;
|
|
|
|
+ bool carrier_ok;
|
|
|
|
|
|
mutex_lock(&card->discipline_mutex);
|
|
mutex_lock(&card->discipline_mutex);
|
|
mutex_lock(&card->conf_mutex);
|
|
mutex_lock(&card->conf_mutex);
|
|
@@ -957,7 +961,7 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)
|
|
QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));
|
|
QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));
|
|
|
|
|
|
recover_flag = card->state;
|
|
recover_flag = card->state;
|
|
- rc = qeth_core_hardsetup_card(card);
|
|
|
|
|
|
+ rc = qeth_core_hardsetup_card(card, &carrier_ok);
|
|
if (rc) {
|
|
if (rc) {
|
|
QETH_DBF_TEXT_(SETUP, 2, "2err%04x", rc);
|
|
QETH_DBF_TEXT_(SETUP, 2, "2err%04x", rc);
|
|
rc = -ENODEV;
|
|
rc = -ENODEV;
|
|
@@ -968,7 +972,7 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)
|
|
dev_info(&card->gdev->dev,
|
|
dev_info(&card->gdev->dev,
|
|
"The device represents a Bridge Capable Port\n");
|
|
"The device represents a Bridge Capable Port\n");
|
|
|
|
|
|
- rc = qeth_l2_setup_netdev(card);
|
|
|
|
|
|
+ rc = qeth_l2_setup_netdev(card, carrier_ok);
|
|
if (rc)
|
|
if (rc)
|
|
goto out_remove;
|
|
goto out_remove;
|
|
|
|
|