[openib-general] [PATCHv2] OpenSM: Support configurable SL per partition
Sasha Khapyorsky
sashak at voltaire.com
Wed Jul 19 10:40:38 PDT 2006
Hi Hal,
The minor comment is below.
On 07:11 Fri 14 Jul , Hal Rosenstock wrote:
> OpenSM: Support configurable SL per partition
>
> Signed-off-by: Sasha Khapyorsky <sashak at voltaire.com>
> Signed-off-by: Hal Rosenstock <halr at voltaire.com>
>
> Index: include/opensm/osm_partition.h
> ===================================================================
> --- include/opensm/osm_partition.h (revision 8520)
> +++ include/opensm/osm_partition.h (working copy)
> @@ -102,6 +102,7 @@
> {
> cl_map_item_t map_item;
> uint16_t pkey;
> + uint8_t sl;
> cl_map_t full_guid_tbl;
> cl_map_t part_guid_tbl;
> char name[32];
> @@ -114,6 +115,9 @@
> * pkey
> * The IBA defined P_KEY of this Partition.
> *
> +* sl
> +* The Service Level (SL) associated with this Partiton.
> +*
> * port_guid_tbl
> * Container of pointers to all Port objects in the Partition,
> * indexed by port GUID.
> Index: opensm/osm_prtn.c
> ===================================================================
> --- opensm/osm_prtn.c (revision 8520)
> +++ opensm/osm_prtn.c (working copy)
> @@ -79,6 +79,7 @@
>
> memset(p, 0, sizeof(*p));
> p->pkey = pkey;
> + p->sl = OSM_DEFAULT_SL;
> cl_map_construct(&p->full_guid_tbl);
> cl_map_init(&p->full_guid_tbl, 32);
> cl_map_construct(&p->part_guid_tbl);
> @@ -220,7 +221,7 @@
> mc_rec.pkey = pkey;
> mc_rec.rate = rate ? rate : 0x3; /* 10Gb/sec */
> mc_rec.pkt_life = OSM_DEFAULT_SUBNET_TIMEOUT;
> - mc_rec.sl_flow_hop = OSM_DEFAULT_SL << 28;
> + mc_rec.sl_flow_hop = ib_member_set_sl_flow_hop(p->sl, 0, 0);
> /* Note: scope needs to be consistent with MGID */
> mc_rec.scope_state = 0x21;
>
> Index: opensm/osm_prtn_config.c
> ===================================================================
> --- opensm/osm_prtn_config.c (revision 8520)
> +++ opensm/osm_prtn_config.c (working copy)
> @@ -52,8 +52,10 @@
> #include <string.h>
> #include <errno.h>
> #include <ctype.h>
> +#include <limits.h>
^^^^^^^^^
I guess you don't need to include limits.h now, since MAX_ constants are
not used.
Sasha
>
> #include <iba/ib_types.h>
> +#include <opensm/osm_base.h>
> #include <opensm/osm_partition.h>
> #include <opensm/osm_subnet.h>
> #include <opensm/osm_log.h>
> @@ -82,7 +84,7 @@
> osm_log_t *p_log;
> osm_subn_t *p_subn;
> osm_prtn_t *p_prtn;
> - unsigned is_ipoib, mtu, rate;
> + unsigned is_ipoib, mtu, rate, sl;
> };
>
>
> @@ -122,6 +124,16 @@
> if (!conf->p_prtn)
> return -1;
>
> + if (conf->p_subn->opt.no_qos) {
> + if (conf->sl != OSM_DEFAULT_SL) {
> + osm_log(conf->p_log, OSM_LOG_ERROR,
> + "partition_create: Overriding SL %d to default SL %d on partition %s as QoS not enabled\n",
> + conf->sl, OSM_DEFAULT_SL, name);
> + conf->sl = OSM_DEFAULT_SL;
> + }
> + }
> + conf->p_prtn->sl = conf->sl;
> +
> if (conf->is_ipoib)
> osm_prtn_add_mcgroup(conf->p_log, conf->p_subn, conf->p_prtn,
> conf->is_ipoib, conf->rate, conf->mtu);
> @@ -145,6 +157,17 @@
> PARSEWARN(conf->p_log, lineno,
> "flag \'rate\' requires valid value"
> " - skipped.\n");
> + } else if (!strncmp(flag, "sl", len)) {
> + unsigned sl;
> + char *end;
> +
> + if (!val || !*val || (sl = strtoul(val, &end, 0)) > 15 ||
> + (*end && !isspace(*end)))
> + PARSEWARN(conf->p_log, lineno,
> + "flag \'sl\' requires valid value"
> + " - skipped.\n");
> + else
> + conf->sl = sl;
> } else {
> PARSEWARN(conf->p_log, lineno,
> "unrecognized partition flag \'%s\'"
> @@ -254,6 +277,8 @@
> conf->p_log = p_log;
> conf->p_subn = p_subn;
> conf->p_prtn = NULL;
> + conf->is_ipoib = 0;
> + conf->sl = OSM_DEFAULT_SL;
> return conf;
> }
>
> Index: doc/partition-config.txt
> ===================================================================
> --- doc/partition-config.txt (revision 8520)
> +++ doc/partition-config.txt (working copy)
> @@ -46,6 +46,7 @@
> result IPoIB capable MC group will be created.
> rate=<val> - specifies rate for this IPoIB MC group (default is 3 (10GBps))
> mtu=<val> - specifies MTU for this IPoIB MC group (default is 4 (2048))
> +sl=<val> - specifies SL for this IPoIB MC group (default is 0)
>
> Note that values for 'rate' and 'mtu' should be specified as defined in
> IBTA specification (for example mtu=4 for 2048).
>
>
>
More information about the general
mailing list