diff options
author | Ursula Braun <braunu@de.ibm.com> | 2007-06-20 12:56:49 +0200 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-06-20 19:12:42 -0400 |
commit | d81ef0fb76ef2eb7126f64cb34217d2ddfb48483 (patch) | |
tree | 80bd2a306d9f234d7868c899cf190cce7e47d30e /drivers/s390/net | |
parent | d78f6642bea3b8f064dcb9a17db58593ef8cc0fb (diff) | |
download | op-kernel-dev-d81ef0fb76ef2eb7126f64cb34217d2ddfb48483.zip op-kernel-dev-d81ef0fb76ef2eb7126f64cb34217d2ddfb48483.tar.gz |
s390: qeth driver does not recover
While first recovery continues, the card issues
a STARTLAN command itself. In this case qeth
schedules another recovery. This second
recovery is cancelled because of an already running first recovery.
Stop first recovery in case of 0xe080.
Signed-off-by: Ursula Braun <braunu@de.ibm.com>
Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/s390/net')
-rw-r--r-- | drivers/s390/net/qeth_main.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c index ea2fd98..c5a9507 100644 --- a/drivers/s390/net/qeth_main.c +++ b/drivers/s390/net/qeth_main.c @@ -986,15 +986,15 @@ qeth_recover(void *ptr) card->use_hard_stop = 1; __qeth_set_offline(card->gdev,1); rc = __qeth_set_online(card->gdev,1); + /* don't run another scheduled recovery */ + qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); + qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD); if (!rc) PRINT_INFO("Device %s successfully recovered!\n", CARD_BUS_ID(card)); else PRINT_INFO("Device %s could not be recovered!\n", CARD_BUS_ID(card)); - /* don't run another scheduled recovery */ - qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); - qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD); return 0; } @@ -7476,11 +7476,11 @@ qeth_softsetup_card(struct qeth_card *card) QETH_DBF_TEXT_(setup, 2, "1err%d", rc); if (rc == 0xe080){ PRINT_WARN("LAN on card %s if offline! " - "Continuing softsetup.\n", + "Waiting for STARTLAN from card.\n", CARD_BUS_ID(card)); card->lan_online = 0; - } else - return rc; + } + return rc; } else card->lan_online = 1; if (card->info.type==QETH_CARD_TYPE_OSN) |