[S390] qdio: reset outbound SBAL error states
authorJan Glauber <jang@linux.vnet.ibm.com>
Sun, 30 Oct 2011 14:17:07 +0000 (15:17 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Sun, 30 Oct 2011 14:16:45 +0000 (15:16 +0100)
Don't leave outbound SBALs in error state after a target full condition.
Reset the state to not initialized to make the error handling consistent
across all types of errors.

Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/cio/qdio_main.c

index 7c567b2268a769544429ffb7e5ee57d44ce9d6e5..5ec5317f7903948bc7669b323f09b1558ba7438c 100644 (file)
@@ -450,7 +450,7 @@ static void process_buffer_error(struct qdio_q *q, int count)
                qperf_inc(q, target_full);
                DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "OUTFULL FTC:%02x",
                              q->first_to_check);
-               return;
+               goto set;
        }
 
        DBF_ERROR("%4x BUF ERROR", SCH_NO(q));
@@ -460,6 +460,7 @@ static void process_buffer_error(struct qdio_q *q, int count)
                  q->sbal[q->first_to_check]->element[14].sflags,
                  q->sbal[q->first_to_check]->element[15].sflags);
 
+set:
        /*
         * Interrupts may be avoided as long as the error is present
         * so change the buffer state immediately to avoid starvation.