diff options
Diffstat (limited to 'drivers/s390/cio/qdio_main.c')
-rw-r--r-- | drivers/s390/cio/qdio_main.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c index 6621de94f3ad..4c0109900c74 100644 --- a/drivers/s390/cio/qdio_main.c +++ b/drivers/s390/cio/qdio_main.c | |||
@@ -1492,7 +1492,13 @@ static int handle_outbound(struct qdio_q *q, unsigned int callflags, | |||
1492 | qperf_inc(q, fast_requeue); | 1492 | qperf_inc(q, fast_requeue); |
1493 | 1493 | ||
1494 | out: | 1494 | out: |
1495 | tasklet_schedule(&q->tasklet); | 1495 | /* in case of SIGA errors we must process the error immediately */ |
1496 | if (used >= q->u.out.scan_threshold || rc) | ||
1497 | tasklet_schedule(&q->tasklet); | ||
1498 | else | ||
1499 | /* free the SBALs in case of no further traffic */ | ||
1500 | if (!timer_pending(&q->u.out.timer)) | ||
1501 | mod_timer(&q->u.out.timer, jiffies + HZ); | ||
1496 | return rc; | 1502 | return rc; |
1497 | } | 1503 | } |
1498 | 1504 | ||