public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] infiniband-diags: add a general config file
@ 2011-10-13 23:35 Ira Weiny
  0 siblings, 0 replies; 2+ messages in thread
From: Ira Weiny @ 2011-10-13 23:35 UTC (permalink / raw)
  To: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org



This supports the common options for CA, Port, and timeout.

Signed-off-by: Ira Weiny <weiny2-i2BcT+NCU+M@public.gmane.org>
---
 Makefile.am               |    1 +
 configure.in              |    1 +
 etc/ibdiag.conf           |   13 +++
 man/infiniband-diags.8    |  198 -------------------------------------------
 man/infiniband-diags.8.in |  205 +++++++++++++++++++++++++++++++++++++++++++++
 src/ibdiag_common.c       |   55 +++++++++++-
 6 files changed, 271 insertions(+), 202 deletions(-)
 create mode 100644 etc/ibdiag.conf
 delete mode 100644 man/infiniband-diags.8
 create mode 100644 man/infiniband-diags.8.in

diff --git a/Makefile.am b/Makefile.am
index d7e8ce7..c047f5e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -111,3 +111,4 @@ install-data-hook:
 	fi
 	$(top_srcdir)/config/install-sh -c -m 444 $(top_srcdir)/scripts/IBswcountlimits.pm $(DESTDIR)/$(PERL_INSTALLDIR)/IBswcountlimits.pm
 	$(top_srcdir)/config/install-sh -c -m 444 $(top_srcdir)/etc/error_thresholds $(DESTDIR)/$(sysconfdir)/infiniband-diags
+	$(top_srcdir)/config/install-sh -c -m 444 $(top_srcdir)/etc/ibdiag.conf $(DESTDIR)/$(sysconfdir)/infiniband-diags
diff --git a/configure.in b/configure.in
index 59de9f1..60a4481 100644
--- a/configure.in
+++ b/configure.in
@@ -191,6 +191,7 @@ AC_CONFIG_FILES([\
 	scripts/iblinkinfo.pl \
 	scripts/ibqueryerrors.pl \
 	man/ibqueryerrors.8 \
+	man/infiniband-diags.8 \
 	libibnetdisc/Makefile \
 ])
 AC_OUTPUT
