From 4fb0ff277df77803da9a2c209be70b58511d3cca Mon Sep 17 00:00:00 2001 From: Ursula Braun Date: Fri, 15 Dec 2006 17:18:14 +0100 Subject: [PATCH] --- yaml --- r: 44608 b: refs/heads/master c: 028cf917b258b11286437a1b96e64030f94fd46d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/s390/cio/qdio.c | 13 ++++++++----- trunk/include/asm-s390/qdio.h | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index aba07321b217..1125931b9e97 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 86b22470f68528c68cb25dbd58886040e1917494 +refs/heads/master: 028cf917b258b11286437a1b96e64030f94fd46d diff --git a/trunk/drivers/s390/cio/qdio.c b/trunk/drivers/s390/cio/qdio.c index 9d4ea449a608..6fd1940842eb 100644 --- a/trunk/drivers/s390/cio/qdio.c +++ b/trunk/drivers/s390/cio/qdio.c @@ -979,12 +979,11 @@ __qdio_outbound_processing(struct qdio_q *q) if (q->is_iqdio_q) { /* - * for asynchronous queues, we better check, if the fill - * level is too high. for synchronous queues, the fill - * level will never be that high. + * for asynchronous queues, we better check, if the sent + * buffer is already switched from PRIMED to EMPTY. */ - if (atomic_read(&q->number_of_buffers_used)> - IQDIO_FILL_LEVEL_TO_POLL) + if ((q->queue_type == QDIO_IQDIO_QFMT_ASYNCH) && + !qdio_is_outbound_q_done(q)) qdio_mark_q(q); } else if (!q->hydra_gives_outbound_pcis) @@ -1825,6 +1824,10 @@ qdio_fill_qs(struct qdio_irq *irq_ptr, struct ccw_device *cdev, q->sbal[j]=*(outbound_sbals_array++); q->queue_type=q_format; + if ((q->queue_type == QDIO_IQDIO_QFMT) && + (no_output_qs > 1) && + (i == no_output_qs-1)) + q->queue_type = QDIO_IQDIO_QFMT_ASYNCH; q->int_parm=int_parm; q->is_input_q=0; q->schid = irq_ptr->schid; diff --git a/trunk/include/asm-s390/qdio.h b/trunk/include/asm-s390/qdio.h index 7189c79bc673..127f72e77419 100644 --- a/trunk/include/asm-s390/qdio.h +++ b/trunk/include/asm-s390/qdio.h @@ -34,6 +34,7 @@ #define QDIO_QETH_QFMT 0 #define QDIO_ZFCP_QFMT 1 #define QDIO_IQDIO_QFMT 2 +#define QDIO_IQDIO_QFMT_ASYNCH 3 struct qdio_buffer_element{ unsigned int flags;