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_REG_MR) { in qib_post_one_send()
366 if (qib_reg_mr(qp, reg_wr(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 != ud_wr(wr)->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()
403 memcpy(&wqe->ud_wr, ud_wr(wr), sizeof(wqe->ud_wr)); in qib_post_one_send()
404 else if (wr->opcode == IB_WR_REG_MR) in qib_post_one_send()
405 memcpy(&wqe->reg_wr, reg_wr(wr), in qib_post_one_send()
407 else if (wr->opcode == IB_WR_RDMA_WRITE_WITH_IMM || in qib_post_one_send()
408 wr->opcode == IB_WR_RDMA_WRITE || in qib_post_one_send()
409 wr->opcode == IB_WR_RDMA_READ) in qib_post_one_send()
410 memcpy(&wqe->rdma_wr, rdma_wr(wr), sizeof(wqe->rdma_wr)); in qib_post_one_send()
411 else if (wr->opcode == IB_WR_ATOMIC_CMP_AND_SWP || in qib_post_one_send()
412 wr->opcode == IB_WR_ATOMIC_FETCH_AND_ADD) in qib_post_one_send()
413 memcpy(&wqe->atomic_wr, atomic_wr(wr), sizeof(wqe->atomic_wr)); in qib_post_one_send()
415 memcpy(&wqe->wr, wr, sizeof(wqe->wr)); in qib_post_one_send()
419 if (wr->num_sge) { in qib_post_one_send()
420 acc = wr->opcode >= IB_WR_RDMA_READ ? in qib_post_one_send()
422 for (i = 0; i < wr->num_sge; i++) { in qib_post_one_send()
423 u32 length = wr->sg_list[i].length; in qib_post_one_send()
429 &wr->sg_list[i], acc); in qib_post_one_send()
435 wqe->wr.num_sge = j; in qib_post_one_send()
445 atomic_inc(&to_iah(ud_wr(wr)->ah)->refcount); in qib_post_one_send()
461 if (!ret && !wr->next && in qib_post_one_send()
479 static int qib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, in qib_post_send() argument
486 for (; wr; wr = wr->next) { in qib_post_send()
487 err = qib_post_one_send(qp, wr, &scheduled); in qib_post_send()
489 *bad_wr = wr; in qib_post_send()
510 static int qib_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr, in qib_post_receive() argument
520 *bad_wr = wr; in qib_post_receive()
525 for (; wr; wr = wr->next) { in qib_post_receive()
530 if ((unsigned) wr->num_sge > qp->r_rq.max_sge) { in qib_post_receive()
531 *bad_wr = wr; in qib_post_receive()
542 *bad_wr = wr; in qib_post_receive()
548 wqe->wr_id = wr->wr_id; in qib_post_receive()
549 wqe->num_sge = wr->num_sge; in qib_post_receive()
550 for (i = 0; i < wr->num_sge; i++) in qib_post_receive()
551 wqe->sg_list[i] = wr->sg_list[i]; in qib_post_receive()