diff --git a/etc/ibdiag.conf b/etc/ibdiag.conf
new file mode 100644
index 0000000..1668a90
--- /dev/null
+++ b/etc/ibdiag.conf
@@ -0,0 +1,13 @@
+# Define different defaults for all infiniband-diag tools.  These can be
+# defined on the command line but this offers a more global config.
+
+# Defaults are to find the first port with Physical state == "LinkUp"
+#CA=mlx4_0
+
+# NOTE: that using a different Port may require an altered DR path.
+#       for example -D 0,1 will not work with port 2
+#Port=1
+
+# define a different default timeout
+#timeout=50
+
diff --git a/man/infiniband-diags.8 b/man/infiniband-diags.8
deleted file mode 100644
index 26bc98c..0000000
--- a/man/infiniband-diags.8
+++ /dev/null
@@ -1,198 +0,0 @@
-.TH INFINIBAND-DIAGS 8 "Aug 15, 2011" "OpenIB" "OpenIB Diagnostics"
-
-.SH SYNOPSIS
-.B infiniband-diags
-
-.SH DESCRIPTION
-.PP
-infiniband-diags is a set of utilities designed to help configure, debug, and
-maintain infiniband fabrics.  Many tools and utilities are provided.  Some with
-similar functionality.
-
-The base utilities use directed route MAD's to perform their operations.  They
-may therefore work even in unconfigured subnets.  Other, higher level
-utilities, require LID routed MAD's and to some extent SA/SM access.
-
-Multiple port/Multiple CA support: when no IB device or port is specified
-(see the "local umad parameters" below), the libibumad library
-selects the port to use by the following criteria:
-
-	1. the first port that is ACTIVE.
-.br
-	2. if not found, the first port that is UP (physical link up).
-.br
-
-.br
-	If a port and/or CA name is specified, the libibumad library attempts to fulfill the user request, and will fail if it is not possible.
-.br
-
-.br
-	For example:
-.br
-	ibaddr 			# use the 'best port'
-.br
-	ibaddr -C mthca1	# pick the best port from mthca1 only.
-.br
-	ibaddr -P 2		# use the second (active/up) port from the first available IB device.
-.br
-	ibaddr -C mthca0 -P 2	# use the specified port only.
-
-
-.SH COMMON OPTIONS
-
-Most OpenIB diagnostics take the following common flags. The exact list of
-supported flags per utility can be found in the usage message and can be shown
-using "<util_name> -h".
-
-.TP
-\fB# Addressing Flags\fR
-.PP
-\-D      use the directed route specified.
-.br
-		Examples:
-.br
-		"0" 		# self port
-.br
-		"0,1,2,1,4"	# out via port 1, then 2, ...
-
-.PP
-\-G <guid>     use the PortGuid specified.
-.PP
-\-s <smlid>     use 'smlid' as the target lid for SA queries.
-
-.TP
-\fB# Local HCA/port flags:\fR
-.PP
-\-C <ca_name>    use the specified ca_name.
-.PP
-\-P <ca_port>    use the specified ca_port.
-
-.TP
-\fB# Debugging flags\fR
-.PP
-\-t <timeout_ms> override the default timeout for the solicited mads.
-.PP
-\-d      raise the IB debugging level.
-        May be used several times (-ddd or -d -d -d).
-.PP
-\-e      show send and receive errors (timeouts and others)
-.PP
-\-h      show the usage message
-.PP
-\-v      increase the application verbosity level.
-        May be used several times (-vv or -v -v -v)
-.PP
-\-V      show the version info.
-
-.SH NODE NAME MAP FILE FORMAT
-Most utilities use the optional node name map file supported by libosmcomp to
-specify user friendly names for nodes in the output.  Node GUIDs are used to
-perform the lookup.
-
-.TP
-\fBGenerically:\fR
-
-# comment
-.br
-<guid> "<name>"
-
-.TP
-\fBExample:\fR
-
-# IB1
-.br
-# Line cards
-.br
-0x0008f104003f125c "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
-.br
-0x0008f104003f125d "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
-.br
-0x0008f104003f10d2 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
-.br
-0x0008f104003f10d3 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
-.br
-0x0008f104003f10bf "IB1 (Rack 11 slot 12  ) ISR9288/ISR9096 Voltaire sLB-24D"
-.br
-.br
-# Spines
-.br
-0x0008f10400400e2d "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
-.br
-0x0008f10400400e2e "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
-.br
-0x0008f10400400e2f "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
-.br
-0x0008f10400400e31 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"
-.br
-0x0008f10400400e32 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"
-.br
-.br
-# GUID   Node Name
-.br
-0x0008f10400411a08 "SW1  (Rack  3) ISR9024 Voltaire 9024D"
-.br
-0x0008f10400411a28 "SW2  (Rack  3) ISR9024 Voltaire 9024D"
-.br
-0x0008f10400411a34 "SW3  (Rack  3) ISR9024 Voltaire 9024D"
-.br
-0x0008f104004119d0 "SW4  (Rack  3) ISR9024 Voltaire 9024D"
-.br
-
-.SH Utilities list
-
-.TP
-\fBBasic fabric conectivity\fR
-
-	See: ibnetdiscover, iblinkinfo, ibidsverify
-
-.TP
-\fBNode information\fR
-
-	See: ibnodes, ibswitches, ibhosts, ibrouters
-
-.TP
-\fBPort information\fR
-
-	See: ibportstate, ibaddr
-
-.TP
-\fBSwitch Forwarding Table info\fR
-
-	See: ibtracert, ibroute, dump_lfts, dump_mfts, check_lft_balance, ibfindnodesusing
-
-.TP
-\fBPeformance counters\fR
-
-	See: ibqueryerrors, perfquery
-
-.TP
-\fBLocal HCA info\fR
-
-	See: ibstat, ibstatus,
-
-.TP
-\fBConnectivity check\fR
-
-	See: ibping, ibsysstat
-
-.TP
-\fBLow level query tools\fR
-
-	See: smpquery, smpdump, saquery, sminfo
-
-
-.SH Backwards compatibility scripts
-
-The following scripts have been identified as redundant and/or lower performing
-as compared to the above scripts.  They are provided as legacy scripts.
-
-ibcheckerrors, ibclearcounters, ibclearerrors, ibdatacounters
-ibchecknet, ibchecknode, ibcheckport, ibcheckportstate,
-ibcheckportwidth, ibcheckstate, ibcheckwidth, ibswportwatch,
-ibprintca, ibprintrt, ibprintswitch
-
-
-.SH AUTHORS
-.TP
-Ira Weiny
-.RI < weiny2-i2BcT+NCU+M@public.gmane.org >
diff --git a/man/infiniband-diags.8.in b/man/infiniband-diags.8.in
new file mode 100644
index 0000000..80773cd
--- /dev/null
+++ b/man/infiniband-diags.8.in
@@ -0,0 +1,205 @@
+.TH INFINIBAND-DIAGS 8 "Aug 15, 2011" "OpenIB" "OpenIB Diagnostics"
+
+.SH SYNOPSIS
+.B infiniband-diags
+
+.SH DESCRIPTION
+.PP
+infiniband-diags is a set of utilities designed to help configure, debug, and
+maintain infiniband fabrics.  Many tools and utilities are provided.  Some with
+similar functionality.
+
+The base utilities use directed route MAD's to perform their operations.  They
+may therefore work even in unconfigured subnets.  Other, higher level
+utilities, require LID routed MAD's and to some extent SA/SM access.
+
+Multiple port/Multiple CA support: when no IB device or port is specified
+(see the "local umad parameters" below), the libibumad library
+selects the port to use by the following criteria:
+
+	1. the first port that is ACTIVE.
+.br
+	2. if not found, the first port that is UP (physical link up).
+.br
+
+.br
+	If a port and/or CA name is specified, the libibumad library attempts to fulfill the user request, and will fail if it is not possible.
+.br
+
+.br
+	For example:
+.br
+	ibaddr 			# use the 'best port'
+.br
+	ibaddr -C mthca1	# pick the best port from mthca1 only.
+.br
+	ibaddr -P 2		# use the second (active/up) port from the first available IB device.
+.br
+	ibaddr -C mthca0 -P 2	# use the specified port only.
+
+
+.SH COMMON OPTIONS
+
+Most OpenIB diagnostics take the following common flags. The exact list of
+supported flags per utility can be found in the usage message and can be shown
+using "<util_name> -h".
+
+.TP
+\fB# Addressing Flags\fR
+.PP
+\-D      use the directed route specified.
+.br
+		Examples:
+.br
+		"0" 		# self port
+.br
+		"0,1,2,1,4"	# out via port 1, then 2, ...
+
+.PP
+\-G <guid>     use the PortGuid specified.
+.PP
+\-s <smlid>     use 'smlid' as the target lid for SA queries.
+
+.TP
+\fB# Local HCA/port flags:\fR
+.PP
+\-C <ca_name>    use the specified ca_name.
+.PP
+\-P <ca_port>    use the specified ca_port.
+
+.TP
+\fB# Debugging flags\fR
+.PP
+\-t <timeout_ms> override the default timeout for the solicited mads.
+.PP
+\-d      raise the IB debugging level.
+        May be used several times (-ddd or -d -d -d).
+.PP
+\-e      show send and receive errors (timeouts and others)
+.PP
+\-h      show the usage message
+.PP
+\-v      increase the application verbosity level.
+        May be used several times (-vv or -v -v -v)
+.PP
+\-V      show the version info.
+
+.SH FILES
+
+@IBDIAG_CONFIG_PATH@/ibdiag.conf
+
+A global config file is provided to set some of the common options for all
+tools.
+
+.SH NODE NAME MAP FILE FORMAT
+Most utilities use the optional node name map file supported by libosmcomp to
+specify user friendly names for nodes in the output.  Node GUIDs are used to
+perform the lookup.
+
+.TP
+\fBGenerically:\fR
+
+# comment
+.br
+<guid> "<name>"
+
+.TP
+\fBExample:\fR
+
+# IB1
+.br
+# Line cards
+.br
+0x0008f104003f125c "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
+.br
+0x0008f104003f125d "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
+.br
+0x0008f104003f10d2 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
+.br
+0x0008f104003f10d3 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
+.br
+0x0008f104003f10bf "IB1 (Rack 11 slot 12  ) ISR9288/ISR9096 Voltaire sLB-24D"
+.br
+.br
+# Spines
+.br
+0x0008f10400400e2d "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
+.br
+0x0008f10400400e2e "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
+.br
+0x0008f10400400e2f "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
+.br
+0x0008f10400400e31 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"
+.br
+0x0008f10400400e32 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"
+.br
+.br
+# GUID   Node Name
+.br
+0x0008f10400411a08 "SW1  (Rack  3) ISR9024 Voltaire 9024D"
+.br
+0x0008f10400411a28 "SW2  (Rack  3) ISR9024 Voltaire 9024D"
+.br
+0x0008f10400411a34 "SW3  (Rack  3) ISR9024 Voltaire 9024D"
+.br
+0x0008f104004119d0 "SW4  (Rack  3) ISR9024 Voltaire 9024D"
+.br
+
+.SH Utilities list
+
+.TP
+\fBBasic fabric conectivity\fR
+
+	See: ibnetdiscover, iblinkinfo, ibidsverify
+
+.TP
+\fBNode information\fR
+
+	See: ibnodes, ibswitches, ibhosts, ibrouters
+
+.TP
+\fBPort information\fR
+
+	See: ibportstate, ibaddr
+
+.TP
+\fBSwitch Forwarding Table info\fR
+
+	See: ibtracert, ibroute, dump_lfts, dump_mfts, check_lft_balance, ibfindnodesusing
+
+.TP
+\fBPeformance counters\fR
+
+	See: ibqueryerrors, perfquery
+
+.TP
+\fBLocal HCA info\fR
+
+	See: ibstat, ibstatus,
+
+.TP
+\fBConnectivity check\fR
+
+	See: ibping, ibsysstat
+
+.TP
+\fBLow level query tools\fR
+
+	See: smpquery, smpdump, saquery, sminfo
+
+
+.SH Backwards compatibility scripts
+
+The following scripts have been identified as redundant and/or lower performing
+as compared to the above scripts.  They are provided as legacy scripts.
+
+ibcheckerrors, ibclearcounters, ibclearerrors, ibdatacounters
+ibchecknet, ibchecknode, ibcheckport, ibcheckportstate,
+ibcheckportwidth, ibcheckstate, ibcheckwidth, ibswportwatch,
+ibprintca, ibprintrt, ibprintswitch
+
+
+.SH AUTHORS
+.TP
+Ira Weiny
+.RI < weiny2-i2BcT+NCU+M@public.gmane.org >
diff --git a/src/ibdiag_common.c b/src/ibdiag_common.c
index 049b72b..81d7878 100644
--- a/src/ibdiag_common.c
+++ b/src/ibdiag_common.c
@@ -52,6 +52,7 @@
 #include <config.h>
 #include <getopt.h>
 #include <limits.h>
