ssize_t fi_ibv_send_buf(struct fi_ibv_msg_ep *ep, struct ibv_send_wr *wr, const void *buf, size_t len, void *desc, void *context) { struct ibv_sge sge; fi_ibv_set_sge(sge, buf, len, desc); wr->sg_list = &sge; return fi_ibv_send(ep, wr, len, 1, context); }
ssize_t fi_ibv_send_buf_inline(struct fi_ibv_msg_ep *ep, struct ibv_send_wr *wr, const void *buf, size_t len) { struct ibv_sge sge; fi_ibv_set_sge_inline(sge, buf, len); wr->sg_list = &sge; return fi_ibv_send(ep, wr, len, 1, NULL); }
ssize_t fi_ibv_send_iov_flags(struct fi_ibv_msg_ep *ep, struct ibv_send_wr *wr, const struct iovec *iov, void **desc, int count, void *context, uint64_t flags) { size_t len = 0; if (!desc) fi_ibv_set_sge_iov_inline(wr->sg_list, iov, count, len); else fi_ibv_set_sge_iov(wr->sg_list, iov, count, desc, len); wr->send_flags = VERBS_INJECT_FLAGS(ep, len, flags) | VERBS_COMP_FLAGS(ep, flags); return fi_ibv_send(ep, wr, len, count, context); }
static ssize_t fi_ibv_msg_ep_rma_readmsg(struct fid_ep *ep_fid, const struct fi_msg_rma *msg, uint64_t flags) { struct fi_ibv_msg_ep *ep; struct ibv_send_wr wr; size_t len = 0; memset(&wr, 0, sizeof(wr)); wr.opcode = IBV_WR_RDMA_READ; wr.wr.rdma.remote_addr = msg->rma_iov->addr; wr.wr.rdma.rkey = (uint32_t) msg->rma_iov->key; ep = container_of(ep_fid, struct fi_ibv_msg_ep, ep_fid); wr.send_flags = VERBS_COMP_READ_FLAGS(ep, flags); fi_ibv_set_sge_iov(wr.sg_list, msg->msg_iov, msg->iov_count, msg->desc, len); return fi_ibv_send(ep, &wr, len, msg->iov_count, msg->context); }
static ssize_t fi_ibv_msg_ep_rma_readv(struct fid_ep *ep_fid, const struct iovec *iov, void **desc, size_t count, fi_addr_t src_addr, uint64_t addr, uint64_t key, void *context) { struct fi_ibv_msg_ep *ep; struct ibv_send_wr wr; size_t len = 0; memset(&wr, 0, sizeof(wr)); wr.opcode = IBV_WR_RDMA_READ; wr.wr.rdma.remote_addr = addr; wr.wr.rdma.rkey = (uint32_t) key; ep = container_of(ep_fid, struct fi_ibv_msg_ep, ep_fid); wr.send_flags = VERBS_COMP_READ(ep); fi_ibv_set_sge_iov(wr.sg_list, iov, count, desc, len); return fi_ibv_send(ep, &wr, len, count, context); }