and return errno with verbs post failures.

Signed-off by: Arlin Davis [EMAIL PROTECTED]
---
 dapl/openib_cma/dapl_ib_dto.h        |   20 ++++++++++++--------
 dapl/openib_cma/dapl_ib_extensions.c |    3 ---
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/dapl/openib_cma/dapl_ib_dto.h
b/dapl/openib_cma/dapl_ib_dto.h
index b111e5e..ffb5dca 100644
--- a/dapl/openib_cma/dapl_ib_dto.h
+++ b/dapl/openib_cma/dapl_ib_dto.h
@@ -124,7 +124,7 @@ dapls_ib_post_recv (
            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;
 }
@@ -202,7 +202,8 @@ dapls_ib_post_send (
        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, 
@@ -234,7 +235,7 @@ dapls_ib_post_send (
            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;
@@ -357,12 +358,15 @@ dapls_ib_post_ext_send (
                /* 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 */
@@ -411,7 +415,7 @@ dapls_ib_post_ext_send (
            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;
diff --git a/dapl/openib_cma/dapl_ib_extensions.c
b/dapl/openib_cma/dapl_ib_extensions.c
index 3132ffb..52b238f 100755
--- a/dapl/openib_cma/dapl_ib_extensions.c
+++ b/dapl/openib_cma/dapl_ib_extensions.c
@@ -185,9 +185,6 @@ dapli_post_ext( IN       DAT_EP_HANDLE
ep_handle,
        if (DAPL_BAD_HANDLE(ep_handle, DAPL_MAGIC_EP))
                return(DAT_ERROR(DAT_INVALID_HANDLE,
DAT_INVALID_HANDLE_EP));
 
-       if ((NULL == remote_iov) || (NULL == local_iov))
-               return DAT_INVALID_PARAMETER;
-
        ep_ptr = (DAPL_EP *) ep_handle;
        qp_ptr = ep_ptr->qp_handle;
 
-- 
1.5.2.5

_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to