Thread (1 message) 1 message, 1 author, 2010-06-14

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 port
diff --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
-- Hal
quoted
Sasha
quoted
                      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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help