Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 135635
b: refs/heads/master
c: 9c8a08d
h: refs/heads/master
i:
  135633: 3587465
  135631: 59d7117
v: v3
  • Loading branch information
Jan Glauber authored and Martin Schwidefsky committed Mar 26, 2009
1 parent 8089515 commit 76704d0
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 46 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d303b6fd858370c22d5c70c313669e3521a5f758
refs/heads/master: 9c8a08d7a74b07ab2c47e259231d9d0f0047a3c1
2 changes: 1 addition & 1 deletion trunk/drivers/s390/cio/qdio.h
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ int get_buf_state(struct qdio_q *q, unsigned int bufnr, unsigned char *state,
int auto_ack);
void qdio_check_outbound_after_thinint(struct qdio_q *q);
int qdio_inbound_q_moved(struct qdio_q *q);
void qdio_kick_inbound_handler(struct qdio_q *q);
void qdio_kick_handler(struct qdio_q *q);
void qdio_stop_polling(struct qdio_q *q);
int qdio_siga_sync_q(struct qdio_q *q);

Expand Down
62 changes: 19 additions & 43 deletions trunk/drivers/s390/cio/qdio_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -570,29 +570,30 @@ static int qdio_inbound_q_done(struct qdio_q *q)
}
}

void qdio_kick_inbound_handler(struct qdio_q *q)
void qdio_kick_handler(struct qdio_q *q)
{
int count, start, end;

qdio_perf_stat_inc(&perf_stats.inbound_handler);

start = q->first_to_kick;
end = q->first_to_check;
if (end >= start)
count = end - start;
else
count = end + QDIO_MAX_BUFFERS_PER_Q - start;

DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "kih s:%3d c:%3d", start, count);
int start = q->first_to_kick;
int end = q->first_to_check;
int count;

if (unlikely(q->irq_ptr->state != QDIO_IRQ_STATE_ACTIVE))
return;

q->handler(q->irq_ptr->cdev, q->qdio_error, q->nr,
start, count, q->irq_ptr->int_parm);
count = sub_buf(end, start);

if (q->is_input_q) {
qdio_perf_stat_inc(&perf_stats.inbound_handler);
DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "kih s:%3d c:%3d", start, count);
} else {
DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "koh: nr:%1d", q->nr);
DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "s:%3d c:%3d", start, count);
}

q->handler(q->irq_ptr->cdev, q->qdio_error, q->nr, start, count,
q->irq_ptr->int_parm);

/* for the next time */
q->first_to_kick = q->first_to_check;
q->first_to_kick = end;
q->qdio_error = 0;
}

Expand All @@ -603,7 +604,7 @@ static void __qdio_inbound_processing(struct qdio_q *q)
if (!qdio_inbound_q_moved(q))
return;

qdio_kick_inbound_handler(q);
qdio_kick_handler(q);

if (!qdio_inbound_q_done(q))
/* means poll time is not yet over */
Expand Down Expand Up @@ -736,38 +737,13 @@ static int qdio_kick_outbound_q(struct qdio_q *q)
return cc;
}

static void qdio_kick_outbound_handler(struct qdio_q *q)
{
int start, end, count;

start = q->first_to_kick;
end = q->last_move;
if (end >= start)
count = end - start;
else
count = end + QDIO_MAX_BUFFERS_PER_Q - start;

DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "kickouth: %1d", q->nr);
DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, "s:%3d c:%3d", start, count);

if (unlikely(q->irq_ptr->state != QDIO_IRQ_STATE_ACTIVE))
return;

q->handler(q->irq_ptr->cdev, q->qdio_error, q->nr, start, count,
q->irq_ptr->int_parm);

/* for the next time: */
q->first_to_kick = q->last_move;
q->qdio_error = 0;
}

static void __qdio_outbound_processing(struct qdio_q *q)
{
qdio_perf_stat_inc(&perf_stats.tasklet_outbound);
BUG_ON(atomic_read(&q->nr_buf_used) < 0);

if (qdio_outbound_q_moved(q))
qdio_kick_outbound_handler(q);
qdio_kick_handler(q);

if (queue_type(q) == QDIO_ZFCP_QFMT)
if (!pci_out_supported(q) && !qdio_outbound_q_done(q))
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/s390/cio/qdio_thinint.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ static void __tiqdio_inbound_processing(struct qdio_q *q)
if (!qdio_inbound_q_moved(q))
return;

qdio_kick_inbound_handler(q);
qdio_kick_handler(q);

if (!tiqdio_inbound_q_done(q)) {
qdio_perf_stat_inc(&perf_stats.thinint_inbound_loop);
Expand Down

0 comments on commit 76704d0

Please sign in to comment.