Version: 1
-Previous: 6a97f229fad3035f8cdd0d5a1b059fd75af74ffd
-Head: 8455fcb067d1c06a5477cc9c1a90b498b39f60e6
+Previous: 39832d00b7f1720ee1d06935ffb1951e31f7f8b1
+Head: a56d28f70fb5774b67cf30b870a44cfac6180378
Applied:
verbs-ext: 6f5bd9320736c14a35405d30b5bcda552c0a9bc3
xrcd: b4857ddf1a0837fff54f81be34a1464e9239de0e
srq_ex: 8455fcb067d1c06a5477cc9c1a90b498b39f60e6
+ refresh-temp: a56d28f70fb5774b67cf30b870a44cfac6180378
Unapplied:
xrc_qp: ea51cb7217272757132db0c3a824214b4ee7901d
open_qp: 6879b6122f8020f5defafa829507258bde55d00d
--- /dev/null
+Bottom: e3951de5404ebe328b74eca777759390793e2b6b
+Top: 2524e29d2e369a9ff026f617bd9b1d60640fa84f
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2012-09-28 09:32:44 -0700
+
+Refresh of srq_ex
+
+---
+
+diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h
+index 82e8da9..47ec63c 100644
+--- a/include/infiniband/verbs.h
++++ b/include/infiniband/verbs.h
+@@ -432,7 +432,7 @@ struct ibv_srq_init_attr_ex {
+ void *srq_context;
+ struct ibv_srq_attr attr;
+
+- uint64_t comp_mask;
++ uint32_t comp_mask;
+ enum ibv_srq_type srq_type;
+ struct ibv_pd *pd;
+ struct ibv_xrcd *xrcd;
+@@ -1052,8 +1052,17 @@ static inline struct ibv_srq *
+ ibv_create_srq_ex(struct ibv_context *context,
+ struct ibv_srq_init_attr_ex *srq_init_attr_ex)
+ {
+- struct verbs_context *vctx = verbs_get_ctx_op(context, create_srq_ex);
+- if (!vctx) {
++ struct verbs_context *vctx;
++ uint64_t mask = srq_init_attr_ex->comp_mask;
++
++ if (!(mask & ~(IBV_SRQ_INIT_ATTR_PD | IBV_SRQ_INIT_ATTR_TYPE)) &&
++ (mask & IBV_SRQ_INIT_ATTR_PD) &&
++ (!(mask & IBV_SRQ_INIT_ATTR_TYPE) ||
++ (srq_init_attr_ex->srq_type == IBV_SRQT_BASIC)))
++ return ibv_create_srq(srq_init_attr_ex->pd,
++ (struct ibv_srq_init_attr *) srq_init_attr_ex);
++
++ if (!(vctx = verbs_get_ctx_op(context, create_srq_ex))) {
+ errno = ENOSYS;
+ return NULL;
+ }