+#include <sys/stat.h>
 
 #include <infiniband/umad.h>
 #include <infiniband/mad.h>
@@ -59,14 +60,18 @@
 #include <ibdiag_version.h>
 
 int ibverbose;
-char *ibd_ca;
-int ibd_ca_port;
 enum MAD_DEST ibd_dest_type = IB_DEST_LID;
 ib_portid_t *ibd_sm_id;
-int ibd_timeout;
-
 static ib_portid_t sm_portid = { 0 };
 
+/* general config options */
+#define IBDIAG_CONFIG_GENERAL IBDIAG_CONFIG_PATH"/ibdiag.conf"
+static char *ibdiag_config_general = IBDIAG_CONFIG_GENERAL;
+char *ibd_ca = NULL;
+int ibd_ca_port = 0;
+int ibd_timeout = 0;
+
+
 static const char *prog_name;
 static const char *prog_args;
 static const char **prog_examples;
@@ -281,6 +286,46 @@ static void make_str_opts(const struct option *o, char *p, unsigned size)
 	p[n] = '\0';
 }
 
+void read_ibdiag_config(void)
+{
+	char buf[1024];
+	FILE *config_fd = NULL;
+	char *p_prefix, *p_last;
+	char *name;
+	char *val_str;
+	struct stat statbuf;
+
+	/* silently ignore missing config file */
+	if (stat(ibdiag_config_general, &statbuf))
+		return;
+
+	config_fd = fopen(ibdiag_config_general, "r");
+	if (!config_fd)
+		return;
+
+	while (fgets(buf, sizeof buf, config_fd) != NULL) {
+		p_prefix = strtok_r(buf, "\n", &p_last);
+		if (!p_prefix)
+			continue; /* ignore blank lines */
+
+		if (*p_prefix == '#')
+			continue; /* ignore comment lines */
+
+		name = strtok_r(p_prefix, "=", &p_last);
+		val_str = strtok_r(NULL, "\n", &p_last);
+
+		if (strncmp(name, "CA", strlen("CA")) == 0) {
+			ibd_ca = strdup(val_str);
+		} else if (strncmp(name, "Port", strlen("Port")) == 0) {
+			ibd_ca_port = strtoul(val_str, NULL, 0);
+		} else if (strncmp(name, "timeout", strlen("timeout")) == 0) {
+			ibd_timeout = strtoul(val_str, NULL, 0);
+		}
+	}
+
+	fclose(config_fd);
+}
+
 int ibdiag_process_opts(int argc, char *const argv[], void *cxt,
 			const char *exclude_common_str,
 			const struct ibdiag_opt custom_opts[],
@@ -299,6 +344,8 @@ int ibdiag_process_opts(int argc, char *const argv[], void *cxt,
 	if (!long_opts)
 		return -1;
 
+	read_ibdiag_config();
+
 	make_str_opts(long_opts, str_opts, sizeof(str_opts));
 
 	while (1) {
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 2+ messages in thread
* [PATCH] infiniband-diags: add a general config file
@ 2011-10-26 21:30 Ira Weiny
  0 siblings, 0 replies; 2+ messages in thread
From: Ira Weiny @ 2011-10-26 21:30 UTC (permalink / raw)
  To: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org



This supports the common options for CA, Port, and timeout.

Signed-off-by: Ira Weiny <weiny2-i2BcT+NCU+M@public.gmane.org>
---
 Makefile.am               |    1 +
 configure.in              |    1 +
 etc/ibdiag.conf           |   13 +++
 man/infiniband-diags.8    |  198 -------------------------------------------
 man/infiniband-diags.8.in |  205 +++++++++++++++++++++++++++++++++++++++++++++
 src/ibdiag_common.c       |   55 +++++++++++-
 6 files changed, 271 insertions(+), 202 deletions(-)
 create mode 100644 etc/ibdiag.conf
 delete mode 100644 man/infiniband-diags.8
 create mode 100644 man/infiniband-diags.8.in

diff --git a/Makefile.am b/Makefile.am
index ea85280..b793fb4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -110,3 +110,4 @@ install-data-hook:
 	fi
 	$(top_srcdir)/config/install-sh -c -m 444 $(top_srcdir)/scripts/IBswcountlimits.pm $(DESTDIR)/$(PERL_INSTALLDIR)/IBswcountlimits.pm
 	$(top_srcdir)/config/install-sh -c -m 444 $(top_srcdir)/etc/error_thresholds $(DESTDIR)/$(sysconfdir)/infiniband-diags
+	$(top_srcdir)/config/install-sh -c -m 444 $(top_srcdir)/etc/ibdiag.conf $(DESTDIR)/$(sysconfdir)/infiniband-diags
diff --git a/configure.in b/configure.in
index 41e3f53..0237c99 100644
--- a/configure.in
+++ b/configure.in
@@ -179,6 +179,7 @@ AC_CONFIG_FILES([\
 	scripts/iblinkinfo.pl \
 	scripts/ibqueryerrors.pl \
 	man/ibqueryerrors.8 \
+	man/infiniband-diags.8 \
 	libibnetdisc/Makefile \
 ])
 AC_OUTPUT
diff --git a/etc/ibdiag.conf b/etc/ibdiag.conf
new file mode 100644
index 0000000..1668a90
--- /dev/null
+++ b/etc/ibdiag.conf
@@ -0,0 +1,13 @@
+# Define different defaults for all infiniband-diag tools.  These can be
+# defined on the command line but this offers a more global config.
+
+# Defaults are to find the first port with Physical state == "LinkUp"
+#CA=mlx4_0
+
+# NOTE: that using a different Port may require an altered DR path.
+#       for example -D 0,1 will not work with port 2
+#Port=1
+
+# define a different default timeout
+#timeout=50
+
diff --git a/man/infiniband-diags.8 b/man/infiniband-diags.8
deleted file mode 100644
index 26bc98c..0000000
--- a/man/infiniband-diags.8
+++ /dev/null
@@ -1,198 +0,0 @@
-.TH INFINIBAND-DIAGS 8 "Aug 15, 2011" "OpenIB" "OpenIB Diagnostics"
-
-.SH SYNOPSIS
-.B infiniband-diags
-
-.SH DESCRIPTION
-.PP
-infiniband-diags is a set of utilities designed to help configure, debug, and
-maintain infiniband fabrics.  Many tools and utilities are provided.  Some with
-similar functionality.
-
-The base utilities use directed route MAD's to perform their operations.  They
-may therefore work even in unconfigured subnets.  Other, higher level
-utilities, require LID routed MAD's and to some extent SA/SM access.
-
-Multiple port/Multiple CA support: when no IB device or port is specified
-(see the "local umad parameters" below), the libibumad library
-selects the port to use by the following criteria:
-
-	1. the first port that is ACTIVE.
-.br
-	2. if not found, the first port that is UP (physical link up).
-.br
-
-.br
-	If a port and/or CA name is specified, the libibumad library attempts to fulfill the user request, and will fail if it is not possible.
-.br
-
-.br
-	For example:
-.br
-	ibaddr 			# use the 'best port'
-.br
-	ibaddr -C mthca1	# pick the best port from mthca1 only.
-.br
-	ibaddr -P 2		# use the second (active/up) port from the first available IB device.
-.br
-	ibaddr -C mthca0 -P 2	# use the specified port only.
-
-
-.SH COMMON OPTIONS
-
-Most OpenIB diagnostics take the following common flags. The exact list of
-supported flags per utility can be found in the usage message and can be shown
-using "<util_name> -h".
-
-.TP
-\fB# Addressing Flags\fR
-.PP
-\-D      use the directed route specified.
-.br
-		Examples:
-.br
-		"0" 		# self port
-.br
-		"0,1,2,1,4"	# out via port 1, then 2, ...
-
-.PP
-\-G <guid>     use the PortGuid specified.
-.PP
-\-s <smlid>     use 'smlid' as the target lid for SA queries.
-
-.TP
-\fB# Local HCA/port flags:\fR
-.PP
-\-C <ca_name>    use the specified ca_name.
-.PP
-\-P <ca_port>    use the specified ca_port.
-
-.TP
-\fB# Debugging flags\fR
-.PP
-\-t <timeout_ms> override the default timeout for the solicited mads.
-.PP
-\-d      raise the IB debugging level.
-        May be used several times (-ddd or -d -d -d).
-.PP
-\-e      show send and receive errors (timeouts and others)
-.PP
-\-h      show the usage message
-.PP
-\-v      increase the application verbosity level.
-        May be used several times (-vv or -v -v -v)
-.PP
-\-V      show the version info.
-
-.SH NODE NAME MAP FILE FORMAT
-Most utilities use the optional node name map file supported by libosmcomp to
-specify user friendly names for nodes in the output.  Node GUIDs are used to
-perform the lookup.
-
-.TP
-\fBGenerically:\fR
-
-# comment
-.br
-<guid> "<name>"
-
-.TP
-\fBExample:\fR
-
-# IB1
-.br
-# Line cards
-.br
-0x0008f104003f125c "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
-.br
-0x0008f104003f125d "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
-.br
-0x0008f104003f10d2 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
-.br
-0x0008f104003f10d3 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
-.br
-0x0008f104003f10bf "IB1 (Rack 11 slot 12  ) ISR9288/ISR9096 Voltaire sLB-24D"
-.br
-.br
-# Spines
-.br
-0x0008f10400400e2d "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
-.br
-0x0008f10400400e2e "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
-.br
-0x0008f10400400e2f "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
-.br
-0x0008f10400400e31 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"
-.br
-0x0008f10400400e32 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"
-.br
-.br
-# GUID   Node Name
-.br
-0x0008f10400411a08 "SW1  (Rack  3) ISR9024 Voltaire 9024D"
-.br
-0x0008f10400411a28 "SW2  (Rack  3) ISR9024 Voltaire 9024D"
-.br
-0x0008f10400411a34 "SW3  (Rack  3) ISR9024 Voltaire 9024D"
-.br
-0x0008f104004119d0 "SW4  (Rack  3) ISR9024 Voltaire 9024D"
-.br
-
-.SH Utilities list
-
-.TP
-\fBBasic fabric conectivity\fR
-
-	See: ibnetdiscover, iblinkinfo, ibidsverify
-
-.TP
-\fBNode information\fR
-
-	See: ibnodes, ibswitches, ibhosts, ibrouters
-
-.TP
-\fBPort information\fR
-
-	See: ibportstate, ibaddr
-
-.TP
-\fBSwitch Forwarding Table info\fR
-
-	See: ibtracert, ibroute, dump_lfts, dump_mfts, check_lft_balance, ibfindnodesusing
-
-.TP
-\fBPeformance counters\fR
-
-	See: ibqueryerrors, perfquery
-
-.TP
-\fBLocal HCA info\fR
-
-	See: ibstat, ibstatus,
-
-.TP
-\fBConnectivity check\fR
-
-	See: ibping, ibsysstat
-
-.TP
-\fBLow level query tools\fR
-
-	See: smpquery, smpdump, saquery, sminfo
-
-
-.SH Backwards compatibility scripts
-
-The following scripts have been identified as redundant and/or lower performing
-as compared to the above scripts.  They are provided as legacy scripts.
-
-ibcheckerrors, ibclearcounters, ibclearerrors, ibdatacounters
-ibchecknet, ibchecknode, ibcheckport, ibcheckportstate,
-ibcheckportwidth, ibcheckstate, ibcheckwidth, ibswportwatch,
-ibprintca, ibprintrt, ibprintswitch
-
-
-.SH AUTHORS
-.TP
-Ira Weiny
-.RI < weiny2-i2BcT+NCU+M@public.gmane.org >
diff --git a/man/infiniband-diags.8.in b/man/infiniband-diags.8.in
new file mode 100644
index 0000000..80773cd
--- /dev/null
+++ b/man/infiniband-diags.8.in
@@ -0,0 +1,205 @@
+.TH INFINIBAND-DIAGS 8 "Aug 15, 2011" "OpenIB" "OpenIB Diagnostics"
+
+.SH SYNOPSIS
+.B infiniband-diags
+
+.SH DESCRIPTION
+.PP
+infiniband-diags is a set of utilities designed to help configure, debug, and
+maintain infiniband fabrics.  Many tools and utilities are provided.  Some with
+similar functionality.
+
+The base utilities use directed route MAD's to perform their operations.  They
+may therefore work even in unconfigured subnets.  Other, higher level
+utilities, require LID routed MAD's and to some extent SA/SM access.
+
+Multiple port/Multiple CA support: when no IB device or port is specified
+(see the "local umad parameters" below), the libibumad library
+selects the port to use by the following criteria:
+
+	1. the first port that is ACTIVE.
+.br
+	2. if not found, the first port that is UP (physical link up).
+.br
+
+.br
+	If a port and/or CA name is specified, the libibumad library attempts to fulfill the user request, and will fail if it is not possible.
+.br
+
+.br
+	For example:
+.br
+	ibaddr 			# use the 'best port'
+.br
+	ibaddr -C mthca1	# pick the best port from mthca1 only.
+.br
+	ibaddr -P 2		# use the second (active/up) port from the first available IB device.
+.br
+	ibaddr -C mthca0 -P 2	# use the specified port only.
+
+
+.SH COMMON OPTIONS
+
+Most OpenIB diagnostics take the following common flags. The exact list of
+supported flags per utility can be found in the usage message and can be shown
+using "<util_name> -h".
+
+.TP
+\fB# Addressing Flags\fR
+.PP
+\-D      use the directed route specified.
+.br
+		Examples:
+.br
+		"0" 		# self port
+.br
+		"0,1,2,1,4"	# out via port 1, then 2, ...
+
+.PP
+\-G <guid>     use the PortGuid specified.
+.PP
+\-s <smlid>     use 'smlid' as the target lid for SA queries.
+
+.TP
+\fB# Local HCA/port flags:\fR
+.PP
+\-C <ca_name>    use the specified ca_name.
+.PP
+\-P <ca_port>    use the specified ca_port.
+
+.TP
+\fB# Debugging flags\fR
+.PP
+\-t <timeout_ms> override the default timeout for the solicited mads.
+.PP
+\-d      raise the IB debugging level.
+        May be used several times (-ddd or -d -d -d).
+.PP
+\-e      show send and receive errors (timeouts and others)
+.PP
+\-h      show the usage message
+.PP
+\-v      increase the application verbosity level.
+        May be used several times (-vv or -v -v -v)
+.PP
+\-V      show the version info.
+
+.SH FILES
+
+@IBDIAG_CONFIG_PATH@/ibdiag.conf
+
+A global config file is provided to set some of the common options for all
+tools.
+
+.SH NODE NAME MAP FILE FORMAT
+Most utilities use the optional node name map file supported by libosmcomp to
+specify user friendly names for nodes in the output.  Node GUIDs are used to
+perform the lookup.
+
+.TP
+\fBGenerically:\fR
+
+# comment
+.br
+<guid> "<name>"
+
+.TP
+\fBExample:\fR
+
+# IB1
+.br
+# Line cards
+.br
+0x0008f104003f125c "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
+.br
+0x0008f104003f125d "IB1 (Rack 11 slot 1   ) ISR9288/ISR9096 Voltaire sLB-24D"
+.br
+0x0008f104003f10d2 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
+.br
+0x0008f104003f10d3 "IB1 (Rack 11 slot 2   ) ISR9288/ISR9096 Voltaire sLB-24D"
+.br
+0x0008f104003f10bf "IB1 (Rack 11 slot 12  ) ISR9288/ISR9096 Voltaire sLB-24D"
+.br
+.br
+# Spines
+.br
+0x0008f10400400e2d "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
+.br
+0x0008f10400400e2e "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
+.br
+0x0008f10400400e2f "IB1 (Rack 11 spine 1   ) ISR9288 Voltaire sFB-12D"
+.br
+0x0008f10400400e31 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"
+.br
+0x0008f10400400e32 "IB1 (Rack 11 spine 2   ) ISR9288 Voltaire sFB-12D"
+.br
+.br
+# GUID   Node Name
+.br
+0x0008f10400411a08 "SW1  (Rack  3) ISR9024 Voltaire 9024D"
+.br
+0x0008f10400411a28 "SW2  (Rack  3) ISR9024 Voltaire 9024D"
+.br
+0x0008f10400411a34 "SW3  (Rack  3) ISR9024 Voltaire 9024D"
+.br
+0x0008f104004119d0 "SW4  (Rack  3) ISR9024 Voltaire 9024D"
+.br
+
+.SH Utilities list
+
+.TP
+\fBBasic fabric conectivity\fR
+
+	See: ibnetdiscover, iblinkinfo, ibidsverify
+
+.TP
+\fBNode information\fR
+
+	See: ibnodes, ibswitches, ibhosts, ibrouters
+
+.TP
+\fBPort information\fR
+
+	See: ibportstate, ibaddr
+
+.TP
+\fBSwitch Forwarding Table info\fR
+
+	See: ibtracert, ibroute, dump_lfts, dump_mfts, check_lft_balance, ibfindnodesusing
+
+.TP
+\fBPeformance counters\fR
+
+	See: ibqueryerrors, perfquery
+
+.TP
+\fBLocal HCA info\fR
+
+	See: ibstat, ibstatus,
+
+.TP
+\fBConnectivity check\fR
+
+	See: ibping, ibsysstat
+
+.TP
+\fBLow level query tools\fR
+
+	See: smpquery, smpdump, saquery, sminfo
+
+
+.SH Backwards compatibility scripts
+
+The following scripts have been identified as redundant and/or lower performing
+as compared to the above scripts.  They are provided as legacy scripts.
+
+ibcheckerrors, ibclearcounters, ibclearerrors, ibdatacounters
+ibchecknet, ibchecknode, ibcheckport, ibcheckportstate,
+ibcheckportwidth, ibcheckstate, ibcheckwidth, ibswportwatch,
+ibprintca, ibprintrt, ibprintswitch
+
+
+.SH AUTHORS
+.TP
+Ira Weiny
+.RI < weiny2-i2BcT+NCU+M@public.gmane.org >
diff --git a/src/ibdiag_common.c b/src/ibdiag_common.c
index 049b72b..81d7878 100644
--- a/src/ibdiag_common.c
+++ b/src/ibdiag_common.c
@@ -52,6 +52,7 @@
 #include <config.h>
 #include <getopt.h>
 #include <limits.h>
+#include <sys/stat.h>
 
 #include <infiniband/umad.h>
 #include <infiniband/mad.h>
@@ -59,14 +60,18 @@
 #include <ibdiag_version.h>
 
 int ibverbose;
-char *ibd_ca;
-int ibd_ca_port;
 enum MAD_DEST ibd_dest_type = IB_DEST_LID;
 ib_portid_t *ibd_sm_id;
-int ibd_timeout;
-
 static ib_portid_t sm_portid = { 0 };
 
+/* general config options */
+#define IBDIAG_CONFIG_GENERAL IBDIAG_CONFIG_PATH"/ibdiag.conf"
+static char *ibdiag_config_general = IBDIAG_CONFIG_GENERAL;
+char *ibd_ca = NULL;
+int ibd_ca_port = 0;
+int ibd_timeout = 0;
+
+
 static const char *prog_name;
 static const char *prog_args;
 static const char **prog_examples;
@@ -281,6 +286,46 @@ static void make_str_opts(const struct option *o, char *p, unsigned size)
 	p[n] = '\0';
 }
 
+void read_ibdiag_config(void)
+{
+	char buf[1024];
+	FILE *config_fd = NULL;
+	char *p_prefix, *p_last;
+	char *name;
+	char *val_str;
+	struct stat statbuf;
+
+	/* silently ignore missing config file */
+	if (stat(ibdiag_config_general, &statbuf))
+		return;
+
+	config_fd = fopen(ibdiag_config_general, "r");
+	if (!config_fd)
+		return;
+
+	while (fgets(buf, sizeof buf, config_fd) != NULL) {
+		p_prefix = strtok_r(buf, "\n", &p_last);
+		if (!p_prefix)
+			continue; /* ignore blank lines */
+
+		if (*p_prefix == '#')
+			continue; /* ignore comment lines */
+
+		name = strtok_r(p_prefix, "=", &p_last);
+		val_str = strtok_r(NULL, "\n", &p_last);
+
+		if (strncmp(name, "CA", strlen("CA")) == 0) {
+			ibd_ca = strdup(val_str);
+		} else if (strncmp(name, "Port", strlen("Port")) == 0) {
+			ibd_ca_port = strtoul(val_str, NULL, 0);
+		} else if (strncmp(name, "timeout", strlen("timeout")) == 0) {
+			ibd_timeout = strtoul(val_str, NULL, 0);
+		}
+	}
+
+	fclose(config_fd);
+}
+
 int ibdiag_process_opts(int argc, char *const argv[], void *cxt,
 			const char *exclude_common_str,
 			const struct ibdiag_opt custom_opts[],
@@ -299,6 +344,8 @@ int ibdiag_process_opts(int argc, char *const argv[], void *cxt,
 	if (!long_opts)
 		return -1;
 
+	read_ibdiag_config();
+
 	make_str_opts(long_opts, str_opts, sizeof(str_opts));
 
 	while (1) {
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-10-26 21:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-13 23:35 [PATCH] infiniband-diags: add a general config file Ira Weiny
  -- strict thread matches above, loose matches on Subject: below --
2011-10-26 21:30 Ira Weiny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox