Lines Matching refs:wr
337 static int qib_post_one_send(struct qib_qp *qp, struct ib_send_wr *wr, in qib_post_one_send() argument
357 if (wr->num_sge > qp->s_max_sge) in qib_post_one_send()
365 if (wr->opcode == IB_WR_FAST_REG_MR) { in qib_post_one_send()
366 if (qib_fast_reg_mr(qp, wr)) in qib_post_one_send()
369 if ((unsigned) wr->opcode >= IB_WR_RDMA_READ) in qib_post_one_send()
373 if (wr->opcode != IB_WR_SEND && in qib_post_one_send()
374 wr->opcode != IB_WR_SEND_WITH_IMM) in qib_post_one_send()
377 if (qp->ibqp.pd != wr->wr.ud.ah->pd) in qib_post_one_send()
379 } else if ((unsigned) wr->opcode > IB_WR_ATOMIC_FETCH_AND_ADD) in qib_post_one_send()
381 else if (wr->opcode >= IB_WR_ATOMIC_CMP_AND_SWP && in qib_post_one_send()
382 (wr->num_sge == 0 || in qib_post_one_send()
383 wr->sg_list[0].length < sizeof(u64) || in qib_post_one_send()
384 wr->sg_list[0].addr & (sizeof(u64) - 1))) in qib_post_one_send()
386 else if (wr->opcode >= IB_WR_RDMA_READ && !qp->s_max_rd_atomic) in qib_post_one_send()
400 wqe->wr = *wr; in qib_post_one_send()
403 if (wr->num_sge) { in qib_post_one_send()
404 acc = wr->opcode >= IB_WR_RDMA_READ ? in qib_post_one_send()
406 for (i = 0; i < wr->num_sge; i++) { in qib_post_one_send()
407 u32 length = wr->sg_list[i].length; in qib_post_one_send()
413 &wr->sg_list[i], acc); in qib_post_one_send()
419 wqe->wr.num_sge = j; in qib_post_one_send()
429 atomic_inc(&to_iah(wr->wr.ud.ah)->refcount); in qib_post_one_send()
445 if (!ret && !wr->next && in qib_post_one_send()
463 static int qib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, in qib_post_send() argument
470 for (; wr; wr = wr->next) { in qib_post_send()
471 err = qib_post_one_send(qp, wr, &scheduled); in qib_post_send()
473 *bad_wr = wr; in qib_post_send()
494 static int qib_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr, in qib_post_receive() argument
504 *bad_wr = wr; in qib_post_receive()
509 for (; wr; wr = wr->next) { in qib_post_receive()
514 if ((unsigned) wr->num_sge > qp->r_rq.max_sge) { in qib_post_receive()
515 *bad_wr = wr; in qib_post_receive()
526 *bad_wr = wr; in qib_post_receive()
532 wqe->wr_id = wr->wr_id; in qib_post_receive()
533 wqe->num_sge = wr->num_sge; in qib_post_receive()
534 for (i = 0; i < wr->num_sge; i++) in qib_post_receive()
535 wqe->sg_list[i] = wr->sg_list[i]; in qib_post_receive()