Lines Matching refs:wr
647 const struct ib_reg_wr *wr) in set_reg_seg() argument
649 struct pvrdma_user_mr *mr = to_vmr(wr->mr); in set_reg_seg()
651 wqe_hdr->wr.fast_reg.iova_start = mr->ibmr.iova; in set_reg_seg()
652 wqe_hdr->wr.fast_reg.pl_pdir_dma = mr->pdir.dir_dma; in set_reg_seg()
653 wqe_hdr->wr.fast_reg.page_shift = mr->page_shift; in set_reg_seg()
654 wqe_hdr->wr.fast_reg.page_list_len = mr->npages; in set_reg_seg()
655 wqe_hdr->wr.fast_reg.length = mr->ibmr.length; in set_reg_seg()
656 wqe_hdr->wr.fast_reg.access_flags = wr->access; in set_reg_seg()
657 wqe_hdr->wr.fast_reg.rkey = wr->key; in set_reg_seg()
671 int pvrdma_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr, in pvrdma_post_send() argument
686 *bad_wr = wr; in pvrdma_post_send()
692 while (wr) { in pvrdma_post_send()
699 *bad_wr = wr; in pvrdma_post_send()
704 if (unlikely(wr->num_sge > qp->sq.max_sg || wr->num_sge < 0)) { in pvrdma_post_send()
707 *bad_wr = wr; in pvrdma_post_send()
712 if (unlikely(wr->opcode < 0)) { in pvrdma_post_send()
715 *bad_wr = wr; in pvrdma_post_send()
740 wr->opcode != IB_WR_SEND) { in pvrdma_post_send()
743 *bad_wr = wr; in pvrdma_post_send()
748 if (wr->opcode != IB_WR_SEND && in pvrdma_post_send()
749 wr->opcode != IB_WR_SEND_WITH_IMM) { in pvrdma_post_send()
752 *bad_wr = wr; in pvrdma_post_send()
760 wqe_hdr->wr_id = wr->wr_id; in pvrdma_post_send()
761 wqe_hdr->num_sge = wr->num_sge; in pvrdma_post_send()
762 wqe_hdr->opcode = ib_wr_opcode_to_pvrdma(wr->opcode); in pvrdma_post_send()
763 wqe_hdr->send_flags = ib_send_flags_to_pvrdma(wr->send_flags); in pvrdma_post_send()
764 if (wr->opcode == IB_WR_SEND_WITH_IMM || in pvrdma_post_send()
765 wr->opcode == IB_WR_RDMA_WRITE_WITH_IMM) in pvrdma_post_send()
766 wqe_hdr->ex.imm_data = wr->ex.imm_data; in pvrdma_post_send()
769 *bad_wr = wr; in pvrdma_post_send()
777 if (unlikely(!ud_wr(wr)->ah)) { in pvrdma_post_send()
780 *bad_wr = wr; in pvrdma_post_send()
789 wqe_hdr->wr.ud.remote_qpn = ud_wr(wr)->remote_qpn; in pvrdma_post_send()
790 wqe_hdr->wr.ud.remote_qkey = in pvrdma_post_send()
791 ud_wr(wr)->remote_qkey & 0x80000000 ? in pvrdma_post_send()
792 qp->qkey : ud_wr(wr)->remote_qkey; in pvrdma_post_send()
793 wqe_hdr->wr.ud.av = to_vah(ud_wr(wr)->ah)->av; in pvrdma_post_send()
797 switch (wr->opcode) { in pvrdma_post_send()
801 wqe_hdr->wr.rdma.remote_addr = in pvrdma_post_send()
802 rdma_wr(wr)->remote_addr; in pvrdma_post_send()
803 wqe_hdr->wr.rdma.rkey = rdma_wr(wr)->rkey; in pvrdma_post_send()
808 wr->ex.invalidate_rkey; in pvrdma_post_send()
812 wqe_hdr->wr.atomic.remote_addr = in pvrdma_post_send()
813 atomic_wr(wr)->remote_addr; in pvrdma_post_send()
814 wqe_hdr->wr.atomic.rkey = atomic_wr(wr)->rkey; in pvrdma_post_send()
815 wqe_hdr->wr.atomic.compare_add = in pvrdma_post_send()
816 atomic_wr(wr)->compare_add; in pvrdma_post_send()
817 if (wr->opcode == IB_WR_ATOMIC_CMP_AND_SWP) in pvrdma_post_send()
818 wqe_hdr->wr.atomic.swap = in pvrdma_post_send()
819 atomic_wr(wr)->swap; in pvrdma_post_send()
822 ret = set_reg_seg(wqe_hdr, reg_wr(wr)); in pvrdma_post_send()
826 *bad_wr = wr; in pvrdma_post_send()
839 *bad_wr = wr; in pvrdma_post_send()
844 for (i = 0; i < wr->num_sge; i++) { in pvrdma_post_send()
846 sge->addr = wr->sg_list[i].addr; in pvrdma_post_send()
847 sge->length = wr->sg_list[i].length; in pvrdma_post_send()
848 sge->lkey = wr->sg_list[i].lkey; in pvrdma_post_send()
859 wr = wr->next; in pvrdma_post_send()
881 int pvrdma_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr, in pvrdma_post_recv() argument
897 *bad_wr = wr; in pvrdma_post_recv()
903 *bad_wr = wr; in pvrdma_post_recv()
909 while (wr) { in pvrdma_post_recv()
912 if (unlikely(wr->num_sge > qp->rq.max_sg || in pvrdma_post_recv()
913 wr->num_sge < 0)) { in pvrdma_post_recv()
915 *bad_wr = wr; in pvrdma_post_recv()
924 *bad_wr = wr; in pvrdma_post_recv()
931 wqe_hdr->wr_id = wr->wr_id; in pvrdma_post_recv()
932 wqe_hdr->num_sge = wr->num_sge; in pvrdma_post_recv()
936 for (i = 0; i < wr->num_sge; i++) { in pvrdma_post_recv()
937 sge->addr = wr->sg_list[i].addr; in pvrdma_post_recv()
938 sge->length = wr->sg_list[i].length; in pvrdma_post_recv()
939 sge->lkey = wr->sg_list[i].lkey; in pvrdma_post_recv()
950 wr = wr->next; in pvrdma_post_recv()