Lines Matching refs:count
116 int start, int count, int auto_ack) in qdio_do_eqbs() argument
118 int tmp_count = count, tmp_start = start, nr = q->nr; in qdio_do_eqbs()
133 return count - tmp_count; in qdio_do_eqbs()
139 return count - tmp_count; in qdio_do_eqbs()
147 DBF_ERROR("%3d%3d%2d", count, tmp_count, nr); in qdio_do_eqbs()
149 q->first_to_check, count, q->irq_ptr->int_parm); in qdio_do_eqbs()
166 int count) in qdio_do_sqbs() argument
169 int tmp_count = count, tmp_start = start; in qdio_do_sqbs()
172 if (!count) in qdio_do_sqbs()
186 return count - tmp_count; in qdio_do_sqbs()
195 DBF_ERROR("%3d%3d%2d", count, tmp_count, nr); in qdio_do_sqbs()
197 q->first_to_check, count, q->irq_ptr->int_parm); in qdio_do_sqbs()
207 unsigned char *state, unsigned int count, in get_buf_states() argument
214 return qdio_do_eqbs(q, state, bufnr, count, auto_ack); in get_buf_states()
223 for (; i < count; i++) { in get_buf_states()
244 unsigned char state, int count) in set_buf_states() argument
249 return qdio_do_sqbs(q, state, bufnr, count); in set_buf_states()
254 for (i = 0; i < count; i++) { in set_buf_states()
262 return count; in set_buf_states()
324 static int qdio_siga_output(struct qdio_q *q, unsigned int count, in qdio_siga_output() argument
333 if (count > 1) in qdio_siga_output()
406 static inline void account_sbals(struct qdio_q *q, unsigned int count) in account_sbals() argument
408 q->q_stats.nr_sbal_total += count; in account_sbals()
409 q->q_stats.nr_sbals[ilog2(count)]++; in account_sbals()
413 int count) in process_buffer_error() argument
425 DBF_ERROR("FTC:%3d C:%3d", start, count); in process_buffer_error()
432 int count, bool auto_ack) in inbound_handle_work() argument
436 set_buf_state(q, add_buf(start, count - 1), SLSB_P_INPUT_ACK); in inbound_handle_work()
440 q->u.in.batch_count += count; in inbound_handle_work()
447 int count; in get_inbound_buffer_frontier() local
451 count = atomic_read(&q->nr_buf_used); in get_inbound_buffer_frontier()
452 if (!count) in get_inbound_buffer_frontier()
458 count = get_buf_states(q, start, &state, count, 1); in get_inbound_buffer_frontier()
459 if (!count) in get_inbound_buffer_frontier()
465 count); in get_inbound_buffer_frontier()
467 inbound_handle_work(q, start, count, is_qebsm(q)); in get_inbound_buffer_frontier()
468 if (atomic_sub_return(count, &q->nr_buf_used) == 0) in get_inbound_buffer_frontier()
471 account_sbals(q, count); in get_inbound_buffer_frontier()
472 return count; in get_inbound_buffer_frontier()
475 count); in get_inbound_buffer_frontier()
478 process_buffer_error(q, start, count); in get_inbound_buffer_frontier()
479 inbound_handle_work(q, start, count, false); in get_inbound_buffer_frontier()
480 if (atomic_sub_return(count, &q->nr_buf_used) == 0) in get_inbound_buffer_frontier()
483 account_sbals_error(q, count); in get_inbound_buffer_frontier()
484 return count; in get_inbound_buffer_frontier()
524 int count; in get_outbound_buffer_frontier() local
528 count = atomic_read(&q->nr_buf_used); in get_outbound_buffer_frontier()
529 if (!count) in get_outbound_buffer_frontier()
535 count = get_buf_states(q, start, &state, count, 0); in get_outbound_buffer_frontier()
536 if (!count) in get_outbound_buffer_frontier()
546 "out empty:%1d %02x", q->nr, count); in get_outbound_buffer_frontier()
548 atomic_sub(count, &q->nr_buf_used); in get_outbound_buffer_frontier()
550 account_sbals(q, count); in get_outbound_buffer_frontier()
551 return count; in get_outbound_buffer_frontier()
554 q->nr, count); in get_outbound_buffer_frontier()
557 process_buffer_error(q, start, count); in get_outbound_buffer_frontier()
558 atomic_sub(count, &q->nr_buf_used); in get_outbound_buffer_frontier()
560 account_sbals_error(q, count); in get_outbound_buffer_frontier()
561 return count; in get_outbound_buffer_frontier()
581 static int qdio_kick_outbound_q(struct qdio_q *q, unsigned int count, in qdio_kick_outbound_q() argument
594 cc = qdio_siga_output(q, count, &busy_bit, aob); in qdio_kick_outbound_q()
1010 irq_ptr->ccw.count = irq_ptr->equeue.count; in qdio_establish()
1084 irq_ptr->ccw.count = irq_ptr->aqueue.count; in qdio_activate()
1123 static int handle_inbound(struct qdio_q *q, int bufnr, int count) in handle_inbound() argument
1130 overlap = min_t(int, count - sub_buf(q->u.in.batch_start, bufnr), in handle_inbound()
1137 count = set_buf_states(q, bufnr, SLSB_CU_INPUT_EMPTY, count); in handle_inbound()
1138 atomic_add(count, &q->nr_buf_used); in handle_inbound()
1153 static int handle_outbound(struct qdio_q *q, unsigned int bufnr, unsigned int count, in handle_outbound() argument
1161 count = set_buf_states(q, bufnr, SLSB_CU_OUTPUT_PRIMED, count); in handle_outbound()
1162 used = atomic_add_return(count, &q->nr_buf_used); in handle_outbound()
1171 rc = qdio_kick_outbound_q(q, count, phys_aob); in handle_outbound()
1174 } else if (count < QDIO_MAX_BUFFERS_PER_Q && in handle_outbound()
1180 rc = qdio_kick_outbound_q(q, count, 0); in handle_outbound()
1196 int q_nr, unsigned int bufnr, unsigned int count, struct qaob *aob) in do_QDIO() argument
1200 if (bufnr >= QDIO_MAX_BUFFERS_PER_Q || count > QDIO_MAX_BUFFERS_PER_Q) in do_QDIO()
1207 "do%02x b:%02x c:%02x", callflags, bufnr, count); in do_QDIO()
1211 if (!count) in do_QDIO()
1214 return handle_inbound(irq_ptr->input_qs[q_nr], bufnr, count); in do_QDIO()
1216 return handle_outbound(irq_ptr->output_qs[q_nr], bufnr, count, aob); in do_QDIO()
1270 int count; in __qdio_inspect_queue() local
1273 count = q->is_input_q ? get_inbound_buffer_frontier(q, start, error) : in __qdio_inspect_queue()
1275 if (count == 0) in __qdio_inspect_queue()
1281 q->first_to_check = add_buf(start, count); in __qdio_inspect_queue()
1283 return count; in __qdio_inspect_queue()