dapl_os_free(ds_array_start_p, segments * sizeof(ib_data_segment_t));
if (ret)
- return( dapl_convert_errno(EFAULT,"ibv_recv") );
+ return( dapl_convert_errno(errno,"ibv_recv") );
return DAT_SUCCESS;
}
if (cookie != NULL)
cookie->val.dto.size = total_len;
- if ((op_type == OP_RDMA_WRITE) || (op_type == OP_RDMA_READ)) {
+ if (wr.num_sge &&
+ (op_type == OP_RDMA_WRITE || op_type == OP_RDMA_READ)) {
wr.wr.rdma.remote_addr = remote_iov->virtual_address;
wr.wr.rdma.rkey = remote_iov->rmr_context;
dapl_dbg_log(DAPL_DBG_TYPE_EP,
dapl_os_free(ds_array_start_p, segments * sizeof(ib_data_segment_t));
if (ret)
- return( dapl_convert_errno(EFAULT,"ibv_send") );
+ return( dapl_convert_errno(errno,"ibv_send") );
dapl_dbg_log(DAPL_DBG_TYPE_EP," post_snd: returned\n");
return DAT_SUCCESS;
/* OP_RDMA_WRITE)IMMED has direct IB wr_type mapping */
dapl_dbg_log(DAPL_DBG_TYPE_EP,
" post_ext: rkey 0x%x va %#016Lx immed=0x%x\n",
- remote_iov->rmr_context,
- remote_iov->virtual_address, immed_data);
+ remote_iov?remote_iov->rmr_context:0,
+ remote_iov?remote_iov->virtual_address:0,
+ immed_data);
wr.imm_data = immed_data;
- wr.wr.rdma.remote_addr = remote_iov->virtual_address;
- wr.wr.rdma.rkey = remote_iov->rmr_context;
+ if (wr.num_sge) {
+ wr.wr.rdma.remote_addr = remote_iov->virtual_address;
+ wr.wr.rdma.rkey = remote_iov->rmr_context;
+ }
break;
case OP_COMP_AND_SWAP:
/* OP_COMP_AND_SWAP has direct IB wr_type mapping */
dapl_os_free(ds_array_start_p, segments * sizeof(ib_data_segment_t));
if (ret)
- return( dapl_convert_errno(EFAULT,"ibv_send") );
+ return( dapl_convert_errno(errno,"ibv_send") );
dapl_dbg_log(DAPL_DBG_TYPE_EP," post_snd: returned\n");
return DAT_SUCCESS;