Version: 1
-Previous: a8708b8bb159db319c2842d725b822edfecf7896
-Head: a5f2345a60570ce44882ab083f5dcfc6fc60792e
+Previous: a4ab535d5fef439075e49046daace74b7f2385d4
+Head: 166ec53f82766d2eaaa7a14b848ea4fc08ad0fc4
Applied:
lmc: b355854c79a1e446e87684a41663ad5aae258b73
lid: a5f2345a60570ce44882ab083f5dcfc6fc60792e
+ refresh-temp: 166ec53f82766d2eaaa7a14b848ea4fc08ad0fc4
Unapplied:
Hidden:
--- /dev/null
+Bottom: a15744a4e313a55d0b2bac2e14be1aed79ec75f5
+Top: 70266ac3fc8299998c668dc5b15ed7ad85d3fc51
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2010-12-17 08:03:14 -0800
+
+Refresh of lid
+
+---
+
+diff --git a/src/acm.c b/src/acm.c
+index 5da4044..b367b70 100644
+--- a/src/acm.c
++++ b/src/acm.c
+@@ -2103,13 +2103,18 @@ put:
+ return ret;
+ }
+
++/*
++ * The message buffer contains extra address data buffers. We extract the
++ * destination address from the path record into an extra buffer, so we can
++ * lookup the destination by either LID or GID.
++ */
+ static int
+ acm_svr_resolve_path(struct acm_client *client, struct acm_resolve_msg *msg)
+ {
+ struct acm_ep *ep;
+ struct acm_dest *dest;
+ struct ibv_path_record *path;
+- uint8_t addr[ACM_MAX_ADDRESS];
++ uint8_t *addr;
+ uint8_t status;
+ int ret;
+
+@@ -2134,7 +2139,8 @@ acm_svr_resolve_path(struct acm_client *client, struct acm_resolve_msg *msg)
+ return acm_client_resolve_resp(client, msg, NULL, ACM_STATUS_ESRCADDR);
+ }
+
+- memset(addr, 0, sizeof addr);
++ addr = &msg->data[1].info.addr;
++ memset(addr, 0, ACM_MAX_ADDRESS);
+ if (path->dlid) {
+ * ((uint16_t *) addr) = path->dlid;
+ dest = acm_acquire_dest(ep, ACM_ADDRESS_LID, addr);