Skip to content

Commit

Permalink
[S390] qdio: move ACK to newest buffer for devices without QEBSM
Browse files Browse the repository at this point in the history
The ACKnowledgement state should be set on the newest SBAL so an
adapter interrupt surpression check needs to scan fewer SBALs.

Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
  • Loading branch information
Jan Glauber authored and Martin Schwidefsky committed Mar 26, 2009
1 parent 700e982 commit 3fdf1e1
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions drivers/s390/cio/qdio_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -440,12 +440,16 @@ static inline void inbound_primed(struct qdio_q *q, int count)
/* reset the previous ACK but first set the new one */
set_buf_state(q, new, SLSB_P_INPUT_ACK);
set_buf_state(q, q->last_move_ftc, SLSB_P_INPUT_NOT_INIT);
}
else {
} else {
q->u.in.polling = 1;
set_buf_state(q, q->first_to_check, SLSB_P_INPUT_ACK);
set_buf_state(q, new, SLSB_P_INPUT_ACK);
}

/*
* last_move_ftc points to the ACK'ed buffer and not to the last turns
* first_to_check like for qebsm. Since it is only used to check if
* the queue front moved in qdio_inbound_q_done this is not a problem.
*/
q->last_move_ftc = new;
count--;
if (!count)
Expand All @@ -455,7 +459,7 @@ static inline void inbound_primed(struct qdio_q *q, int count)
* Need to change all PRIMED buffers to NOT_INIT, otherwise
* we're loosing initiative in the thinint code.
*/
set_buf_states(q, next_buf(q->first_to_check), SLSB_P_INPUT_NOT_INIT,
set_buf_states(q, q->first_to_check, SLSB_P_INPUT_NOT_INIT,
count);
}

Expand Down Expand Up @@ -1480,7 +1484,6 @@ static void handle_inbound(struct qdio_q *q, unsigned int callflags,
if (q->u.in.ack_count <= 0) {
q->u.in.polling = 0;
q->u.in.ack_count = 0;
/* TODO: must we set last_move_ftc to something meaningful? */
goto set;
}
q->last_move_ftc = add_buf(q->last_move_ftc, diff);
Expand Down

0 comments on commit 3fdf1e1

Please sign in to comment.