From: Sean Hefty Date: Thu, 27 Sep 2012 18:24:23 +0000 (-0700) Subject: refresh X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=c067a775306998768b7496a94586f4828451e3e2;p=~shefty%2Flibibverbs.git refresh --- diff --git a/meta b/meta index 060625e..c1a8150 100644 --- a/meta +++ b/meta @@ -1,13 +1,12 @@ Version: 1 -Previous: b013ca8a161b1293f7782a452b9c5dcc44a8dfa5 -Head: 4be645b08325eda2cd5ff9aeb026203b1417f8a6 +Previous: df60a22b32d278ab734485677c6492173dd880c5 +Head: 58ba4627a48927caef4724399ef28a0464fe96ba Applied: verbs-ext: b3d744f488bc97442df7e6cef8536d3b0352a786 xrcd: 07cc711dd4091666de3c99545c64578ce6472da7 srq_ex: 6f5f3daabb0adbbb0cc82f449b9b220321b945db xrc_qp: e21c4bf690fe7510747354b4be094b9724f6cf75 - open_qp: 8032a255e416f4dc47eec49949a3713210b35981 - refresh-temp: 4be645b08325eda2cd5ff9aeb026203b1417f8a6 + open_qp: 58ba4627a48927caef4724399ef28a0464fe96ba Unapplied: open_qp_man: 2128e1c4feee2dd0117962223034e39d2762ea9c xrc_sample: 0b3d05529c0eac237a24d6e6dff16cd985288ccc diff --git a/patches/open_qp b/patches/open_qp index 0fc6389..fa9ccc6 100644 --- a/patches/open_qp +++ b/patches/open_qp @@ -1,5 +1,5 @@ Bottom: 43e1e5eb917de0dfa94871196e9df5d34951d652 -Top: 4a3eb780fa1fd1bd833f6f5172d77115ddcd3f00 +Top: 03993c9af52032749622b0ff5124f0e5a6babd9c Author: Sean Hefty Date: 2012-09-19 09:19:59 -0700 @@ -17,14 +17,14 @@ Signed-off-by: Sean Hefty --- diff --git a/include/infiniband/driver.h b/include/infiniband/driver.h -index 97557b5..2b928c2 100644 +index 97557b5..fe77ac4 100644 --- a/include/infiniband/driver.h +++ b/include/infiniband/driver.h @@ -164,6 +164,10 @@ int ibv_cmd_create_qp_ex(struct verbs_context *context, struct verbs_qp *qp, struct ibv_qp_init_attr_ex *attr_ex, struct ibv_create_qp *cmd, size_t cmd_size, struct ibv_create_qp_resp *resp, size_t resp_size); -+int ibv_cmd_open_qp(struct verbs_xrcd *xrcd, ++int ibv_cmd_open_qp(struct verbs_context *context, + struct verbs_qp *qp, struct ibv_qp_open_attr *attr, + struct ibv_open_qp *cmd, size_t cmd_size, + struct ibv_create_qp_resp *resp, size_t resp_size); @@ -77,23 +77,25 @@ index b6d5ce9..e24fa4f 100644 struct ibv_destroy_cq_v1 { diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h -index 56c5db0..1f3f806 100644 +index 56c5db0..a91662c 100644 --- a/include/infiniband/verbs.h +++ b/include/infiniband/verbs.h -@@ -486,6 +486,20 @@ struct ibv_qp_init_attr_ex { +@@ -486,6 +486,22 @@ struct ibv_qp_init_attr_ex { struct ibv_xrcd *xrcd; }; +enum ibv_qp_open_attr_mask { -+ IBV_QP_OPEN_ATTR_CONTEXT = 1 << 0, -+ IBV_QP_OPEN_ATTR_NUM = 1 << 1, -+ IBV_QP_OPEN_ATTR_TYPE = 1 << 2, -+ IBV_QP_OPEN_ATTR_RESERVED = 1 << 3 ++ IBV_QP_OPEN_ATTR_NUM = 1 << 0, ++ IBV_QP_OPEN_ATTR_CONTEXT = 1 << 1, ++ IBV_QP_OPEN_ATTR_XRCD = 1 << 2, ++ IBV_QP_OPEN_ATTR_TYPE = 1 << 3, ++ IBV_QP_OPEN_ATTR_RESERVED = 1 << 4 + }; + +struct ibv_qp_open_attr { + uint32_t comp_mask; + uint32_t qp_num; ++ struct ibv_xrcd *xrcd; + void *qp_context; + enum ibv_qp_type qp_type; +}; @@ -101,7 +103,7 @@ index 56c5db0..1f3f806 100644 enum ibv_qp_attr_mask { IBV_QP_STATE = 1 << 0, IBV_QP_CUR_STATE = 1 << 1, -@@ -517,7 +531,8 @@ enum ibv_qp_state { +@@ -517,7 +533,8 @@ enum ibv_qp_state { IBV_QPS_RTS, IBV_QPS_SQD, IBV_QPS_SQE, @@ -111,16 +113,16 @@ index 56c5db0..1f3f806 100644 }; enum ibv_mig_state { -@@ -789,6 +804,8 @@ struct verbs_context { +@@ -789,6 +806,8 @@ struct verbs_context { int (*drv_new_func1) (); new corresponding provider call of func1 int (*lib_new_func1) (); New library call func1 */ -+ struct ibv_qp * (*open_qp)(struct ibv_xrcd *xrcd, ++ struct ibv_qp * (*open_qp)(struct ibv_context *context, + struct ibv_qp_open_attr *attr); struct ibv_qp * (*create_qp_ex)(struct ibv_context *context, struct ibv_qp_init_attr_ex *qp_init_attr_ex); uint32_t (*get_srq_num)(struct ibv_srq *srq); -@@ -1163,6 +1180,20 @@ ibv_create_qp_ex(struct ibv_context *context, struct ibv_qp_init_attr_ex *qp_ini +@@ -1163,6 +1182,20 @@ ibv_create_qp_ex(struct ibv_context *context, struct ibv_qp_init_attr_ex *qp_ini } /** @@ -142,32 +144,40 @@ index 56c5db0..1f3f806 100644 */ int ibv_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, diff --git a/src/cmd.c b/src/cmd.c -index 0b75df2..704d52e 100644 +index 0b75df2..7f65516 100644 --- a/src/cmd.c +++ b/src/cmd.c -@@ -800,6 +800,41 @@ int ibv_cmd_create_qp(struct ibv_pd *pd, +@@ -800,6 +800,49 @@ int ibv_cmd_create_qp(struct ibv_pd *pd, return 0; } -+int ibv_cmd_open_qp(struct verbs_xrcd *xrcd, struct verbs_qp *qp, ++int ibv_cmd_open_qp(struct verbs_context *context, struct verbs_qp *qp, + struct ibv_qp_open_attr *attr, + struct ibv_open_qp *cmd, size_t cmd_size, + struct ibv_create_qp_resp *resp, size_t resp_size) +{ + IBV_INIT_CMD_RESP(cmd, cmd_size, OPEN_QP, resp, resp_size); + ++ if (attr->comp_mask >= IBV_QP_OPEN_ATTR_RESERVED) ++ return ENOSYS; ++ ++ if (!(attr->comp_mask & IBV_QP_OPEN_ATTR_XRCD) || ++ !(attr->comp_mask & IBV_QP_OPEN_ATTR_NUM) || ++ !(attr->comp_mask & IBV_QP_OPEN_ATTR_TYPE)) ++ return EINAL; ++ + cmd->user_handle = (uintptr_t) qp; -+ cmd->pd_handle = xrcd->handle; ++ cmd->pd_handle = attr->xrcd->handle; + cmd->qpn = attr->qp_num; + cmd->qp_type = attr->qp_type; + -+ if (write(xrcd->xrcd.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); + + qp->qp.handle = resp->qp_handle; -+ qp->qp.context = xrcd->xrcd.context; ++ qp->qp.context = &context->context; + qp->qp.qp_context = attr->qp_context; + qp->qp.pd = NULL; + qp->qp.send_cq = qp->qp.recv_cq = NULL; @@ -179,7 +189,7 @@ index 0b75df2..704d52e 100644 + pthread_mutex_init(&qp->qp.mutex, NULL); + pthread_cond_init(&qp->qp.cond, NULL); + qp->comp_mask = VERBS_QP_XRCD; -+ qp->xrcd = xrcd; ++ qp->xrcd = attr->xrcd; + + return 0; +} diff --git a/patches/refresh-temp b/patches/refresh-temp deleted file mode 100644 index a9b288d..0000000 --- a/patches/refresh-temp +++ /dev/null @@ -1,108 +0,0 @@ -Bottom: 4a3eb780fa1fd1bd833f6f5172d77115ddcd3f00 -Top: 03993c9af52032749622b0ff5124f0e5a6babd9c -Author: Sean Hefty -Date: 2012-09-27 11:24:23 -0700 - -Refresh of open_qp - ---- - -diff --git a/include/infiniband/driver.h b/include/infiniband/driver.h -index 2b928c2..fe77ac4 100644 ---- a/include/infiniband/driver.h -+++ b/include/infiniband/driver.h -@@ -164,7 +164,7 @@ int ibv_cmd_create_qp_ex(struct verbs_context *context, - struct verbs_qp *qp, struct ibv_qp_init_attr_ex *attr_ex, - struct ibv_create_qp *cmd, size_t cmd_size, - struct ibv_create_qp_resp *resp, size_t resp_size); --int ibv_cmd_open_qp(struct verbs_xrcd *xrcd, -+int ibv_cmd_open_qp(struct verbs_context *context, - struct verbs_qp *qp, struct ibv_qp_open_attr *attr, - struct ibv_open_qp *cmd, size_t cmd_size, - struct ibv_create_qp_resp *resp, size_t resp_size); -diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h -index 1f3f806..a91662c 100644 ---- a/include/infiniband/verbs.h -+++ b/include/infiniband/verbs.h -@@ -487,15 +487,17 @@ struct ibv_qp_init_attr_ex { - }; - - enum ibv_qp_open_attr_mask { -- IBV_QP_OPEN_ATTR_CONTEXT = 1 << 0, -- IBV_QP_OPEN_ATTR_NUM = 1 << 1, -- IBV_QP_OPEN_ATTR_TYPE = 1 << 2, -- IBV_QP_OPEN_ATTR_RESERVED = 1 << 3 -+ IBV_QP_OPEN_ATTR_NUM = 1 << 0, -+ IBV_QP_OPEN_ATTR_CONTEXT = 1 << 1, -+ IBV_QP_OPEN_ATTR_XRCD = 1 << 2, -+ IBV_QP_OPEN_ATTR_TYPE = 1 << 3, -+ IBV_QP_OPEN_ATTR_RESERVED = 1 << 4 - }; - - struct ibv_qp_open_attr { - uint32_t comp_mask; - uint32_t qp_num; -+ struct ibv_xrcd *xrcd; - void *qp_context; - enum ibv_qp_type qp_type; - }; -@@ -804,7 +806,7 @@ struct verbs_context { - int (*drv_new_func1) (); new corresponding provider call of func1 - int (*lib_new_func1) (); New library call func1 - */ -- struct ibv_qp * (*open_qp)(struct ibv_xrcd *xrcd, -+ struct ibv_qp * (*open_qp)(struct ibv_context *context, - struct ibv_qp_open_attr *attr); - struct ibv_qp * (*create_qp_ex)(struct ibv_context *context, - struct ibv_qp_init_attr_ex *qp_init_attr_ex); -diff --git a/src/cmd.c b/src/cmd.c -index 704d52e..7f65516 100644 ---- a/src/cmd.c -+++ b/src/cmd.c -@@ -800,25 +800,33 @@ int ibv_cmd_create_qp(struct ibv_pd *pd, - return 0; - } - --int ibv_cmd_open_qp(struct verbs_xrcd *xrcd, struct verbs_qp *qp, -+int ibv_cmd_open_qp(struct verbs_context *context, struct verbs_qp *qp, - struct ibv_qp_open_attr *attr, - struct ibv_open_qp *cmd, size_t cmd_size, - struct ibv_create_qp_resp *resp, size_t resp_size) - { - IBV_INIT_CMD_RESP(cmd, cmd_size, OPEN_QP, resp, resp_size); - -+ if (attr->comp_mask >= IBV_QP_OPEN_ATTR_RESERVED) -+ return ENOSYS; -+ -+ if (!(attr->comp_mask & IBV_QP_OPEN_ATTR_XRCD) || -+ !(attr->comp_mask & IBV_QP_OPEN_ATTR_NUM) || -+ !(attr->comp_mask & IBV_QP_OPEN_ATTR_TYPE)) -+ return EINAL; -+ - cmd->user_handle = (uintptr_t) qp; -- cmd->pd_handle = xrcd->handle; -+ cmd->pd_handle = attr->xrcd->handle; - cmd->qpn = attr->qp_num; - cmd->qp_type = attr->qp_type; - -- if (write(xrcd->xrcd.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); - - qp->qp.handle = resp->qp_handle; -- qp->qp.context = xrcd->xrcd.context; -+ qp->qp.context = &context->context; - qp->qp.qp_context = attr->qp_context; - qp->qp.pd = NULL; - qp->qp.send_cq = qp->qp.recv_cq = NULL; -@@ -830,7 +838,7 @@ int ibv_cmd_open_qp(struct verbs_xrcd *xrcd, struct verbs_qp *qp, - pthread_mutex_init(&qp->qp.mutex, NULL); - pthread_cond_init(&qp->qp.cond, NULL); - qp->comp_mask = VERBS_QP_XRCD; -- qp->xrcd = xrcd; -+ qp->xrcd = attr->xrcd; - - return 0; - }