opensm/osm_qos.c: Eliminate unneeded endport SL to VL setup
PATCH v2 1/1 opensm/osm_qos.c: Eliminate unneeded endport SL to VL setup
when using optimized programming and it's supported by the switch
---
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
opensm/opensm/osm_qos.c +13 -2
@@ -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 ; + 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 [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 47 lines · Hal Rosenstock
when using optimized programming and it's supported by the switch
Signed-off-by Hal Rosenstock <[email protected]>---
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 portopensm/opensm/osm_qos.c +5
-1@@ -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);
opensm/opensm/osm_qos.c int osm_qos_setup(osm_opensm_t * p_osm) · line 317
Quoted 9 lines
opensm/opensm/osm_qos.c +6
-0@@ -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).
Sasha
opensm/opensm/osm_qos.c int osm_qos_setup(osm_opensm_t * p_osm) · line 328
Quoted 12 lines
opensm/opensm/osm_qos.c +2
-1cfg = &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 [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 61 lines · Sasha Khapyorsky
Quoted 47 lines · Hal Rosenstock
when using optimized programming and it's supported by the switch
Signed-off-by Hal Rosenstock <[email protected]>---
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 portopensm/opensm/osm_qos.c +5
-1@@ -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);opensm/opensm/osm_qos.c int osm_qos_setup(osm_opensm_t * p_osm) · line 317
Quoted 9 lines
opensm/opensm/osm_qos.c +6
-0@@ -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:
Quoted 8 lines
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.
-- Hal
Quoted 15 lines
Sasha
Quoted 6 lines
opensm/opensm/osm_qos.c +0
-0cfg = &sw0_config; } else if (osm_node_get_type(p_node) == IB_NODE_TYPE_ROUTER) cfg = &rtr_config;else
cfg =&ca_config;Quoted 6 lines
- 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;
}
Quoted 5 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] 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 [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): f0e08f231001260530o6260986dice657109f4eea637-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org
Sasha,
Quoted 66 lines · Hal Rosenstock
Quoted 65 lines · Sasha Khapyorsky
Quoted 47 lines · Hal Rosenstock
when using optimized programming and it's supported by the switch
Signed-off-by Hal Rosenstock <[email protected]>---
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 portopensm/opensm/osm_qos.c +5
-1@@ -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);opensm/opensm/osm_qos.c int osm_qos_setup(osm_opensm_t * p_osm) · line 317
Quoted 9 lines
opensm/opensm/osm_qos.c +6
-0@@ -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++) {
...
}
Quoted 7 lines
Quoted 4 lines
, 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
Quoted 23 lines
-- Hal
Quoted 20 lines
Sasha
Quoted 6 lines
opensm/opensm/osm_qos.c +0
-0cfg = &sw0_config; } else if (osm_node_get_type(p_node) == IB_NODE_TYPE_ROUTER) cfg = &rtr_config;else
cfg =&ca_config;Quoted 6 lines
- 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 [email protected] 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 [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): AANLkTilHxkXWzb-eEyWMLOtZXAnURNRvtw8-nZVL0OvW-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org
Quoted 5 lines · Hal Rosenstock
Quoted 3 lines
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.
No reason. Applied. Thanks.
Sasha
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html