Bottom: fad6610d1d2786b12bafb5cd923f53cfb674ebdb
-Top: 3ca44cb6f244a91dc40f2675d2828ce532d4d24f
+Top: 3550bace98f1e4ab54dfcdc255f2dd8774f3f09b
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2011-06-27 10:29:36 -0700
---
diff --git a/include/infiniband/acm.h b/include/infiniband/acm.h
-index 143d512..20d1b9e 100644
+index 143d512..3cc778c 100644
--- a/include/infiniband/acm.h
+++ b/include/infiniband/acm.h
@@ -37,6 +37,7 @@
uint16_t length;
uint64_t tid;
};
-@@ -97,6 +98,21 @@ struct acm_resolve_msg {
+@@ -97,6 +98,22 @@ struct acm_resolve_msg {
struct acm_ep_addr_data data[0];
};
+enum {
+ ACM_CNTR_ERROR,
+ ACM_CNTR_RESOLVE,
++ ACM_CNTR_NODATA,
+ ACM_CNTR_ADDR_CACHE,
+ ACM_CNTR_ADDR_QUERY,
+ ACM_CNTR_ROUTE_CACHE,
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..c4b60e8 100644
+index 8b01adb..d1cdb8b 100644
--- a/src/acm.c
+++ b/src/acm.c
@@ -47,7 +47,7 @@
dest->state = ACM_QUERY_ROUTE;
acm_post_send(&ep->sa_queue, msg);
return ACM_STATUS_SUCCESS;
-@@ -1015,7 +1020,7 @@ acm_client_resolve_resp(struct acm_client *client, struct acm_resolve_msg *req_m
+@@ -1004,6 +1009,11 @@ acm_client_resolve_resp(struct acm_client *client, struct acm_resolve_msg *req_m
+ acm_log(2, "client %d, status 0x%x\n", client->index, status);
+ memset(&msg, 0, sizeof msg);
+
++ if (status == ACM_STATUS_ENODATA)
++ atomic_inc(counters[ACM_CNTR_NODATA]);
++ else if (status)
++ atomic_inc(counters[ACM_CNTR_ERROR]);
++
+ lock_acquire(&client->lock);
+ if (client->sock == INVALID_SOCKET) {
+ acm_log(0, "ERROR - connection lost\n");
+@@ -1015,7 +1025,7 @@ acm_client_resolve_resp(struct acm_client *client, struct acm_resolve_msg *req_m
resp_msg->hdr.opcode |= ACM_OP_ACK;
resp_msg->hdr.status = status;
resp_msg->hdr.length = ACM_MSG_HDR_LENGTH;
if (status == ACM_STATUS_SUCCESS) {
resp_msg->hdr.length += ACM_MSG_EP_LENGTH;
-@@ -1848,6 +1853,7 @@ acm_svr_query_path(struct acm_client *client, struct acm_resolve_msg *msg)
+@@ -1848,6 +1858,7 @@ acm_svr_query_path(struct acm_client *client, struct acm_resolve_msg *msg)
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, sa_msg);
return ACM_STATUS_SUCCESS;
-@@ -1896,6 +1902,7 @@ acm_send_resolve(struct acm_ep *ep, struct acm_dest *dest,
+@@ -1896,6 +1907,7 @@ acm_send_resolve(struct acm_ep *ep, struct acm_dest *dest,
for (i = 0; i < ep->mc_cnt; i++)
memcpy(&rec->gid[i], ep->mc_dest[i].address, 16);
acm_post_send(&ep->resolve_queue, msg);
return 0;
}
-@@ -2038,7 +2045,7 @@ acm_svr_queue_req(struct acm_dest *dest, struct acm_client *client,
+@@ -2038,7 +2050,7 @@ acm_svr_queue_req(struct acm_dest *dest, struct acm_client *client,
}
static int
{
struct acm_ep *ep;
struct acm_dest *dest;
-@@ -2082,10 +2089,12 @@ acm_svr_resolve(struct acm_client *client, struct acm_resolve_msg *msg)
+@@ -2082,10 +2094,12 @@ acm_svr_resolve(struct acm_client *client, struct acm_resolve_msg *msg)
switch (dest->state) {
case ACM_READY:
acm_log(2, "request satisfied from local cache\n");
status = acm_resolve_path(ep, dest, acm_dest_sa_resp);
if (status) {
break;
-@@ -2175,6 +2184,7 @@ acm_svr_resolve_path(struct acm_client *client, struct acm_resolve_msg *msg)
+@@ -2175,6 +2189,7 @@ acm_svr_resolve_path(struct acm_client *client, struct acm_resolve_msg *msg)
switch (dest->state) {
case ACM_READY:
acm_log(2, "request satisfied from local cache\n");
status = ACM_STATUS_SUCCESS;
break;
case ACM_INIT:
-@@ -2209,6 +2219,42 @@ put:
+@@ -2209,6 +2224,42 @@ put:
return ret;
}
static void acm_svr_receive(struct acm_client *client)
{
struct acm_msg msg;
-@@ -2228,19 +2274,17 @@ static void acm_svr_receive(struct acm_client *client)
+@@ -2228,19 +2279,17 @@ static void acm_svr_receive(struct acm_client *client)
goto out;
}
}
out:
-@@ -2577,9 +2621,6 @@ acm_alloc_ep(struct acm_port *port, uint16_t pkey, uint16_t pkey_index)
+@@ -2577,9 +2626,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 +3121,7 @@ static void show_usage(char *program)
+@@ -3080,7 +3126,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 +3161,9 @@ int CDECL_FUNC main(int argc, char **argv)
+@@ -3120,6 +3166,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..bc51faa 100644
+index d42ba81..3be1f86 100644
--- a/src/acme.c
+++ b/src/acme.c
@@ -52,8 +52,6 @@ static char *src_addr;
+ return -1;
+ }
+
-+ printf("Destination,Error Count,Resolve Count,Addr Cache Count,"
++ 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)) {
+++ /dev/null
-Bottom: 3ca44cb6f244a91dc40f2675d2828ce532d4d24f
-Top: 3550bace98f1e4ab54dfcdc255f2dd8774f3f09b
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2011-06-28 16:51:41 -0700
-
-Refresh of counters
-
----
-
-diff --git a/include/infiniband/acm.h b/include/infiniband/acm.h
-index 20d1b9e..3cc778c 100644
---- a/include/infiniband/acm.h
-+++ b/include/infiniband/acm.h
-@@ -101,6 +101,7 @@ struct acm_resolve_msg {
- enum {
- ACM_CNTR_ERROR,
- ACM_CNTR_RESOLVE,
-+ ACM_CNTR_NODATA,
- ACM_CNTR_ADDR_CACHE,
- ACM_CNTR_ADDR_QUERY,
- ACM_CNTR_ROUTE_CACHE,
-diff --git a/src/acm.c b/src/acm.c
-index c4b60e8..d1cdb8b 100644
---- a/src/acm.c
-+++ b/src/acm.c
-@@ -1009,6 +1009,11 @@ acm_client_resolve_resp(struct acm_client *client, struct acm_resolve_msg *req_m
- acm_log(2, "client %d, status 0x%x\n", client->index, status);
- memset(&msg, 0, sizeof msg);
-
-+ if (status == ACM_STATUS_ENODATA)
-+ atomic_inc(counters[ACM_CNTR_NODATA]);
-+ else if (status)
-+ atomic_inc(counters[ACM_CNTR_ERROR]);
-+
- lock_acquire(&client->lock);
- if (client->sock == INVALID_SOCKET) {
- acm_log(0, "ERROR - connection lost\n");
-diff --git a/src/acme.c b/src/acme.c
-index bc51faa..3be1f86 100644
---- a/src/acme.c
-+++ b/src/acme.c
-@@ -645,7 +645,7 @@ static int perf_query(char *program, char *dest_arg)
- return -1;
- }
-
-- printf("Destination,Error Count,Resolve Count,Addr Cache Count,"
-+ 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)) {