Lines Matching refs:wr

647 		       const struct ib_reg_wr *wr)
649 struct pvrdma_user_mr *mr = to_vmr(wr->mr);
651 wqe_hdr->wr.fast_reg.iova_start = mr->ibmr.iova;
652 wqe_hdr->wr.fast_reg.pl_pdir_dma = mr->pdir.dir_dma;
653 wqe_hdr->wr.fast_reg.page_shift = mr->page_shift;
654 wqe_hdr->wr.fast_reg.page_list_len = mr->npages;
655 wqe_hdr->wr.fast_reg.length = mr->ibmr.length;
656 wqe_hdr->wr.fast_reg.access_flags = wr->access;
657 wqe_hdr->wr.fast_reg.rkey = wr->key;
666 * @wr: work request list to post
671 int pvrdma_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
686 *bad_wr = wr;
692 while (wr) {
699 *bad_wr = wr;
704 if (unlikely(wr->num_sge > qp->sq.max_sg || wr->num_sge < 0)) {
707 *bad_wr = wr;
732 wr->opcode != IB_WR_SEND) {
735 *bad_wr = wr;
740 if (wr->opcode != IB_WR_SEND &&
741 wr->opcode != IB_WR_SEND_WITH_IMM) {
744 *bad_wr = wr;
752 wqe_hdr->wr_id = wr->wr_id;
753 wqe_hdr->num_sge = wr->num_sge;
754 wqe_hdr->opcode = ib_wr_opcode_to_pvrdma(wr->opcode);
755 wqe_hdr->send_flags = ib_send_flags_to_pvrdma(wr->send_flags);
756 if (wr->opcode == IB_WR_SEND_WITH_IMM ||
757 wr->opcode == IB_WR_RDMA_WRITE_WITH_IMM)
758 wqe_hdr->ex.imm_data = wr->ex.imm_data;
761 *bad_wr = wr;
769 if (unlikely(!ud_wr(wr)->ah)) {
772 *bad_wr = wr;
781 wqe_hdr->wr.ud.remote_qpn = ud_wr(wr)->remote_qpn;
782 wqe_hdr->wr.ud.remote_qkey =
783 ud_wr(wr)->remote_qkey & 0x80000000 ?
784 qp->qkey : ud_wr(wr)->remote_qkey;
785 wqe_hdr->wr.ud.av = to_vah(ud_wr(wr)->ah)->av;
789 switch (wr->opcode) {
793 wqe_hdr->wr.rdma.remote_addr =
794 rdma_wr(wr)->remote_addr;
795 wqe_hdr->wr.rdma.rkey = rdma_wr(wr)->rkey;
800 wr->ex.invalidate_rkey;
804 wqe_hdr->wr.atomic.remote_addr =
805 atomic_wr(wr)->remote_addr;
806 wqe_hdr->wr.atomic.rkey = atomic_wr(wr)->rkey;
807 wqe_hdr->wr.atomic.compare_add =
808 atomic_wr(wr)->compare_add;
809 if (wr->opcode == IB_WR_ATOMIC_CMP_AND_SWP)
810 wqe_hdr->wr.atomic.swap =
811 atomic_wr(wr)->swap;
814 ret = set_reg_seg(wqe_hdr, reg_wr(wr));
818 *bad_wr = wr;
831 *bad_wr = wr;
836 for (i = 0; i < wr->num_sge; i++) {
838 sge->addr = wr->sg_list[i].addr;
839 sge->length = wr->sg_list[i].length;
840 sge->lkey = wr->sg_list[i].lkey;
851 wr = wr->next;
868 * @wr: the work request list to post
873 int pvrdma_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
889 *bad_wr = wr;
895 *bad_wr = wr;
901 while (wr) {
904 if (unlikely(wr->num_sge > qp->rq.max_sg ||
905 wr->num_sge < 0)) {
907 *bad_wr = wr;
916 *bad_wr = wr;
923 wqe_hdr->wr_id = wr->wr_id;
924 wqe_hdr->num_sge = wr->num_sge;
928 for (i = 0; i < wr->num_sge; i++) {
929 sge->addr = wr->sg_list[i].addr;
930 sge->length = wr->sg_list[i].length;
931 sge->lkey = wr->sg_list[i].lkey;
942 wr = wr->next;