]> git.openfabrics.org - ~shefty/ibacm.git/commitdiff
refresh (create temporary patch)
authorSean Hefty <sean.hefty@intel.com>
Tue, 28 Jun 2011 05:46:45 +0000 (22:46 -0700)
committerSean Hefty <sean.hefty@intel.com>
Tue, 28 Jun 2011 05:46:45 +0000 (22:46 -0700)
meta
patches/refresh-temp [new file with mode: 0644]

diff --git a/meta b/meta
index 0dc3837cce2e49b92bdb7cd7f40d0722ebfc32f8..250eaa141ddfecf986ed25b2f2429da13085b2a3 100644 (file)
--- a/meta
+++ b/meta
@@ -1,10 +1,11 @@
 Version: 1
-Previous: f1a0ff0becff2ec822141a84b4326834b11aa53e
-Head: dba947639507d8a3785be40353f216d62265cd29
+Previous: d0ecf01593f575f707df21654e0133943947f37c
+Head: 945e3adb556bee02203df22e2cadc4c38bb28d61
 Applied:
   deam: 15fcbd5198ba0c15ab4e8fddcdba32c8ef45faf8
   braces: 5fb48c1b8d722b60332f83ca4c8b92b2a7e456a6
   counters: dba947639507d8a3785be40353f216d62265cd29
+  refresh-temp: 945e3adb556bee02203df22e2cadc4c38bb28d61
 Unapplied:
   acm1.0.5: 1b225173756cfcec4d81d26b1160ebae7644261b
   name2ip: 8e00708e882239292492e13aa51c82042255933c
diff --git a/patches/refresh-temp b/patches/refresh-temp
new file mode 100644 (file)
index 0000000..c9b3d67
--- /dev/null
@@ -0,0 +1,117 @@
+Bottom: 1b26eded9caf73f86edaf805711f031f86f8a82c
+Top:    590da5d69e0758287825bf4e7f25cfd32e149041
+Author: Sean Hefty <sean.hefty@intel.com>
+Date:   2011-06-27 22:46:45 -0700
+
+Refresh of counters
+
+---
+
+diff --git a/include/infiniband/acm.h b/include/infiniband/acm.h
+index 143d512..7f55b47 100644
+--- a/include/infiniband/acm.h
++++ b/include/infiniband/acm.h
+@@ -37,6 +37,7 @@
+ #define ACM_OP_MASK             0x0F
+ #define ACM_OP_RESOLVE          0x01
++#define ACM_OP_PERF_QUERY       0x02
+ #define ACM_OP_ACK              0x80
+ #define ACM_STATUS_SUCCESS      0
+@@ -97,6 +98,11 @@ struct acm_resolve_msg {
+       struct acm_ep_addr_data data[0];
+ };
++struct acm_perf_msg {
++      struct acm_hdr          hdr;
++      uint64_t                data[0];
++};
++
+ struct acm_msg {
+       struct acm_hdr          hdr;
+       uint8_t                 data[ACM_MSG_DATA_LENGTH];
+diff --git a/src/acm.c b/src/acm.c
+index 1380124..679af44 100644
+--- a/src/acm.c
++++ b/src/acm.c
+@@ -62,7 +62,7 @@ enum acm_state {
+ enum {
+       ACM_CNTR_ERROR,
+-      ACM_CNTR_REQUEST,
++      ACM_CNTR_RESOLVE,
+       ACM_CNTR_ADDR_CACHE,
+       ACM_CNTR_ADDR_QUERY,
+       ACM_CNTR_ROUTE_CACHE,
+@@ -2055,7 +2055,7 @@ acm_svr_queue_req(struct acm_dest *dest, struct acm_client *client,
+ }
+ static int
+-acm_svr_resolve(struct acm_client *client, struct acm_resolve_msg *msg)
++acm_svr_resolve_dest(struct acm_client *client, struct acm_resolve_msg *msg)
+ {
+       struct acm_ep *ep;
+       struct acm_dest *dest;
+@@ -2229,6 +2229,25 @@ put:
+       return ret;
+ }
++static int acm_svr_resolve(struct acm_client *client, struct acm_resolve_msg *msg)
++{
++      if (msg->data[0].type == ACM_EP_INFO_PATH) {
++              if (msg->data[0].flags & ACM_FLAGS_QUERY_SA) {
++                      return acm_svr_query_path(client, msg);
++              } else {
++                      return acm_svr_resolve_path(client, msg);
++              }
++      } else {
++              return acm_svr_resolve_dest(client, msg);
++      }
++}
++
++static int acm_svr_perf_query(struct acm_client *client, struct acm_perf_msg *msg)
++{
++      /* TODO: return perf counters */
++      return 0;
++}
++
+ static void acm_svr_receive(struct acm_client *client)
+ {
+       struct acm_msg msg;
+@@ -2243,25 +2262,22 @@ static void acm_svr_receive(struct acm_client *client)
+               goto out;
+       }
+-      atomic_inc(&counter[ACM_CNTR_REQUEST]);
+       if (msg.hdr.version != ACM_VERSION) {
+               acm_log(0, "ERROR - unsupported version %d\n", msg.hdr.version);
+               goto out;
+       }
+-      if ((msg.hdr.opcode & ACM_OP_MASK) != ACM_OP_RESOLVE) {
++      switch (msg.hdr.opcode & ACM_OP_MASK) {
++      case ACM_OP_RESOLVE:
++              atomic_inc(&counter[ACM_CNTR_RESOLVE]);
++              ret = acm_svr_resolve(client, (struct acm_resolve_msg *) &msg);
++              break;
++      case ACM_OP_PERF_QUERY:
++              ret = acm_svr_perf_query(client, (struct acm_perf_msg *) &msg);
++              break;
++      default:
+               acm_log(0, "ERROR - unknown opcode 0x%x\n", msg.hdr.opcode);
+-              goto out;
+-      }
+-
+-      if (resolve_msg->data[0].type == ACM_EP_INFO_PATH) {
+-              if (resolve_msg->data[0].flags & ACM_FLAGS_QUERY_SA) {
+-                      ret = acm_svr_query_path(client, resolve_msg);
+-              } else {
+-                      ret = acm_svr_resolve_path(client, resolve_msg);
+-              }
+-      } else {
+-              ret = acm_svr_resolve(client, resolve_msg);
++              break;
+       }
+ out: