From 76891434e93215c5474125b3fcb54da140a975c4 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Tue, 25 Sep 2012 14:55:04 -0700 Subject: [PATCH] Refresh of xrcd --- include/infiniband/driver.h | 15 +++++++++++++-- include/infiniband/verbs.h | 12 ++---------- src/cmd.c | 12 ++++++------ 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/include/infiniband/driver.h b/include/infiniband/driver.h index 193b0dd..9711068 100644 --- a/include/infiniband/driver.h +++ b/include/infiniband/driver.h @@ -53,6 +53,17 @@ */ #define IBV_DEVICE_LIBRARY_EXTENSION rdmav2 +enum verbs_xrcd_mask { + IBV_XRCD_HANDLE = 1 << 0, + IBV_XRCD_RESERVED = 1 << 1 +}; + +struct verbs_xrcd { + struct ibv_xrcd xrcd; + uint64_t comp_mask; + uint32_t handle; +}; + typedef struct ibv_device *(*ibv_driver_init_func)(const char *uverbs_sys_path, int abi_version); @@ -76,11 +87,11 @@ int ibv_cmd_alloc_pd(struct ibv_context *context, struct ibv_pd *pd, struct ibv_alloc_pd *cmd, size_t cmd_size, struct ibv_alloc_pd_resp *resp, size_t resp_size); int ibv_cmd_dealloc_pd(struct ibv_pd *pd); -int ibv_cmd_open_xrcd(struct ibv_context *context, struct ibv_xrcd *xrcd, +int ibv_cmd_open_xrcd(struct verbs_context *context, struct verbs_xrcd *xrcd, int fd, int oflags, struct ibv_open_xrcd *cmd, size_t cmd_size, struct ibv_open_xrcd_resp *resp, size_t resp_size); -int ibv_cmd_close_xrcd(struct ibv_xrcd *xrcd); +int ibv_cmd_close_xrcd(struct verbs_xrcd *xrcd); #define IBV_CMD_REG_MR_HAS_RESP_PARAMS int ibv_cmd_reg_mr(struct ibv_pd *pd, void *addr, size_t length, uint64_t hca_va, int access, diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h index 913ee63..95e93c1 100644 --- a/include/infiniband/verbs.h +++ b/include/infiniband/verbs.h @@ -312,16 +312,8 @@ struct ibv_pd { uint32_t handle; }; -enum ibv_xrcd_mask { - IBV_XRCD_CONTEXT = 1 << 0, - IBV_XRCD_HANDLE = 1 << 1, - IBV_XRCD_RESERVED = 1 << 2 -}; - struct ibv_xrcd { - uint64_t comp_mask; struct ibv_context *context; - uint32_t handle; }; enum ibv_rereg_mr_flags { @@ -744,9 +736,9 @@ struct verbs_context { int (*drv_new_func1) (); new corresponding provider call of func1 int (*lib_new_func1) (); New library call func1 */ - struct ibv_xrcd * (*open_xrcd)(struct ibv_context *context, + struct verbs_xrcd * (*open_xrcd)(struct verbs_context *context, int fd, int oflags); - int (*close_xrcd)(struct ibv_xrcd *xrcd); + int (*close_xrcd)(struct verbs_xrcd *xrcd); size_t sz; /* Set by library on struct allocation,must be * located right before struct ibv_context */ diff --git a/src/cmd.c b/src/cmd.c index 4a98c64..ae8a239 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -194,7 +194,7 @@ int ibv_cmd_dealloc_pd(struct ibv_pd *pd) return 0; } -int ibv_cmd_open_xrcd(struct ibv_context *context, struct ibv_xrcd *xrcd, +int ibv_cmd_open_xrcd(struct verbs_context *context, struct verbs_xrcd *xrcd, int fd, int oflags, struct ibv_open_xrcd *cmd, size_t cmd_size, struct ibv_open_xrcd_resp *resp, size_t resp_size) @@ -203,26 +203,26 @@ int ibv_cmd_open_xrcd(struct ibv_context *context, struct ibv_xrcd *xrcd, cmd->fd = fd; cmd->oflags = oflags; - if (write(context->cmd_fd, cmd, cmd_size) != cmd_size) + if (write(context->context.cmd_fd, cmd, cmd_size) != cmd_size) return errno; VALGRIND_MAKE_MEM_DEFINED(resp, resp_size); - xrcd->comp_mask = IBV_XRCD_CONTEXT | IBV_XRCD_HANDLE; - xrcd->context = context; + xrcd->xrcd.context = context; + xrcd->comp_mask = IBV_XRCD_HANDLE; xrcd->handle = resp->xrcd_handle; return 0; } -int ibv_cmd_close_xrcd(struct ibv_xrcd *xrcd) +int ibv_cmd_close_xrcd(struct verbs_xrcd *xrcd) { struct ibv_close_xrcd cmd; IBV_INIT_CMD(&cmd, sizeof cmd, CLOSE_XRCD); cmd.xrcd_handle = xrcd->handle; - if (write(xrcd->context->cmd_fd, &cmd, sizeof cmd) != sizeof cmd) + if (write(xrcd->xrcd.context->cmd_fd, &cmd, sizeof cmd) != sizeof cmd) return errno; return 0; -- 2.46.0