destroy_ah_hash_key, destroy_ah_hast_data);
}
+#ifdef LEGACY_RDMA_REG_MR
static int build_host_sge_array(RdmaDeviceResources *rdma_dev_res,
struct ibv_sge *sge, uint8_t num_sge,
uint64_t *total_length)
return VENDOR_ERR_INVLKEY | sge[idx].lkey;
}
-#ifdef LEGACY_RDMA_REG_MR
sge[idx].addr = (uintptr_t)mr->virt + sge[idx].addr - mr->start;
-#endif
sge[idx].lkey = rdma_backend_mr_lkey(&mr->backend_mr);
*total_length += sge[idx].length;
return 0;
}
+#else
+static inline int build_host_sge_array(RdmaDeviceResources *rdma_dev_res,
+ struct ibv_sge *sge, uint8_t num_sge,
+ uint64_t *total_length)
+{
+ int idx;
+
+ for (idx = 0; idx < num_sge; idx++) {
+ *total_length += sge[idx].length;
+ }
+ return 0;
+}
+#endif
static void trace_mad_message(const char *title, char *buf, int len)
{
}
}
-#ifdef LEGACY_RDMA_REG_MR
-int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
- size_t length, int access)
-#else
int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
size_t length, uint64_t guest_start, int access)
-#endif
{
#ifdef LEGACY_RDMA_REG_MR
mr->ibmr = ibv_reg_mr(pd->ibpd, addr, length, access);
int rdma_backend_create_pd(RdmaBackendDev *backend_dev, RdmaBackendPD *pd);
void rdma_backend_destroy_pd(RdmaBackendPD *pd);
-#ifdef LEGACY_RDMA_REG_MR
-int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
- size_t length, int access);
-#else
int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
size_t length, uint64_t guest_start, int access);
-#endif
void rdma_backend_destroy_mr(RdmaBackendMR *mr);
int rdma_backend_create_cq(RdmaBackendDev *backend_dev, RdmaBackendCQ *cq,
mr->length = guest_length;
mr->virt += (mr->start & (TARGET_PAGE_SIZE - 1));
-#ifdef LEGACY_RDMA_REG_MR
- ret = rdma_backend_create_mr(&mr->backend_mr, &pd->backend_pd, mr->virt,
- mr->length, access_flags);
-#else
ret = rdma_backend_create_mr(&mr->backend_mr, &pd->backend_pd, mr->virt,
mr->length, guest_start, access_flags);
-#endif
if (ret) {
ret = -EIO;
goto out_dealloc_mr;
}
+#ifdef LEGACY_RDMA_REG_MR
+ /* We keep mr_handle in lkey so send and recv get get mr ptr */
+ *lkey = *mr_handle;
+#else
+ *lkey = rdma_backend_mr_lkey(&mr->backend_mr);
+#endif
}
- /* We keep mr_handle in lkey so send and recv get get mr ptr */
- *lkey = *mr_handle;
*rkey = -1;
mr->pd_handle = pd_handle;