lcs: avoid/reduce unused s390dbf debug areas.
[safe/jmp/linux-2.6] / drivers / s390 / net / lcs.c
index e4b11af..f51ed99 100644 (file)
@@ -94,7 +94,7 @@ static int
 lcs_register_debug_facility(void)
 {
        lcs_dbf_setup = debug_register("lcs_setup", 2, 1, 8);
-       lcs_dbf_trace = debug_register("lcs_trace", 2, 2, 8);
+       lcs_dbf_trace = debug_register("lcs_trace", 4, 1, 8);
        if (lcs_dbf_setup == NULL || lcs_dbf_trace == NULL) {
                PRINT_ERR("Not enough memory for debug facility.\n");
                lcs_unregister_debug_facility();
@@ -1115,7 +1115,7 @@ list_modified:
                        rc = lcs_send_setipm(card, ipm);
                        spin_lock_irqsave(&card->ipm_lock, flags);
                        if (rc) {
-                               PRINT_INFO("Adding multicast address failed."
+                               PRINT_INFO("Adding multicast address failed. "
                                           "Table possibly full!\n");
                                /* store ipm in failed list -> will be added
                                 * to ipm_list again, so a retry will be done
@@ -1400,11 +1400,14 @@ lcs_irq(struct ccw_device *cdev, unsigned long intparm, struct irb *irb)
                PRINT_WARN("check on device %s, dstat=0x%X, cstat=0x%X \n",
                            cdev->dev.bus_id, dstat, cstat);
                if (rc) {
-                       lcs_schedule_recovery(card);
-                       wake_up(&card->wait_q);
-                       return;
+                       channel->state = LCS_CH_STATE_ERROR;
                }
        }
+       if (channel->state == LCS_CH_STATE_ERROR) {
+               lcs_schedule_recovery(card);
+               wake_up(&card->wait_q);
+               return;
+       }
        /* How far in the ccw chain have we processed? */
        if ((channel->state != LCS_CH_STATE_INIT) &&
            (irb->scsw.fctl & SCSW_FCTL_START_FUNC)) {
@@ -1708,6 +1711,8 @@ lcs_stopcard(struct lcs_card *card)
 
        if (card->read.state != LCS_CH_STATE_STOPPED &&
            card->write.state != LCS_CH_STATE_STOPPED &&
+           card->read.state != LCS_CH_STATE_ERROR &&
+           card->write.state != LCS_CH_STATE_ERROR &&
            card->state == DEV_STATE_UP) {
                lcs_clear_multicast_list(card);
                rc = lcs_send_stoplan(card,LCS_INITIATOR_TCPIP);