Version: 1
-Previous: 7d34a4d9437f67ea242e7dcf858234d0c3759980
-Head: e56a7cbc7e32aab36422fa1a2fd6d37271ca6a44
+Previous: 7009538b9ea96f62d678a9df15d32d11198f575c
+Head: cd06b1d11e30b36d43cf8c3211c2e50116631a08
Applied:
sync: 452ce3b051e10e10363baa77834962a89267e052
pre-af-ib: 73504ef1f812bea6d1fd59f194f90e5194ca2efa
opt-cp: 0c67e54602a5ce5524698f8aba7f543f356a865a
gai: 720aaa185b9ce215b2d0678f103ccdf50fa7ffbf
getreq: 0b8f86a7e557e3b9abf4c2586ae9e7e885462623
- ep: 8f4ccd3a8407ac94dc37cecb5aaea604f91a8fec
- refresh-temp: e56a7cbc7e32aab36422fa1a2fd6d37271ca6a44
+ ep: cd06b1d11e30b36d43cf8c3211c2e50116631a08
Unapplied:
cq-status: d4535a68c8d41302c9ee9d44b98a75ea19b4f172
wv-rm-ioctl: 2c4f8b27f89993bc9c1215e8c358046b2934f755
Bottom: a45cf3510a8be501cd8adbda6d59d519d5ea9468
-Top: 316a6a93d53c6f6306f12f5dda9e7fb1c0d7bc0c
+Top: 00f7ceb6e5b2ceb61a3fb4fbe942c7cfcad9529e
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2010-08-16 11:10:48 -0700
* @id: The communication identifier to destroy.\r
* Description:\r
diff --git a/trunk/ulp/librdmacm/src/cma.cpp b/trunk/ulp/librdmacm/src/cma.cpp
-index 77cceb0..d58e1eb 100644
+index 77cceb0..cb2f20c 100644
--- a/trunk/ulp/librdmacm/src/cma.cpp
+++ b/trunk/ulp/librdmacm/src/cma.cpp
-@@ -1343,6 +1343,53 @@ int rdma_migrate_id(struct rdma_cm_id *id, struct rdma_event_channel *channel)
+@@ -74,6 +74,8 @@ struct cma_id_private
+ int index;\r
+ volatile LONG refcnt;\r
+ struct rdma_cm_id **req_list;\r
++ struct ibv_pd *pd;\r
++ struct ibv_qp_init_attr *qp_init_attr;\r
+ uint8_t initiator_depth;\r
+ uint8_t responder_resources;\r
+ };\r
+@@ -1343,6 +1345,84 @@ int rdma_migrate_id(struct rdma_cm_id *id, struct rdma_event_channel *channel)
return 0;\r
}\r
\r
++static int ucma_passive_ep(struct rdma_cm_id *id, struct rdma_addrinfo *res,
++ struct ibv_pd *pd, struct ibv_qp_init_attr *qp_init_attr)
++{
++ struct cma_id_private *id_priv;
++ int ret;
++
++ ret = rdma_bind_addr(id, res->ai_src_addr);
++ if (ret)
++ return ret;
++
++ id_priv = CONTAINING_RECORD(id, struct cma_id_private, id);
++ id_priv->pd = pd;
++
++ if (qp_init_attr) {
++ id_priv->qp_init_attr = new struct ibv_qp_init_attr;
++ if (!id_priv->qp_init_attr)
++ return rdma_seterrno(ENOMEM);
++
++ *id_priv->qp_init_attr = *qp_init_attr;
++ id_priv->qp_init_attr->qp_type = (enum ibv_qp_type) res->ai_qp_type;
++ }
++
++ return 0;
++}
++\r
+int rdma_create_ep(struct rdma_cm_id **id, struct rdma_addrinfo *res,\r
+ struct ibv_pd *pd, struct ibv_qp_init_attr *qp_init_attr)\r
+{\r
+ return ret;\r
+\r
+ if (res->ai_flags & RAI_PASSIVE) {\r
-+ ret = rdma_bind_addr(cm_id, res->ai_src_addr);\r
++ ret = ucma_passive_ep(cm_id, res, pd, qp_init_attr);\r
+ if (ret)\r
+ goto err;\r
+ goto out;\r
+\r
+void rdma_destroy_ep(struct rdma_cm_id *id)\r
+{\r
++ struct cma_id_private *id_priv;\r
++\r
+ if (id->qp)\r
+ rdma_destroy_qp(id);\r
+\r
++ id_priv = CONTAINING_RECORD(id, struct cma_id_private, id);\r
++ if (id_priv->qp_init_attr) {\r
++ delete id_priv->qp_init_attr;\r
++ }\r
+ rdma_destroy_id(id);\r
+}\r
+\r
+++ /dev/null
-Bottom: 316a6a93d53c6f6306f12f5dda9e7fb1c0d7bc0c
-Top: 00f7ceb6e5b2ceb61a3fb4fbe942c7cfcad9529e
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2010-08-16 11:56:54 -0700
-
-Refresh of ep
-
----
-
-diff --git a/trunk/ulp/librdmacm/src/cma.cpp b/trunk/ulp/librdmacm/src/cma.cpp
-index d58e1eb..cb2f20c 100644
---- a/trunk/ulp/librdmacm/src/cma.cpp
-+++ b/trunk/ulp/librdmacm/src/cma.cpp
-@@ -74,6 +74,8 @@ struct cma_id_private
- int index;\r
- volatile LONG refcnt;\r
- struct rdma_cm_id **req_list;\r
-+ struct ibv_pd *pd;\r
-+ struct ibv_qp_init_attr *qp_init_attr;\r
- uint8_t initiator_depth;\r
- uint8_t responder_resources;\r
- };\r
-@@ -1343,6 +1345,31 @@ int rdma_migrate_id(struct rdma_cm_id *id, struct rdma_event_channel *channel)
- return 0;\r
- }\r
- \r
-+static int ucma_passive_ep(struct rdma_cm_id *id, struct rdma_addrinfo *res,
-+ struct ibv_pd *pd, struct ibv_qp_init_attr *qp_init_attr)
-+{
-+ struct cma_id_private *id_priv;
-+ int ret;
-+
-+ ret = rdma_bind_addr(id, res->ai_src_addr);
-+ if (ret)
-+ return ret;
-+
-+ id_priv = CONTAINING_RECORD(id, struct cma_id_private, id);
-+ id_priv->pd = pd;
-+
-+ if (qp_init_attr) {
-+ id_priv->qp_init_attr = new struct ibv_qp_init_attr;
-+ if (!id_priv->qp_init_attr)
-+ return rdma_seterrno(ENOMEM);
-+
-+ *id_priv->qp_init_attr = *qp_init_attr;
-+ id_priv->qp_init_attr->qp_type = (enum ibv_qp_type) res->ai_qp_type;
-+ }
-+
-+ return 0;
-+}
-+\r
- int rdma_create_ep(struct rdma_cm_id **id, struct rdma_addrinfo *res,\r
- struct ibv_pd *pd, struct ibv_qp_init_attr *qp_init_attr)\r
- {\r
-@@ -1354,7 +1381,7 @@ int rdma_create_ep(struct rdma_cm_id **id, struct rdma_addrinfo *res,
- return ret;\r
- \r
- if (res->ai_flags & RAI_PASSIVE) {\r
-- ret = rdma_bind_addr(cm_id, res->ai_src_addr);\r
-+ ret = ucma_passive_ep(cm_id, res, pd, qp_init_attr);\r
- if (ret)\r
- goto err;\r
- goto out;\r
-@@ -1384,9 +1411,15 @@ err:
- \r
- void rdma_destroy_ep(struct rdma_cm_id *id)\r
- {\r
-+ struct cma_id_private *id_priv;\r
-+\r
- if (id->qp)\r
- rdma_destroy_qp(id);\r
- \r
-+ id_priv = CONTAINING_RECORD(id, struct cma_id_private, id);\r
-+ if (id_priv->qp_init_attr) {\r
-+ delete id_priv->qp_init_attr;\r
-+ }\r
- rdma_destroy_id(id);\r
- }