[ofa-general] [PATCH 1/3 v2] opensm: Added io_guid_file and max_reverse_hops options
Nicolas Morey Chaisemartin
nicolas.morey-chaisemartin at ext.bull.net
Fri Feb 13 01:24:24 PST 2009
Signed-off-by: Nicolas Morey-Chaisemartin <nicolas.morey-chaisemartin at ext.bull.net>
---
Reposted as io_guid_file and max_reverse_hops were missing from the opt_tbl and wouldn't be read from the cached option file.
opensm/include/opensm/osm_subnet.h | 6 ++++++
opensm/opensm/main.c | 26 +++++++++++++++++++++++++-
opensm/opensm/osm_subnet.c | 14 ++++++++++++++
3 files changed, 45 insertions(+), 1 deletions(-)
diff --git a/opensm/include/opensm/osm_subnet.h b/opensm/include/opensm/osm_subnet.h
index 8863e47..671b51f 100644
--- a/opensm/include/opensm/osm_subnet.h
+++ b/opensm/include/opensm/osm_subnet.h
@@ -190,6 +190,8 @@ typedef struct osm_subn_opt {
char *lfts_file;
char *root_guid_file;
char *cn_guid_file;
+ char *io_guid_file;
+ uint16_t max_reverse_hops;
char *ids_guid_file;
char *guid_routing_order_file;
char *sa_db_file;
@@ -383,6 +385,10 @@ typedef struct osm_subn_opt {
* Name of the file that contains list of compute node guids that
* will be used by fat-tree routing (provided by User)
*
+* io_guid_file
+* Name of the file that contains list of I/O node guids that
+* will be used by fat-tree routing (provided by User)
+*
* ids_guid_file
* Name of the file that contains list of ids which should be
* used by Up/Down algorithm instead of node GUIDs
diff --git a/opensm/opensm/main.c b/opensm/opensm/main.c
index a8dc9e6..b5e3337 100644
--- a/opensm/opensm/main.c
+++ b/opensm/opensm/main.c
@@ -212,6 +212,12 @@ static void show_usage(void)
printf("--cn_guid_file, -u <path to file>\n"
" Set the compute nodes for the Fat-Tree routing algorithm\n"
" to the guids provided in the given file (one to a line)\n\n");
+ printf("--io_guid_file, -G <path to file>\n"
+ " Set the I/O nodes for the Fat-Tree routing algorithm\n"
+ " to the guids provided in the given file (one to a line)\n\n");
+ printf("--max_reverse_hops, -H <hop_count>\n"
+ " Set the max number of hops the wrong way around\n"
+ " an I/O node is allowed to do (connectivity for I/O nodes on top swithces)\n\n");
printf("--ids_guid_file, -m <path to file>\n"
" Name of the map file with set of the IDs which will be used\n"
" by Up/Down routing algorithm instead of node GUIDs\n"
@@ -526,7 +532,7 @@ int main(int argc, char *argv[])
uint32_t val;
unsigned config_file_done = 0;
const char *const short_option =
- "F:c:i:f:ed:D:g:l:L:s:t:a:u:m:X:R:zM:U:S:P:Y:ANBIQvVhoryxp:n:q:k:C:";
+ "F:c:i:f:ed:D:g:l:L:s:t:a:u:m:X:R:zM:U:S:P:Y:ANBIQvVhoryxp:n:q:k:C:G:H:";
/*
In the array below, the 2nd parameter specifies the number
@@ -570,6 +576,8 @@ int main(int argc, char *argv[])
{"sadb_file", 1, NULL, 'S'},
{"root_guid_file", 1, NULL, 'a'},
{"cn_guid_file", 1, NULL, 'u'},
+ {"io_guid_file", 1, NULL, 'G'},
+ {"max_reverse_hops", 1, NULL, 'H'},
{"ids_guid_file", 1, NULL, 'm'},
{"guid_routing_order_file", 1, NULL, 'X'},
{"stay_on_fatal", 0, NULL, 'y'},
@@ -880,6 +888,22 @@ int main(int argc, char *argv[])
opt.cn_guid_file);
break;
+ case 'G':
+ /*
+ Specifies I/O node guids file
+ */
+ opt.io_guid_file = optarg;
+ printf(" I/O Node Guid File: %s\n",
+ opt.io_guid_file);
+ break;
+ case 'H':
+ /*
+ Specifies I/O max reverted hops
+ */
+ opt.max_reverse_hops = atoi(optarg);
+ printf(" Max Reverse Hops: %d\n",
+ opt.max_reverse_hops);
+ break;
case 'm':
/* Specifies ids guid file */
SET_STR_OPT(opt.ids_guid_file, optarg);
diff --git a/opensm/opensm/osm_subnet.c b/opensm/opensm/osm_subnet.c
index 69937c1..2ee7cf7 100644
--- a/opensm/opensm/osm_subnet.c
+++ b/opensm/opensm/osm_subnet.c
@@ -146,6 +146,8 @@ static const opt_rec_t opt_tbl[] = {
{ "lfts_file", OPT_OFFSET(lfts_file), opts_parse_charp, NULL, 0 },
{ "root_guid_file", OPT_OFFSET(root_guid_file), opts_parse_charp, NULL, 0 },
{ "cn_guid_file", OPT_OFFSET(cn_guid_file), opts_parse_charp, NULL, 0 },
+ { "io_guid_file", OPT_OFFSET(io_guid_file), opts_parse_charp, NULL, 0 },
+ { "max_reverse_hops", OPT_OFFSET(max_reverse_hops), opts_parse_uint16, NULL, 0 },
{ "ids_guid_file", OPT_OFFSET(ids_guid_file), opts_parse_charp, NULL, 0 },
{ "guid_routing_order_file", OPT_OFFSET(guid_routing_order_file), opts_parse_charp, NULL, 0 },
{ "sa_db_file", OPT_OFFSET(sa_db_file), opts_parse_charp, NULL, 0 },
@@ -578,6 +580,8 @@ void osm_subn_set_default_opt(IN osm_subn_opt_t * const p_opt)
p_opt->lfts_file = NULL;
p_opt->root_guid_file = NULL;
p_opt->cn_guid_file = NULL;
+ p_opt->io_guid_file = NULL;
+ p_opt->max_reverse_hops = 0;
p_opt->ids_guid_file = NULL;
p_opt->guid_routing_order_file = NULL;
p_opt->sa_db_file = NULL;
@@ -1393,6 +1397,16 @@ int osm_subn_output_conf(FILE *out, IN osm_subn_opt_t *const p_opts)
p_opts->cn_guid_file ? p_opts->cn_guid_file : null_str);
fprintf(out,
+ "# The file holding the fat-tree I/O node guids\n"
+ "# One guid in each line\nio_guid_file %s\n\n",
+ p_opts->io_guid_file ? p_opts->io_guid_file : null_str);
+
+ fprintf(out,
+ "# Number of reverse hops allowed for I/O nodes \n"
+ "# Used for connectivity between I/O nodes connected to Top Switches\nmax_reverse_hops %d\n\n",
+ p_opts->max_reverse_hops);
+
+ fprintf(out,
"# The file holding the node ids which will be used by"
" Up/Down algorithm instead\n# of GUIDs (one guid and"
" id in each line)\nids_guid_file %s\n\n",
--
1.6.1
More information about the general
mailing list