From dad3286ddb4ff9eb589e9debf681f561233e92d0 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Wed, 26 Sep 2012 14:13:39 -0700 Subject: [PATCH] refresh (create temporary patch) --- meta | 5 +- patches/refresh-temp | 141 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 patches/refresh-temp diff --git a/meta b/meta index c10318d..d5ab7aa 100644 --- a/meta +++ b/meta @@ -1,12 +1,13 @@ Version: 1 -Previous: 123ac4f70f9c7b659b7ef2de7364265f7ee94ded -Head: c5fee3d4706c13375b5aab3edd138e0f1e4ff29b +Previous: 817586ec3cbf34aa9f5ed4db5d202eed89a49e6d +Head: 20918b0e2de8a59ff6e49437617426b4d89aec18 Applied: verbs-ext: b3d744f488bc97442df7e6cef8536d3b0352a786 xrcd: 07cc711dd4091666de3c99545c64578ce6472da7 srq_ex: 9698473fabcdee089e866558fb1bfc9dbc867609 xrc_qp: db63132ca115254044900ae234e123e8c963e8ee open_qp: c5fee3d4706c13375b5aab3edd138e0f1e4ff29b + refresh-temp: 20918b0e2de8a59ff6e49437617426b4d89aec18 Unapplied: compat-ex: 81b9e1927e19f096b0c34a461b5a0f102b672d43 open_qp_man: 6cf6dc5761417ce54613251a1f16131b443da5ca diff --git a/patches/refresh-temp b/patches/refresh-temp new file mode 100644 index 0000000..be26197 --- /dev/null +++ b/patches/refresh-temp @@ -0,0 +1,141 @@ +Bottom: 6959e49c2b6f7ac0f35d98c0dccbcba4838f0d5d +Top: 1a16e3381c4b7dbc2761fffbde96a85542425f8d +Author: Sean Hefty +Date: 2012-09-26 14:13:38 -0700 + +Refresh of open_qp + +--- + +diff --git a/include/infiniband/driver.h b/include/infiniband/driver.h +index b47a510..7c551b8 100644 +--- a/include/infiniband/driver.h ++++ b/include/infiniband/driver.h +@@ -164,8 +164,8 @@ 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 ibv_xrcd *xrcd, +- struct ibv_qp *qp, struct ibv_qp_open_attr *attr, ++int ibv_cmd_open_qp(struct verbs_xrcd *xrcd, ++ 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); + int ibv_cmd_query_qp(struct ibv_qp *qp, struct ibv_qp_attr *qp_attr, +diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h +index 3c4cbe8..d0c3e1d 100644 +--- a/include/infiniband/verbs.h ++++ b/include/infiniband/verbs.h +@@ -1179,8 +1179,16 @@ ibv_create_qp_ex(struct ibv_context *context, struct ibv_qp_init_attr_ex *qp_ini + /** + * ibv_open_qp - Open a shareable queue pair. + */ +-struct ibv_qp *ibv_open_qp(struct ibv_xrcd *xrcd, +- struct ibv_qp_open_attr *qp_open_attr); ++static inline struct ibv_qp * ++ibv_open_qp(struct ibv_xrcd *xrcd, struct ibv_qp_open_attr *qp_open_attr); ++{ ++ struct verbs_context *vctx = verbs_get_ctx_op(xrcd->context, open_qp); ++ if (!vctx) { ++ errno = ENOSYS; ++ return NULL; ++ } ++ return vctx->open_qp(context, qp_open_attr); ++} + + /** + * ibv_modify_qp - Modify a queue pair. +diff --git a/src/cmd.c b/src/cmd.c +index 75afdc2..da13177 100644 +--- a/src/cmd.c ++++ b/src/cmd.c +@@ -797,7 +797,7 @@ int ibv_cmd_create_qp(struct ibv_pd *pd, + return 0; + } + +-int ibv_cmd_open_qp(struct ibv_xrcd *xrcd, struct ibv_qp *qp, ++int ibv_cmd_open_qp(struct verbs_xrcd *xrcd, 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) +@@ -814,7 +814,20 @@ int ibv_cmd_open_qp(struct ibv_xrcd *xrcd, struct ibv_qp *qp, + + VALGRIND_MAKE_MEM_DEFINED(resp, resp_size); + +- qp->handle = resp->qp_handle; ++ qp->qp.handle = resp->qp_handle; ++ qp->qp.context = xrcd->xrcd.context; ++ qp->qp.qp_context = qp_open_attr->qp_context; ++ qp->qp.pd = NULL; ++ qp->qp.send_cq = qp->qp.recv_cq = NULL; ++ qp->qp.srq = NULL; ++ qp->qp.qp_num = qp_open_attr->qp_num; ++ qp->qp.qp_type = qp_open_attr->qp_type; ++ qp->qp.state = IBV_QPS_UNKNOWN; ++ qp->qp.events_completed = 0; ++ pthread_mutex_init(&qp->qp.mutex, NULL); ++ pthread_cond_init(&qp->qp.cond, NULL); ++ qp->comp_mask = IBV_QP_XRCD; ++ qp->xrcd = xrcd; + + return 0; + } +diff --git a/src/libibverbs.map b/src/libibverbs.map +index c9b29c6..5ad8312 100644 +--- a/src/libibverbs.map ++++ b/src/libibverbs.map +@@ -102,7 +102,6 @@ IBVERBS_1.1 { + ibv_cmd_close_xrcd; + ibv_cmd_create_srq_ex; + ibv_cmd_create_qp_ex; +- ibv_open_qp; + ibv_cmd_open_qp; + + } IBVERBS_1.0; +diff --git a/src/verbs.c b/src/verbs.c +index dbb2210..b5938f2 100644 +--- a/src/verbs.c ++++ b/src/verbs.c +@@ -418,42 +418,6 @@ struct ibv_qp *__ibv_create_qp(struct ibv_pd *pd, + } + default_symver(__ibv_create_qp, ibv_create_qp); + +-struct ibv_qp *__ibv_open_qp(struct ibv_xrcd *xrcd, +- struct ibv_qp_open_attr *qp_open_attr) +-{ +- struct verbs_context *context_ex; +- struct ibv_qp *qp; +- +- context_ex = verbs_get_ctx(xrcd->context); +- if (!context_ex->open_qp || +- qp_open_attr->comp_mask >= IBV_QP_OPEN_ATTR_RESERVED) { +- errno = ENOSYS; +- return NULL; +- } +- +- qp = context_ex->open_qp(xrcd, qp_open_attr); +- if (qp) { +- qp->context = xrcd->context; +- qp->qp_context = qp_open_attr->qp_context; +- +- qp->pd = NULL; +- qp->send_cq = qp->recv_cq = NULL; +- qp->srq = NULL; +- qp->comp_mask |= IBV_QP_XRCD; +- qp->xrcd = xrcd; +- +- qp->qp_num = qp_open_attr->qp_num; +- qp->qp_type = qp_open_attr->qp_type; +- qp->state = IBV_QPS_UNKNOWN; +- qp->events_completed = 0; +- pthread_mutex_init(&qp->mutex, NULL); +- pthread_cond_init(&qp->cond, NULL); +- } +- +- return qp; +-} +-default_symver(__ibv_open_qp, ibv_open_qp); +- + int __ibv_query_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, + int attr_mask, + struct ibv_qp_init_attr *init_attr) -- 2.41.0