Skip to content

Commit

Permalink
[S390] Hipersocket multicast queue: make sure outbound handler is called
Browse files Browse the repository at this point in the history
A HiperSocket multicast queue works asynchronously. When sending
buffers, the buffer state change from PRIMED to EMPTY may happen
delayed. Reschedule the checking for changes in the outbound queue,
if there are still PRIMED buffers.

Signed-off-by: Ursula Braun <braunu@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
  • Loading branch information
Ursula Braun authored and Martin Schwidefsky committed Dec 15, 2006
1 parent 86b2247 commit 028cf91
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
13 changes: 8 additions & 5 deletions drivers/s390/cio/qdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions include/asm-s390/qdio.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 028cf91

Please sign in to comment.