Hi Eli, On 17:40 Thu 01 Jan , Eli Dorfman (Voltaire) wrote: > Add new partition keyword for all switches and hca. > To allow firmware upgrade within managed switches we > want all switch port 0 to have full membership. > 'ALL_SWITCH' means all switch end ports in the subnet > 'ALL_CA' means all CA end ports in the subnet.
And then we likely will want to extend this set to have all ib node types by adding ALL_ROUTER(S). Also I think better keywords would be ALL_SWITCHES and ALL_CAS - parser cares about abbreviations, so the shorter keyword version will work too - for example 'ALL_CA' will be interpreted as 'ALL_CAS'. And of course related addition to OpenSM man page and doc/partition-config.txt will be useful too. Sasha > New default partition configuration will be: > "Default=0x7fff,ipoib:ALL_CA, ALL_SWITCH=full, SELF=full;" > > Signed-off-by: Eli Dorfman <[email protected]> > --- > opensm/opensm/osm_prtn.c | 15 +++++++++------ > opensm/opensm/osm_prtn_config.c | 10 ++++++++-- > 2 files changed, 17 insertions(+), 8 deletions(-) > > diff --git a/opensm/opensm/osm_prtn.c b/opensm/opensm/osm_prtn.c > index be51410..8b9301e 100644 > --- a/opensm/opensm/osm_prtn.c > +++ b/opensm/opensm/osm_prtn.c > @@ -135,7 +135,7 @@ ib_api_status_t osm_prtn_add_port(osm_log_t * p_log, > osm_subn_t * p_subn, > } > > ib_api_status_t osm_prtn_add_all(osm_log_t * p_log, osm_subn_t * p_subn, > - osm_prtn_t * p, boolean_t full) > + osm_prtn_t * p, uint8_t type, boolean_t full) > { > cl_qmap_t *p_port_tbl = &p_subn->port_guid_tbl; > cl_map_item_t *p_item; > @@ -146,10 +146,13 @@ ib_api_status_t osm_prtn_add_all(osm_log_t * p_log, > osm_subn_t * p_subn, > while (p_item != cl_qmap_end(p_port_tbl)) { > p_port = (osm_port_t *) p_item; > p_item = cl_qmap_next(p_item); > - status = osm_prtn_add_port(p_log, p_subn, p, > - osm_port_get_guid(p_port), full); > - if (status != IB_SUCCESS) > - goto _err; > + if (type == 0xff || > + (osm_node_get_type(p_port->p_node) == type)) { > + status = osm_prtn_add_port(p_log, p_subn, p, > + osm_port_get_guid(p_port), > full); > + if (status != IB_SUCCESS) > + goto _err; > + } > } > > _err: > @@ -325,7 +328,7 @@ static ib_api_status_t osm_prtn_make_default(osm_log_t * > const p_log, > IB_DEFAULT_PARTIAL_PKEY); > if (!p) > goto _err; > - status = osm_prtn_add_all(p_log, p_subn, p, no_config); > + status = osm_prtn_add_all(p_log, p_subn, p, 0xff, no_config); > if (status != IB_SUCCESS) > goto _err; > cl_map_remove(&p->part_guid_tbl, p_subn->sm_port_guid); > diff --git a/opensm/opensm/osm_prtn_config.c b/opensm/opensm/osm_prtn_config.c > index 9511608..37f2bd6 100644 > --- a/opensm/opensm/osm_prtn_config.c > +++ b/opensm/opensm/osm_prtn_config.c > @@ -64,7 +64,7 @@ extern osm_prtn_t *osm_prtn_make_new(osm_log_t * p_log, > osm_subn_t * p_subn, > const char *name, uint16_t pkey); > extern ib_api_status_t osm_prtn_add_all(osm_log_t * p_log, > osm_subn_t * p_subn, > - osm_prtn_t * p, boolean_t full); > + osm_prtn_t * p, uint8_t type, boolean_t > full); > extern ib_api_status_t osm_prtn_add_port(osm_log_t * p_log, > osm_subn_t * p_subn, osm_prtn_t * p, > ib_net64_t guid, boolean_t full); > @@ -212,7 +212,13 @@ static int partition_add_port(unsigned lineno, struct > part_conf *conf, > > if (!strncmp(name, "ALL", strlen(name))) { > return osm_prtn_add_all(conf->p_log, conf->p_subn, p, > - full) == IB_SUCCESS ? 0 : -1; > + 0xff, full) == IB_SUCCESS ? 0 : -1; > + } else if (!strncmp(name, "ALL_SWITCH", strlen(name))) { > + return osm_prtn_add_all(conf->p_log, conf->p_subn, p, > + IB_NODE_TYPE_SWITCH, full) == > IB_SUCCESS ? 0 : -1; > + } else if (!strncmp(name, "ALL_CA", strlen(name))) { > + return osm_prtn_add_all(conf->p_log, conf->p_subn, p, > + IB_NODE_TYPE_CA, full) == IB_SUCCESS ? > 0 : -1; > } else if (!strncmp(name, "SELF", strlen(name))) { > guid = cl_ntoh64(conf->p_subn->sm_port_guid); > } else { > -- > 1.5.5 > _______________________________________________ general mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
