Re: [PATCHv2] opensm/osm_qos.c: Eliminate unneeded endport SL to VL setup
From: Hal Rosenstock <hidden>
Date: 2010-06-14 13:09:47
Sasha, On Tue, Jan 26, 2010 at 9:30 AM, Hal Rosenstock [off-list ref] wrote:
On Tue, Jan 26, 2010 at 8:26 AM, Sasha Khapyorsky [off-list ref] wrote:quoted
On 15:22 Mon 25 Jan , Hal Rosenstock wrote:quoted
when using optimized programming and it's supported by the switch Signed-off-by: Hal Rosenstock <redacted> --- Changes since v1: Add in update of vlarb tables for port 0 when optimized but no SL to VL tables needed to be configured on that portdiff --git a/opensm/opensm/osm_qos.c b/opensm/opensm/osm_qos.c index f814ea8..218e128 100644 --- a/opensm/opensm/osm_qos.c +++ b/opensm/opensm/osm_qos.c@@ -243,13 +243,15 @@ static int qos_extports_setup(osm_sm_t * sm, osm_node_t *node,} static int qos_endport_setup(osm_sm_t * sm, osm_physp_t * p, - const struct qos_config *qcfg) + const struct qos_config *qcfg, int vlarb_only) { unsigned force_update = p->need_update || sm->p_subn->need_update; p->vl_high_limit = qcfg->vl_high_limit; if (vlarb_update(sm, p, 0, force_update, qcfg)) return -1; + if (vlarb_only) + return 0; if (!(p->port_info.capability_mask & IB_PORT_CAP_HAS_SL_MAP)) return 0;@@ -269,6 +271,7 @@ int osm_qos_setup(osm_opensm_t * p_osm)osm_port_t *p_port; osm_node_t *p_node; int ret = 0; + int vlarb_only; if (!p_osm->subn.opt.qos) return 0;@@ -292,6 +295,7 @@ int osm_qos_setup(osm_opensm_t * p_osm)p_tbl = &p_osm->subn.port_guid_tbl; p_next = cl_qmap_head(p_tbl); while (p_next != cl_qmap_end(p_tbl)) { + vlarb_only = 0; p_port = (osm_port_t *) p_next; p_next = cl_qmap_next(p_next);@@ -305,13 +309,20 @@ int osm_qos_setup(osm_opensm_t * p_osm)(&p_node->sw->switch_info)) continue; + if (ib_switch_info_get_opt_sl2vlmapping(&p_node->sw->switch_info) && + p_osm->sm.p_subn->opt.use_optimized_slvl && + !memcmp(&swe_config.sl2vl, &sw0_config.sl2vl, + sizeof(swe_config.sl2vl))) + vlarb_only = 1; +qos_extports_setup() is running port setup loop (for both VLArb *and* SL2VL) as: for (i = 1; i < num_ports; i++) { ... } , starting from port '1'. So you case will just effectively skip any SL2VL setup for port 0 (it was commented for V1 too).This is intended. It's not needed since it's only doing this in the wildcarded case and the wildcarding includes port 0.
Any reason not to move ahead on this ? Thanks. -- Hal
-- Halquoted
Sashaquoted
cfg = &sw0_config; } else if (osm_node_get_type(p_node) == IB_NODE_TYPE_ROUTER) cfg = &rtr_config; else cfg = &ca_config; - if (qos_endport_setup(&p_osm->sm, p_port->p_physp, cfg)) + if (qos_endport_setup(&p_osm->sm, p_port->p_physp, cfg, + vlarb_only)) ret = -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
-- 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