]> git.openfabrics.org - ~shefty/ibacm.git/commitdiff
refresh (create temporary patch)
authorSean Hefty <sean.hefty@intel.com>
Fri, 1 Apr 2011 23:42:52 +0000 (16:42 -0700)
committerSean Hefty <sean.hefty@intel.com>
Fri, 1 Apr 2011 23:42:52 +0000 (16:42 -0700)
meta
patches/refresh-temp [new file with mode: 0644]

diff --git a/meta b/meta
index 5ef7610f0c89c9c20e52665a55bcee295be73a55..79602da8fc70c76273c131b70466a23504771c07 100644 (file)
--- a/meta
+++ b/meta
@@ -1,10 +1,11 @@
 Version: 1
-Previous: 9d72115f8f4defddd6d76160662e22e99b029f69
-Head: 690668987a981187282450e2934090b6ccb15f1b
+Previous: cc5db718b24d972bd207464a68a63195b2f68770
+Head: b5702af7c169e3fba0b4a1f3486a4b5767762573
 Applied:
   opt_mc_av: 1c9cb4576f95c0d2cc7bf96d33cc6efe5f6c313d
   one_mc_join: ef3728004507256635ad95161cd92811661affbe
   dyn_ah: 690668987a981187282450e2934090b6ccb15f1b
+  refresh-temp: b5702af7c169e3fba0b4a1f3486a4b5767762573
 Unapplied:
   addr_size: 8de02c47fbf595132105a7050ad6f755f49f9a7a
 Hidden:
diff --git a/patches/refresh-temp b/patches/refresh-temp
new file mode 100644 (file)
index 0000000..91421d2
--- /dev/null
@@ -0,0 +1,71 @@
+Bottom: 0f7e548ae7fb3b8c706fb9b466adfb81accbd129
+Top:    e8b5bb1cf92f403d8767fc1d61cb8c538da64fe3
+Author: Sean Hefty <sean.hefty@intel.com>
+Date:   2011-04-01 16:42:52 -0700
+
+Refresh of dyn_ah
+
+---
+
+diff --git a/src/acm.c b/src/acm.c
+index 641fc2d..53a8e7b 100644
+--- a/src/acm.c
++++ b/src/acm.c
+@@ -450,20 +450,30 @@ acm_alloc_send(struct acm_ep *ep, struct acm_dest *dest, size_t size)
+       msg->mr = ibv_reg_mr(ep->port->dev->pd, msg->data, size, 0);
+       if (!msg->mr) {
+               acm_log(0, "ERROR - failed to register send buffer\n");
+-              goto err;
++              goto err1;
++      }
++
++      if (!dest->ah) {
++              msg->ah = ibv_create_ah(ep->port->dev->pd, &dest->av);
++              if (!msg->ah) {
++                      acm_log(0, "ERROR - unable to create ah\n");
++                      goto err2;
++              }
++              msg->wr.wr.ud.ah = msg->ah;
++      } else {
++              msg->wr.wr.ud.ah = dest->ah;
+       }
++      acm_log(2, "get dest %s\n", dest->name);
++      (void) atomic_inc(&dest->refcnt);
++      msg->dest = dest;
++
+       msg->wr.next = NULL;
+       msg->wr.sg_list = &msg->sge;
+       msg->wr.num_sge = 1;
+       msg->wr.opcode = IBV_WR_SEND;
+       msg->wr.send_flags = IBV_SEND_SIGNALED;
+       msg->wr.wr_id = (uintptr_t) msg;
+-
+-      acm_log(2, "get dest %s\n", dest->name);
+-      (void) atomic_inc(&dest->refcnt);
+-      msg->dest = dest;
+-      msg->wr.wr.ud.ah = dest->ah;
+       msg->wr.wr.ud.remote_qpn = dest->remote_qpn;
+       msg->wr.wr.ud.remote_qkey = ACM_QKEY;
+@@ -472,7 +482,10 @@ acm_alloc_send(struct acm_ep *ep, struct acm_dest *dest, size_t size)
+       msg->sge.addr = (uintptr_t) msg->data;
+       acm_log(2, "%p\n", msg);
+       return msg;
+-err:
++
++err2:
++      ibv_dereg_mr(msg->mr);
++err1:
+       free(msg);
+       return NULL;
+ }
+@@ -491,6 +504,8 @@ acm_init_send_req(struct acm_send_msg *msg, void *context,
+ static void acm_free_send(struct acm_send_msg *msg)
+ {
+       acm_log(2, "%p\n", msg);
++      if (msg->ah)
++              ibv_destroy_ah(msg->ah);
+       ibv_dereg_mr(msg->mr);
+       acm_put_dest(msg->dest);
+       free(msg);