Commit dcc49d46 authored by Ursula Braun's avatar Ursula Braun Committed by Martin Schwidefsky

[S390] cio: qdio slsb setup

Make sure set_slsb problems are handled correctly in
qdio_do_qdio_fill_input() and qdio_do_qdio_fill_output.
Signed-off-by: default avatarUrsula Braun <braunu@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 5851fadc
...@@ -211,7 +211,9 @@ qdio_do_sqbs(struct qdio_q *q, unsigned char state, ...@@ -211,7 +211,9 @@ qdio_do_sqbs(struct qdio_q *q, unsigned char state,
} }
if (rc < 0) { if (rc < 0) {
QDIO_DBF_TEXT3(1,trace,"sqberr"); QDIO_DBF_TEXT3(1,trace,"sqberr");
sprintf(dbf_text,"%2x,%2x,%d,%d",tmp_cnt,*cnt,ccq,q_no); sprintf(dbf_text,"%2x,%2x",tmp_cnt,*cnt);
QDIO_DBF_TEXT3(1,trace,dbf_text);
sprintf(dbf_text,"%d,%d",ccq,q_no);
QDIO_DBF_TEXT3(1,trace,dbf_text); QDIO_DBF_TEXT3(1,trace,dbf_text);
q->handler(q->cdev,QDIO_STATUS_ACTIVATE_CHECK_CONDITION| q->handler(q->cdev,QDIO_STATUS_ACTIVATE_CHECK_CONDITION|
QDIO_STATUS_LOOK_FOR_ERROR, QDIO_STATUS_LOOK_FOR_ERROR,
...@@ -1250,7 +1252,6 @@ qdio_is_inbound_q_done(struct qdio_q *q) ...@@ -1250,7 +1252,6 @@ qdio_is_inbound_q_done(struct qdio_q *q)
if (!no_used) { if (!no_used) {
QDIO_DBF_TEXT4(0,trace,"inqisdnA"); QDIO_DBF_TEXT4(0,trace,"inqisdnA");
QDIO_DBF_HEX4(0,trace,&q,sizeof(void*)); QDIO_DBF_HEX4(0,trace,&q,sizeof(void*));
QDIO_DBF_TEXT4(0,trace,dbf_text);
return 1; return 1;
} }
if (irq->is_qebsm) { if (irq->is_qebsm) {
...@@ -3371,10 +3372,15 @@ qdio_do_qdio_fill_input(struct qdio_q *q, unsigned int qidx, ...@@ -3371,10 +3372,15 @@ qdio_do_qdio_fill_input(struct qdio_q *q, unsigned int qidx,
unsigned int count, struct qdio_buffer *buffers) unsigned int count, struct qdio_buffer *buffers)
{ {
struct qdio_irq *irq = (struct qdio_irq *) q->irq_ptr; struct qdio_irq *irq = (struct qdio_irq *) q->irq_ptr;
int tmp = 0;
qidx &= (QDIO_MAX_BUFFERS_PER_Q - 1); qidx &= (QDIO_MAX_BUFFERS_PER_Q - 1);
if (irq->is_qebsm) { if (irq->is_qebsm) {
while (count) while (count) {
set_slsb(q, &qidx, SLSB_CU_INPUT_EMPTY, &count); tmp = set_slsb(q, &qidx, SLSB_CU_INPUT_EMPTY, &count);
if (!tmp)
return;
}
return; return;
} }
for (;;) { for (;;) {
...@@ -3390,11 +3396,15 @@ qdio_do_qdio_fill_output(struct qdio_q *q, unsigned int qidx, ...@@ -3390,11 +3396,15 @@ qdio_do_qdio_fill_output(struct qdio_q *q, unsigned int qidx,
unsigned int count, struct qdio_buffer *buffers) unsigned int count, struct qdio_buffer *buffers)
{ {
struct qdio_irq *irq = (struct qdio_irq *) q->irq_ptr; struct qdio_irq *irq = (struct qdio_irq *) q->irq_ptr;
int tmp = 0;
qidx &= (QDIO_MAX_BUFFERS_PER_Q - 1); qidx &= (QDIO_MAX_BUFFERS_PER_Q - 1);
if (irq->is_qebsm) { if (irq->is_qebsm) {
while (count) while (count) {
set_slsb(q, &qidx, SLSB_CU_OUTPUT_PRIMED, &count); tmp = set_slsb(q, &qidx, SLSB_CU_OUTPUT_PRIMED, &count);
if (!tmp)
return;
}
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment