|
@@ -395,7 +395,8 @@ static int qeth_l2_stop_card(struct qeth_card *card, int recovery_mode)
|
|
}
|
|
}
|
|
if (card->state == CARD_STATE_SOFTSETUP) {
|
|
if (card->state == CARD_STATE_SOFTSETUP) {
|
|
qeth_l2_process_vlans(card, 1);
|
|
qeth_l2_process_vlans(card, 1);
|
|
- qeth_l2_del_all_mc(card);
|
|
|
|
|
|
+ if (!card->use_hard_stop)
|
|
|
|
+ qeth_l2_del_all_mc(card);
|
|
qeth_clear_ipacmd_list(card);
|
|
qeth_clear_ipacmd_list(card);
|
|
card->state = CARD_STATE_HARDSETUP;
|
|
card->state = CARD_STATE_HARDSETUP;
|
|
}
|
|
}
|
|
@@ -826,7 +827,6 @@ static int qeth_l2_open(struct net_device *dev)
|
|
}
|
|
}
|
|
card->data.state = CH_STATE_UP;
|
|
card->data.state = CH_STATE_UP;
|
|
card->state = CARD_STATE_UP;
|
|
card->state = CARD_STATE_UP;
|
|
- card->dev->flags |= IFF_UP;
|
|
|
|
netif_start_queue(dev);
|
|
netif_start_queue(dev);
|
|
|
|
|
|
if (!card->lan_online && netif_carrier_ok(dev))
|
|
if (!card->lan_online && netif_carrier_ok(dev))
|
|
@@ -841,7 +841,6 @@ static int qeth_l2_stop(struct net_device *dev)
|
|
|
|
|
|
QETH_DBF_TEXT(TRACE, 4, "qethstop");
|
|
QETH_DBF_TEXT(TRACE, 4, "qethstop");
|
|
netif_tx_disable(dev);
|
|
netif_tx_disable(dev);
|
|
- card->dev->flags &= ~IFF_UP;
|
|
|
|
if (card->state == CARD_STATE_UP)
|
|
if (card->state == CARD_STATE_UP)
|
|
card->state = CARD_STATE_SOFTSETUP;
|
|
card->state = CARD_STATE_SOFTSETUP;
|
|
return 0;
|
|
return 0;
|
|
@@ -1138,9 +1137,13 @@ static int qeth_l2_recover(void *ptr)
|
|
if (!rc)
|
|
if (!rc)
|
|
PRINT_INFO("Device %s successfully recovered!\n",
|
|
PRINT_INFO("Device %s successfully recovered!\n",
|
|
CARD_BUS_ID(card));
|
|
CARD_BUS_ID(card));
|
|
- else
|
|
|
|
|
|
+ else {
|
|
|
|
+ rtnl_lock();
|
|
|
|
+ dev_close(card->dev);
|
|
|
|
+ rtnl_unlock();
|
|
PRINT_INFO("Device %s could not be recovered!\n",
|
|
PRINT_INFO("Device %s could not be recovered!\n",
|
|
CARD_BUS_ID(card));
|
|
CARD_BUS_ID(card));
|
|
|
|
+ }
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|