]> git.openfabrics.org - ~shefty/ibacm.git/commitdiff
refresh (create temporary patch)
authorSean Hefty <sean.hefty@intel.com>
Thu, 30 Jun 2011 23:34:43 +0000 (16:34 -0700)
committerSean Hefty <sean.hefty@intel.com>
Thu, 30 Jun 2011 23:34:43 +0000 (16:34 -0700)
meta
patches/refresh-temp [new file with mode: 0644]

diff --git a/meta b/meta
index 526e93b7620e4176aa2ae9164b7672f9ec6935d4..57f1e2dcf98ee836848c12fdcad2c888f72c844a 100644 (file)
--- a/meta
+++ b/meta
@@ -1,10 +1,11 @@
 Version: 1
-Previous: bfdaacaa7cc1bddb61223189033ac27e6613ef30
-Head: 820f8831c428377789ad7266cce3b5f826aed02a
+Previous: 2f576cbf36fd91505a05c04ae465a23d87390b0e
+Head: 63bc939da90b2c22da40dc2b12183a6f65f0d047
 Applied:
   bldwrn: be4fb9a97bdc0942c04ffddca19692ccf5875878
   alias: cf8b034d082dbc168524cfadc86e231772254a64
   counters: 820f8831c428377789ad7266cce3b5f826aed02a
+  refresh-temp: 63bc939da90b2c22da40dc2b12183a6f65f0d047
 Unapplied:
   acm1.0.5: 1b225173756cfcec4d81d26b1160ebae7644261b
   name2ip: 8e00708e882239292492e13aa51c82042255933c
