Hi Hal, On 14:41 Tue 01 Dec , Hal Rosenstock wrote: > > Optimized SLtoVLMappingTable programming reduces the number of MADs > needed from O(n**2) to O(n). See IBA 1.2.1 vol 1 p. 843 14.2.5.8 > SLtoVLMappingTable. > > Signed-off-by: Hal Rosenstock <hal.rosenst...@gmail.com> > ---
[snip] > diff --git a/opensm/opensm/osm_qos.c b/opensm/opensm/osm_qos.c > index 08f9a60..617a86e 100644 > --- a/opensm/opensm/osm_qos.c > +++ b/opensm/opensm/osm_qos.c [snip] > @@ -290,6 +306,44 @@ int osm_qos_setup(osm_opensm_t * p_osm) > /* read QoS policy config file */ > osm_qos_parse_policy_file(&p_osm->subn); > > + /* loop on switches that support optimized SL2VL programming first */ > + p_tbl = &p_osm->subn.sw_guid_tbl; > + p_next = cl_qmap_head(p_tbl); > + while (p_next != cl_qmap_end(p_tbl)) { > + p_sw = (osm_switch_t *) p_next; > + p_next = cl_qmap_next(p_next); > + > + if (ib_switch_info_get_opt_sl2vlmapping(&p_sw->switch_info) && > + p_osm->subn.opt.use_optimized_slvl) { > + p_physp = osm_node_get_physp_ptr(p_sw->p_node, 1); > + num_physp = osm_node_get_num_physp(p_sw->p_node); > + force_update = p_osm->subn.need_update; > + for (i = 1; i < num_physp; i++) { > + p_physp = osm_node_get_physp_ptr(p_sw->p_node, > i); > + if (!p_physp) > + continue; > + if (vlarb_physp_setup(&p_osm->sm, p_physp, i, > + p_physp->need_update || > + p_osm->subn.need_update, > + &swe_config)) > + ret = -1; > + force_update |= p_physp->need_update; > + } > + if (sl2vl_update(&p_osm->sm, > + osm_node_get_physp_ptr(p_sw->p_node, > 0), > + p_physp, i, 1, force_update, At this point i = num_physp, which is an invalid switch port number, right? Sasha > + &swe_config)) { > + OSM_LOG(&p_osm->log, OSM_LOG_ERROR, "ERR 6204: " > + "failed to update optimized > SL2VLMapping" > + " tables for port %" PRIx64 " #%d\n", > + cl_ntoh64(p_physp->port_guid), i); > + ret = -1; > + } > + } > + } > + > + /* now, loop on ports skipping the external ports of switches > + that support optimized SL2VL programming */ > p_tbl = &p_osm->subn.port_guid_tbl; > p_next = cl_qmap_head(p_tbl); > while (p_next != cl_qmap_end(p_tbl)) { -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html