From 9f7566eaa58effc3aa4bb5ae6a30c756601b0fdc Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Fri, 17 Dec 2010 13:01:23 -0800 Subject: [PATCH] refresh (create temporary patch) --- meta | 5 ++- patches/refresh-temp | 94 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 patches/refresh-temp diff --git a/meta b/meta index 25cedb0..99e0a2a 100644 --- a/meta +++ b/meta @@ -1,6 +1,6 @@ Version: 1 -Previous: e93069184c664997226fc092fa54fe9227423725 -Head: 0abd94afb03360c0a85375c6cd937a0a39e8abee +Previous: 4da8dedaf130dd7af2e05396bb745598f1995371 +Head: 67773d539642627a329f1994c97a0786ea81d020 Applied: lmc: b355854c79a1e446e87684a41663ad5aae258b73 lid: 1c005908ee6c257f6fa290df8ce8a45e968d07ab @@ -8,5 +8,6 @@ Applied: range: dfe3c8409e2e1fcc2fc11bd7f9287f1c46b36015 format_lid: 8994e17d78c86c08edcc8067dda7392a97cc8a3f query_path: 0abd94afb03360c0a85375c6cd937a0a39e8abee + refresh-temp: 67773d539642627a329f1994c97a0786ea81d020 Unapplied: Hidden: diff --git a/patches/refresh-temp b/patches/refresh-temp new file mode 100644 index 0000000..b4c7402 --- /dev/null +++ b/patches/refresh-temp @@ -0,0 +1,94 @@ +Bottom: 51e1d4efb38c4166735d2f14c94b3c842483435a +Top: bb5c523e3cfc72da4f5964ce6a1c40101d4ac69d +Author: Sean Hefty +Date: 2010-12-17 13:01:23 -0800 + +Refresh of query_path + +--- + +diff --git a/src/acm.c b/src/acm.c +index ed1cb28..859b1bc 100644 +--- a/src/acm.c ++++ b/src/acm.c +@@ -1722,30 +1722,6 @@ static void acm_svr_accept(void) + acm_log(2, "assigned client %d\n", i); + } + +-static uint8_t acm_svr_query_sa(struct acm_ep *ep, struct acm_request *req) +-{ +- struct acm_resolve_msg *client_req = (struct acm_resolve_msg *) &req->msg; +- struct acm_send_msg *msg; +- struct ib_sa_mad *mad; +- +- acm_log(2, "\n"); +- msg = acm_alloc_send(ep, &ep->port->sa_dest, sizeof(*mad)); +- if (!msg) { +- acm_log(0, "ERROR - cannot allocate send msg\n"); +- return ACM_STATUS_ENOMEM; +- } +- +- acm_init_send_req(msg, (void *) req, acm_client_sa_resp); +- mad = (struct ib_sa_mad *) msg->data; +- acm_init_path_query(mad); +- +- memcpy(mad->data, &client_req->data[0].info.path, sizeof(struct ibv_path_record)); +- mad->comp_mask = acm_path_comp_mask(&client_req->data[0].info.path); +- +- acm_post_send(&ep->sa_queue, msg); +- return ACM_STATUS_SUCCESS; +-} +- + static int + acm_is_path_from_port(struct acm_port *port, struct ibv_path_record *path) + { +@@ -1804,9 +1780,11 @@ acm_get_ep(struct acm_ep_addr_data *data) + } + + static int +-acm_svr_query(struct acm_client *client, struct acm_resolve_msg *msg) ++acm_svr_query_path(struct acm_client *client, struct acm_resolve_msg *msg) + { + struct acm_request *req; ++ struct acm_send_msg *send_msg; ++ struct ib_sa_mad *mad; + struct acm_ep *ep; + uint8_t status; + +@@ -1830,10 +1808,24 @@ acm_svr_query(struct acm_client *client, struct acm_resolve_msg *msg) + goto resp; + } + +- status = acm_svr_query_sa(ep, req); +- if (!status) +- return status; ++ send_msg = acm_alloc_send(ep, &ep->port->sa_dest, sizeof(*mad)); ++ if (!send_msg) { ++ acm_log(0, "ERROR - cannot allocate send msg\n"); ++ status = ACM_STATUS_ENOMEM; ++ goto free; ++ } ++ ++ acm_init_send_req(send_msg, (void *) req, acm_client_sa_resp); ++ mad = (struct ib_sa_mad *) send_msg->data; ++ acm_init_path_query(mad); ++ ++ memcpy(mad->data, &msg->data[0].info.path, sizeof(struct ibv_path_record)); ++ mad->comp_mask = acm_path_comp_mask(&msg->data[0].info.path); ++ ++ acm_post_send(&ep->sa_queue, msg); ++ return ACM_STATUS_SUCCESS; + ++free: + acm_free_req(req); + resp: + return acm_client_query_resp(client, msg, status); +@@ -2217,7 +2209,7 @@ static void acm_svr_receive(struct acm_client *client) + + if (resolve_msg->data[0].type == ACM_EP_INFO_PATH) { + if (resolve_msg->data[0].flags & ACM_FLAGS_QUERY_SA) { +- ret = acm_svr_query(client, resolve_msg); ++ ret = acm_svr_query_path(client, resolve_msg); + } else { + ret = acm_svr_resolve_path(client, resolve_msg); + } -- 2.46.0