Bottom: fad6610d1d2786b12bafb5cd923f53cfb674ebdb
-Top: 3550bace98f1e4ab54dfcdc255f2dd8774f3f09b
+Top: 53f19f53102c76709faccdc0cba71ef7b3a96c5e
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2011-06-27 10:29:36 -0700
4. Optionally, run 'ib_acme -d <dest_ip> -v' to verify that
the ib_acm service is running.
diff --git a/src/acm.c b/src/acm.c
-index 8b01adb..d1cdb8b 100644
+index 8b01adb..1f9d2e8 100644
--- a/src/acm.c
+++ b/src/acm.c
@@ -47,7 +47,7 @@
memset(&msg, 0, sizeof msg);
+ if (status == ACM_STATUS_ENODATA)
-+ atomic_inc(counters[ACM_CNTR_NODATA]);
++ atomic_inc(&counter[ACM_CNTR_NODATA]);
+ else if (status)
-+ atomic_inc(counters[ACM_CNTR_ERROR]);
++ atomic_inc(&counter[ACM_CNTR_ERROR]);
+
lock_acquire(&client->lock);
if (client->sock == INVALID_SOCKET) {
status = ACM_STATUS_SUCCESS;
break;
case ACM_INIT:
-@@ -2209,6 +2224,42 @@ put:
+@@ -2209,10 +2224,46 @@ put:
return ret;
}
+
+static int acm_svr_perf_query(struct acm_client *client, struct acm_perf_msg *msg)
+{
-+ int i;
++ int ret, i;
+
+ acm_log(2, "client %d\n", client->index);
+ msg->hdr.opcode |= ACM_OP_ACK;
+ if (ret != msg->hdr.length)
+ acm_log(0, "ERROR - failed to send response\n");
+ else
-+ ret = 0
++ ret = 0;
++
+ return ret;
+}
+
static void acm_svr_receive(struct acm_client *client)
{
struct acm_msg msg;
+- struct acm_resolve_msg *resolve_msg = (struct acm_resolve_msg *) &msg;
+ int ret;
+
+ acm_log(2, "client %d\n", client->index);
@@ -2228,19 +2279,17 @@ static void acm_svr_receive(struct acm_client *client)
goto out;
}
}
out:
-@@ -2577,9 +2626,6 @@ acm_alloc_ep(struct acm_port *port, uint16_t pkey, uint16_t pkey_index)
+@@ -2557,7 +2606,6 @@ static struct acm_ep *
+ acm_alloc_ep(struct acm_port *port, uint16_t pkey, uint16_t pkey_index)
+ {
+ struct acm_ep *ep;
+- int i;
+
+ acm_log(1, "\n");
+ ep = calloc(1, sizeof *ep);
+@@ -2577,9 +2625,6 @@ acm_alloc_ep(struct acm_port *port, uint16_t pkey, uint16_t pkey_index)
DListInit(&ep->wait_queue);
lock_init(&ep->lock);
return ep;
}
-@@ -3080,7 +3126,7 @@ static void show_usage(char *program)
+@@ -3080,7 +3125,7 @@ static void show_usage(char *program)
int CDECL_FUNC main(int argc, char **argv)
{
while ((op = getopt(argc, argv, "DA:O:")) != -1) {
switch (op) {
-@@ -3120,6 +3166,9 @@ int CDECL_FUNC main(int argc, char **argv)
+@@ -3120,6 +3165,9 @@ int CDECL_FUNC main(int argc, char **argv)
DListInit(&dev_list);
DListInit(&timeout_list);
event_init(&timeout_event);
if (acm_open_devices()) {
acm_log(0, "ERROR - unable to open any devices\n");
diff --git a/src/acme.c b/src/acme.c
-index d42ba81..3be1f86 100644
+index d42ba81..39ce2dd 100644
--- a/src/acme.c
+++ b/src/acme.c
@@ -52,8 +52,6 @@ static char *src_addr;
printf(" -A [addr_file] - generate local address configuration file\n");
printf(" (default is %s)\n", ACM_ADDR_FILE);
printf(" -O [opt_file] - generate local acm_opts.cfg options file\n");
-@@ -583,11 +583,9 @@ static char *get_dest(char *arg, char *format)
- static int resolve(char *program, char *dest_arg)
- {
- char **dest_list;
-- struct ibv_path_record path;
+@@ -587,7 +587,7 @@ static int resolve(char *program, char *dest_arg)
int ret, i = 0;
-- char dest_type;
+ char dest_type;
- ret = libacm_init();
+ ret = ib_acm_connect("127.0.0.1");
if (ret) {
printf("Unable to contact ib_acm service\n");
return ret;
-@@ -631,7 +629,47 @@ static int resolve(char *program, char *dest_arg)
+@@ -631,7 +631,46 @@ static int resolve(char *program, char *dest_arg)
}
free(dest_list);
+ return ret;
+}
+
-+static int perf_query(char *program, char *dest_arg)
++static int query_perf(char *program, char *dest_arg)
+{
+ char **dest_list;
-+ int ret, cnt, i, d = 0;
++ int ret, cnt, i, d;
+ uint64_t *counters;
+
+ dest_list = parse(dest_arg, NULL);
+ }
+
+ printf("Destination,Error Count,Resolve Count,No Data,Addr Cache Count,"
-+ "Addr Query Count,Route Cache Count,Route Query Count\n")
-+ for (dest_addr = get_dest(dest_list[d], &dest_type); dest_addr;
-+ dest_addr = get_dest(dest_list[++d], &dest_type)) {
++ "Addr Query Count,Route Cache Count,Route Query Count\n");
++ for (d = 0; dest_list[d]; d++) {
+
-+ printf("%s,", dest_addr);
-+ ret = ib_acm_connect(dest_addr);
++ printf("%s,", dest_list[d]);
++ ret = ib_acm_connect(dest_list[d]);
+ if (ret) {
-+ printf("Unable to contact ib_acm service\n);
++ printf("Unable to contact ib_acm service\n");
+ continue;
+ }
+
+ printf("Failed to query perf data %s\n", strerror(errno));
+ } else {
+ for (i = 0; i < cnt; i++)
-+ printf("%ull,", counters[i]);
++ printf("%llu,", counters[i]);
+ printf("\n");
+ }
+
return ret;
}
-@@ -650,12 +688,15 @@ int CDECL_FUNC main(int argc, char **argv)
+@@ -650,12 +689,15 @@ int CDECL_FUNC main(int argc, char **argv)
{
char *dest_arg = NULL;
int op, ret;
switch (op) {
case 'f':
addr_type = optarg[0];
-@@ -685,6 +726,9 @@ int CDECL_FUNC main(int argc, char **argv)
+@@ -685,6 +727,9 @@ int CDECL_FUNC main(int argc, char **argv)
case 'D':
dest_dir = optarg;
break;
case 'V':
verbose = 1;
break;
-@@ -700,8 +744,12 @@ int CDECL_FUNC main(int argc, char **argv)
+@@ -700,8 +745,12 @@ int CDECL_FUNC main(int argc, char **argv)
exit(1);
}
- ret = resolve(argv[0], dest_arg);
+ if (dest_arg) {
+ if (perf_query)
-+ ret = perf_query(argv[0], dest_arg);
++ ret = query_perf(argv[0], dest_arg);
+ else
+ ret = resolve(argv[0], dest_arg);
+ }
if (!ret && make_addr)
ret = gen_addr();
-@@ -709,6 +757,7 @@ int CDECL_FUNC main(int argc, char **argv)
+@@ -709,6 +758,7 @@ int CDECL_FUNC main(int argc, char **argv)
if (!ret && make_opts)
ret = gen_opts();
if (verbose || !(make_addr || make_opts) || ret)
printf("return status 0x%x\n", ret);
diff --git a/src/libacm.c b/src/libacm.c
-index 31014d1..4491506 100644
+index 31014d1..eb52a3c 100644
--- a/src/libacm.c
+++ b/src/libacm.c
-@@ -66,45 +66,71 @@ static void acm_set_server_port(void)
+@@ -36,6 +36,8 @@
+ #include <infiniband/acm.h>
+ #include <stdio.h>
+ #include <errno.h>
++#include <netdb.h>
++#include <arpa/inet.h>
+
+ struct acm_port {
+ uint8_t port_num;
+@@ -66,45 +68,46 @@ static void acm_set_server_port(void)
}
}
-int libacm_init(void)
-+static char *get_dest(char *arg)
++int ib_acm_connect(char *dest)
{
- struct sockaddr_in addr;
-+ static char addr[64];
+ struct addrinfo hint, *res;
-+ const char *ai;
int ret;
- ret = osd_init();
-+ memset(&hint, 0, sizeof hint);
-+ hint.ai_protocol = IPPROTO_TCP;
-+ ret = getaddrinfo(arg, NULL, &hint, &res);
-+ if (ret) {
-+ *format = 'l';
-+ return arg;
-+ }
-+
-+ if (res->ai_family == AF_INET) {
-+ ai = inet_ntop(AF_INET, &((struct sockaddr_in *) res->ai_addr)->sin_addr,
-+ addr, sizeof addr);
-+ } else {
-+ ai = inet_ntop(AF_INET6, &((struct sockaddr_in6 *) res->ai_addr)->sin6_addr,
-+ addr, sizeof addr);
-+ }
-+ freeaddrinfo(res);
-+}
-+
-+int ib_acm_connect(char *dest)
-+{
-+ struct addrinfo hint, *res;
-+ int ret;
-+
+ acm_set_server_port();
+ memset(&hint, 0, sizeof hint);
+ hint.ai_protocol = IPPROTO_TCP;
}
}
-@@ -310,3 +336,41 @@ out:
+@@ -310,3 +313,42 @@ out:
lock_release(&lock);
return ret;
}
+
-+static int ib_acm_query_perf(uint64_t **counters, int *count)
++int ib_acm_query_perf(uint64_t **counters, int *count)
+{
+ struct acm_msg msg;
+ struct acm_perf_msg *perf_msg = (struct acm_perf_msg *) &msg;
-+ int ret, cnt = 0;
++ int ret;
+
+ lock_acquire(&lock);
+ memset(&msg, 0, sizeof msg);
+ }
+
+ memcpy(*counters, perf_msg->data, msg.hdr.data[0]);
++ *count = msg.hdr.data[0];
+ ret = 0;
+out:
+ lock_release(&lock);
+++ /dev/null
-Bottom: 3550bace98f1e4ab54dfcdc255f2dd8774f3f09b
-Top: 53f19f53102c76709faccdc0cba71ef7b3a96c5e
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2011-06-28 17:32:09 -0700
-
-Refresh of counters
-
----
-
-diff --git a/src/acm.c b/src/acm.c
-index d1cdb8b..1f9d2e8 100644
---- a/src/acm.c
-+++ b/src/acm.c
-@@ -1010,9 +1010,9 @@ acm_client_resolve_resp(struct acm_client *client, struct acm_resolve_msg *req_m
- memset(&msg, 0, sizeof msg);
-
- if (status == ACM_STATUS_ENODATA)
-- atomic_inc(counters[ACM_CNTR_NODATA]);
-+ atomic_inc(&counter[ACM_CNTR_NODATA]);
- else if (status)
-- atomic_inc(counters[ACM_CNTR_ERROR]);
-+ atomic_inc(&counter[ACM_CNTR_ERROR]);
-
- lock_acquire(&client->lock);
- if (client->sock == INVALID_SOCKET) {
-@@ -2239,7 +2239,7 @@ static int acm_svr_resolve(struct acm_client *client, struct acm_resolve_msg *ms
-
- static int acm_svr_perf_query(struct acm_client *client, struct acm_perf_msg *msg)
- {
-- int i;
-+ int ret, i;
-
- acm_log(2, "client %d\n", client->index);
- msg->hdr.opcode |= ACM_OP_ACK;
-@@ -2256,14 +2256,14 @@ static int acm_svr_perf_query(struct acm_client *client, struct acm_perf_msg *ms
- if (ret != msg->hdr.length)
- acm_log(0, "ERROR - failed to send response\n");
- else
-- ret = 0
-+ ret = 0;
-+
- return ret;
- }
-
- static void acm_svr_receive(struct acm_client *client)
- {
- struct acm_msg msg;
-- struct acm_resolve_msg *resolve_msg = (struct acm_resolve_msg *) &msg;
- int ret;
-
- acm_log(2, "client %d\n", client->index);
-@@ -2606,7 +2606,6 @@ static struct acm_ep *
- acm_alloc_ep(struct acm_port *port, uint16_t pkey, uint16_t pkey_index)
- {
- struct acm_ep *ep;
-- int i;
-
- acm_log(1, "\n");
- ep = calloc(1, sizeof *ep);
-diff --git a/src/acme.c b/src/acme.c
-index 3be1f86..39ce2dd 100644
---- a/src/acme.c
-+++ b/src/acme.c
-@@ -583,7 +583,9 @@ static char *get_dest(char *arg, char *format)
- static int resolve(char *program, char *dest_arg)
- {
- char **dest_list;
-+ struct ibv_path_record path;
- int ret, i = 0;
-+ char dest_type;
-
- ret = ib_acm_connect("127.0.0.1");
- if (ret) {
-@@ -633,10 +635,10 @@ static int resolve(char *program, char *dest_arg)
- return ret;
- }
-
--static int perf_query(char *program, char *dest_arg)
-+static int query_perf(char *program, char *dest_arg)
- {
- char **dest_list;
-- int ret, cnt, i, d = 0;
-+ int ret, cnt, i, d;
- uint64_t *counters;
-
- dest_list = parse(dest_arg, NULL);
-@@ -646,14 +648,13 @@ static int perf_query(char *program, char *dest_arg)
- }
-
- printf("Destination,Error Count,Resolve Count,No Data,Addr Cache Count,"
-- "Addr Query Count,Route Cache Count,Route Query Count\n")
-- for (dest_addr = get_dest(dest_list[d], &dest_type); dest_addr;
-- dest_addr = get_dest(dest_list[++d], &dest_type)) {
-+ "Addr Query Count,Route Cache Count,Route Query Count\n");
-+ for (d = 0; dest_list[d]; d++) {
-
-- printf("%s,", dest_addr);
-- ret = ib_acm_connect(dest_addr);
-+ printf("%s,", dest_list[d]);
-+ ret = ib_acm_connect(dest_list[d]);
- if (ret) {
-- printf("Unable to contact ib_acm service\n);
-+ printf("Unable to contact ib_acm service\n");
- continue;
- }
-
-@@ -662,7 +663,7 @@ static int perf_query(char *program, char *dest_arg)
- printf("Failed to query perf data %s\n", strerror(errno));
- } else {
- for (i = 0; i < cnt; i++)
-- printf("%ull,", counters[i]);
-+ printf("%llu,", counters[i]);
- printf("\n");
- }
-
-@@ -746,7 +747,7 @@ int CDECL_FUNC main(int argc, char **argv)
-
- if (dest_arg) {
- if (perf_query)
-- ret = perf_query(argv[0], dest_arg);
-+ ret = query_perf(argv[0], dest_arg);
- else
- ret = resolve(argv[0], dest_arg);
- }
-diff --git a/src/libacm.c b/src/libacm.c
-index 4491506..eb52a3c 100644
---- a/src/libacm.c
-+++ b/src/libacm.c
-@@ -36,6 +36,8 @@
- #include <infiniband/acm.h>
- #include <stdio.h>
- #include <errno.h>
-+#include <netdb.h>
-+#include <arpa/inet.h>
-
- struct acm_port {
- uint8_t port_num;
-@@ -66,31 +68,6 @@ static void acm_set_server_port(void)
- }
- }
-
--static char *get_dest(char *arg)
--{
-- static char addr[64];
-- struct addrinfo hint, *res;
-- const char *ai;
-- int ret;
--
-- memset(&hint, 0, sizeof hint);
-- hint.ai_protocol = IPPROTO_TCP;
-- ret = getaddrinfo(arg, NULL, &hint, &res);
-- if (ret) {
-- *format = 'l';
-- return arg;
-- }
--
-- if (res->ai_family == AF_INET) {
-- ai = inet_ntop(AF_INET, &((struct sockaddr_in *) res->ai_addr)->sin_addr,
-- addr, sizeof addr);
-- } else {
-- ai = inet_ntop(AF_INET6, &((struct sockaddr_in6 *) res->ai_addr)->sin6_addr,
-- addr, sizeof addr);
-- }
-- freeaddrinfo(res);
--}
--
- int ib_acm_connect(char *dest)
- {
- struct addrinfo hint, *res;
-@@ -337,11 +314,11 @@ out:
- return ret;
- }
-
--static int ib_acm_query_perf(uint64_t **counters, int *count)
-+int ib_acm_query_perf(uint64_t **counters, int *count)
- {
- struct acm_msg msg;
- struct acm_perf_msg *perf_msg = (struct acm_perf_msg *) &msg;
-- int ret, cnt = 0;
-+ int ret;
-
- lock_acquire(&lock);
- memset(&msg, 0, sizeof msg);
-@@ -369,6 +346,7 @@ static int ib_acm_query_perf(uint64_t **counters, int *count)
- }
-
- memcpy(*counters, perf_msg->data, msg.hdr.data[0]);
-+ *count = msg.hdr.data[0];
- ret = 0;
- out:
- lock_release(&lock);