s390: qeth driver does not recover
authorUrsula Braun <braunu@de.ibm.com>
Wed, 20 Jun 2007 10:56:49 +0000 (12:56 +0200)
committerJeff Garzik <jeff@garzik.org>
Wed, 20 Jun 2007 23:12:42 +0000 (19:12 -0400)
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>
drivers/s390/net/qeth_main.c

index ea2fd980cb4595023141aba4acfc9ab8d5481ea1..c5a95079b5ed60bbee91571ced00554d9dca97ae 100644 (file)
@@ -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)