diff --git a/patches/refresh-temp b/patches/refresh-temp
new file mode 100644 (file)
index 0000000..a08d7ca
--- /dev/null
@@ -0,0 +1,271 @@
+Bottom: 2dabfe33c4a42a8c11d65c804d0641d900fe1b2e
+Top:    70fb93d64e9ecf38abaca2ab5496df0a03517a96
+Author: Sean Hefty <sean.hefty@intel.com>
+Date:   2011-06-30 16:34:43 -0700
+
+Refresh of counters
+
+---
+
+diff --git a/include/infiniband/acm.h b/include/infiniband/acm.h
+index c2d4088..bc85137 100644
+--- a/include/infiniband/acm.h
++++ b/include/infiniband/acm.h
+@@ -96,8 +96,8 @@ struct acm_ep_addr_data {
+ /*
+  * Resolve messages with the opcode set to ACM_OP_RESOLVE are only
+  * used to communicate with the local ib_acm service.  Message fields
+- * in this case are not byte swapped, but note that the address
+- * data is in big-endian format.
++ * in this case are not byte swapped, but note that the acm_ep_info
++ * data is in network order.
+  */
+ struct acm_resolve_msg {
+       struct acm_hdr          hdr;
+diff --git a/src/acme.c b/src/acme.c
+index 3787998..3030991 100644
+--- a/src/acme.c
++++ b/src/acme.c
+@@ -49,9 +49,13 @@ static char *opts_file = ACM_OPTS_FILE;
+ static char *dest_addr;
+ static char *src_addr;
++static char *svc_arg = "localhost";
++static char *dest_arg;
++static char *src_arg;
+ static char addr_type = 'u';
+ static int verify;
+ static int nodelay;
++static int perf_query;
+ int verbose;
+ struct ibv_context **verbs;
+@@ -65,15 +69,17 @@ extern char **parse(char *args, int *count);
+ static void show_usage(char *program)
+ {
+       printf("usage 1: %s\n", program);
++      printf("Query specified ib_acm service for data\n")
+       printf("   [-f addr_format] - i(p), n(ame), l(id), g(gid), or u(nspecified)\n");
+-      printf("                      default: 'u'\n");
+-      printf("   [-s src_addr]    - format defined by -f option\n");
+-      printf("   [-d] dest_addr   - format defined by -f option\n");
++      printf("                      address format for -s and -d options, default: 'u'\n");
++      printf("   [-s src_addr]    - source address for path queries\n");
++      printf("   [-d dest_addr]   - destination addresses for path queries\n");
+       printf("   [-v]             - verify ACM response against SA query response\n");
+       printf("   [-c]             - read ACM cached data only\n");
++      printf("   [-P]             - query performance data from destination service");
++      printf("   [-S svc_addr]    - address of ACM service, default: local service")
+       printf("usage 2: %s\n", program);
+-      printf("   -P dest_addr     - query performance data from destination service");
+-      printf("usage 3: %s\n", program);
++      printf("Generate default ib_acm service configuration and option files\n")
+       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");
+@@ -580,25 +586,24 @@ static char *get_dest(char *arg, char *format)
+       }
+ }
+-static int resolve(char *program, char *dest_arg)
++static int resolve(char *svc)
+ {
+-      char **dest_list;
++      char **dest_list, **src_list;
+       struct ibv_path_record path;
+       int ret, i = 0;
+       char dest_type;
+-      ret = ib_acm_connect("127.0.0.1");
+-      if (ret) {
+-              printf("Unable to contact ib_acm service\n");
+-              return ret;
+-      }
+-
+       dest_list = parse(dest_arg, NULL);
+       if (!dest_list) {
+               printf("Unable to parse destination argument\n");
+-              return -1;
++              return;
++      }
++
++      if (src_arg) {
++              src_list = parse(src_arg, NULL);
+       }
++      printf("Service: %s\n", svc);
+       for (dest_addr = get_dest(dest_list[i], &dest_type); dest_addr;
+            dest_addr = get_dest(dest_list[++i], &dest_type)) {
+               printf("Destination: %s\n", dest_addr);
+@@ -618,8 +623,7 @@ static int resolve(char *program, char *dest_arg)
+                       ret = resolve_gid(&path);
+                       break;
+               default:
+-                      show_usage(program);
+-                      exit(1);
++                      break;
+               }
+               if (!ret)
+@@ -631,47 +635,62 @@ static int resolve(char *program, char *dest_arg)
+       }
+       free(dest_list);
+-      ib_acm_disconnect();
+       return ret;
+ }
+-static int query_perf(char *program, char *dest_arg)
++static void query_perf(static char *svc)
+ {
+-      char **dest_list;
+-      int ret, cnt, i, d;
++      int ret, cnt, i;
+       uint64_t *counters;
+-      dest_list = parse(dest_arg, NULL);
+-      if (!dest_list) {
+-              printf("Unable to parse destination argument\n");
++      ret = ib_acm_query_perf(&counters, &cnt);
++      if (ret) {
++              printf("%s: Failed to query perf data %s\n", svc, strerror(errno));
++              return;
++      }
++
++      for (i = 0; i < cnt; i++)
++              printf("%llu,", (unsigned long long) counters[i]);
++      printf("\n");
++      ib_acm_free_perf(counters);
++}
++
++static int query_svcs(void)
++{
++      char **svc_list;
++      int ret, i;
++
++      svc_list = parse(svc_arg, NULL);
++      if (!svc_list) {
++              printf("Unable to parse service list argument\n");
+               return -1;
+       }
+-      printf("Destination,Error Count,Resolve Count,No Data,Addr Query Count,"
+-             "Addr Cache Count,Route Query Count,Route Cache Count\n");
+-      for (d = 0; dest_list[d]; d++) {
++      if (perf_query) {
++              printf("Destination,Error Count,Resolve Count,No Data,Addr Query Count,"
++                      "Addr Cache Count,Route Query Count,Route Cache Count\n");
++      }
+-              printf("%s,", dest_list[d]);
+-              ret = ib_acm_connect(dest_list[d]);
++      for (i = 0; svc_list[i]; i++) {
++              ret = ib_acm_connect(svc_list[i]);
+               if (ret) {
+-                      printf("Unable to contact ib_acm service\n");
++                      printf("%s: Unable to contact ib_acm service\n", svc_list[i]);
+                       continue;
+               }
+-              ret = ib_acm_query_perf(&counters, &cnt);
+-              if (ret) {
+-                      printf("Failed to query perf data %s\n", strerror(errno));
+-              } else {
+-                      for (i = 0; i < cnt; i++)
+-                              printf("%llu,", (unsigned long long) counters[i]);
+-                      printf("\n");
+-                      ib_acm_free_perf(counters);
++              if (dest_arg) {
++                      ret = resolve(svc_list[i]);
++                      if (ret)
++                              break;
+               }
++              if (perf_query)
++                      query_perf(svc_list[i]);
++
+               ib_acm_disconnect();
+       }
+-      free(dest_list);
++      free(svc_list);
+       return ret;
+ }
+@@ -688,23 +707,24 @@ char *opt_arg(int argc, char **argv)
+ int CDECL_FUNC main(int argc, char **argv)
+ {
+-      char *dest_arg = NULL;
+       int op, ret;
+       int make_addr = 0;
+       int make_opts = 0;
+-      int perf_query = 0;
+       ret = osd_init();
+       if (ret)
+               goto out;
+-      while ((op = getopt(argc, argv, "f:s:d:vcA::O::D:P:V")) != -1) {
++      while ((op = getopt(argc, argv, "f:s:d:vcA::O::D:PV")) != -1) {
+               switch (op) {
+               case 'f':
+                       addr_type = optarg[0];
++                      if (addr_type != 'i' && addr_type != 'n' &&
++                          addr_type != 'l' && addr_type != 'g')
++                              goto show_use;
+                       break;
+               case 's':
+-                      src_addr = optarg;
++                      src_arg = optarg;
+                       break;
+               case 'd':
+                       dest_arg = optarg;
+@@ -730,29 +750,24 @@ int CDECL_FUNC main(int argc, char **argv)
+                       break;
+               case 'P':
+                       perf_query = 1;
+-                      dest_arg = optarg;
++                      break;
++              case 'S':
++                      svc_arg = optarg;
+                       break;
+               case 'V':
+                       verbose = 1;
+                       break;
+               default:
+-                      show_usage(argv[0]);
+-                      exit(1);
++                      goto show_use;
+               }
+       }
+-      if ((src_addr && !dest_arg) ||
+-          (!src_addr && !dest_arg && !make_addr && !make_opts)) {
+-              show_usage(argv[0]);
+-              exit(1);
+-      }
++      if ((src_arg && !dest_arg) ||
++          (!src_arg && !dest_arg && !perf_query && !make_addr && !make_opts))
++              goto show_use;
+-      if (dest_arg) {
+-              if (perf_query)
+-                      ret = query_perf(argv[0], dest_arg);
+-              else
+-                      ret = resolve(argv[0], dest_arg);
+-      }
++      if (dest_arg || perf_query)
++              ret = query_svcs();
+       if (!ret && make_addr)
+               ret = gen_addr();
+@@ -765,4 +780,8 @@ out:
+       if (verbose || !(make_addr || make_opts) || ret)
+               printf("return status 0x%x\n", ret);
+       return ret;
++
++show_use:
++      show_usage(argv[0]);
++      exit(1);
+ }