Hi Eli, On Mon, Aug 23, 2010 at 3:37 PM, Eli Dorfman <dorfman....@gmail.com> wrote: > Hi Hal, > > On Mon, Aug 23, 2010 at 5:25 PM, Hal Rosenstock > <hal.rosenst...@gmail.com> wrote: >> On Wed, Jul 28, 2010 at 12:26 PM, Eli Dorfman (Voltaire) >> <dorfman....@gmail.com> wrote: >>> >>> Subject: [PATCH] Fix sl2vl configuration >>> >>> For non-optimized sl2vl configuration in and out ports were reversed. >> >> Are you sure these are reversed ? Any idea which commit introduced >> this reversal of in and out ports ? > I'm sure they are reversed.
I looked at it some more and the ports look reversed to me too. > This patch was also tested by Jim Schutt. That only means it works in his environment rather than "correctness". > I didn't check which commit introduced this - why is it important? I'd like to understand which patch introduced the reversal. I don't see it but might have missed it. I think it's important to know which versions are broken. >> >>> For optimal sl2vl added override of default ALL settting with port's >>> sl2vl when operational VL was other than the default port. >> >> What is the motivation to override when the operational VLs is >> different ? Why is that better than what is done currently ? > The idea was to apply the default policy - set sl2vl modulo operational VL. > When applying ALL settings using port 1 we still want to override this > setting for ports with different operational VL. What makes the default policy modulo operational VLs ? > >> >> Is this really a policy issue ? >> >> IMO there are two separate issues in this patch and they should be in >> separate patches (for better git bisection). > Maybe, but I still think this patch fixes wrong setting for sl2vl > using optimized and non optimized methods. > I'm not sure this should be divided to 2 separate patches. It's one thought per patch and to me this is two different thoughts. >> >> Also, a couple of (possibly related) questions below. > It seems that you are referring to patch v1 which was modified > according to Jim's comments. > Please check the v2 patch . I see my questions are moot in terms of the v2 patch. -- Hal > Thanks, > Eli > >> >>> Signed-off-by: Eli Dorfman <e...@voltaire.com> >>> --- >>> opensm/opensm/osm_qos.c | 25 ++++++++++++++++++++----- >>> 1 files changed, 20 insertions(+), 5 deletions(-) >>> >>> diff --git a/opensm/opensm/osm_qos.c b/opensm/opensm/osm_qos.c >>> index a571370..de0ae23 100644 >>> --- a/opensm/opensm/osm_qos.c >>> +++ b/opensm/opensm/osm_qos.c >>> @@ -182,7 +182,7 @@ static ib_api_status_t sl2vl_update_table(osm_sm_t * >>> sm, osm_physp_t * p, >>> tbl.raw_vl_by_sl[i] = (vl1 << 4) | vl2; >>> } >>> >>> - if (!force_update && (p_tbl = osm_physp_get_slvl_tbl(p, in_port)) && >>> + if (!force_update && in_port && (p_tbl = osm_physp_get_slvl_tbl(p, >>> in_port)) && >>> !memcmp(p_tbl, &tbl, sizeof(tbl))) >>> return IB_SUCCESS; >> >> Why exclude port 0 here ? Is it related to the change noted below ? >> >>> @@ -209,6 +209,7 @@ static int qos_extports_setup(osm_sm_t * sm, osm_node_t >>> *node, >>> unsigned num_ports = osm_node_get_num_physp(node); >>> int ret = 0; >>> unsigned i, j; >>> + uint8_t op_vl1; >>> >>> for (i = 1; i < num_ports; i++) { >>> p = osm_node_get_physp_ptr(node, i); >>> @@ -225,17 +226,31 @@ static int qos_extports_setup(osm_sm_t * sm, >>> osm_node_t *node, >>> if (ib_switch_info_get_opt_sl2vlmapping(&node->sw->switch_info) && >>> sm->p_subn->opt.use_optimized_slvl) { >>> p = osm_node_get_physp_ptr(node, 1); >>> + op_vl1 = ib_port_info_get_op_vls(&p->port_info); >>> force_update = p->need_update || sm->p_subn->need_update; >>> - return sl2vl_update_table(sm, p, 1, 0x30000, force_update, >>> - &qcfg->sl2vl); >>> + if (sl2vl_update_table(sm, p, 0, 0x30000, force_update, >> >> Why is the third parameter (in_port) changed from 1 to 0 here ? Maybe >> that's related to the change above for the skipping of port 0 in >> sl2vl_update_table. >> >> -- Hal >> >>> + &qcfg->sl2vl)) >>> + ret = -1; >>> + /* overwrite default ALL configuration if port's >>> + op_vl is different */ >>> + for (i = 2; i < num_ports; i++) { >>> + p = osm_node_get_physp_ptr(node, i); >>> + if (ib_port_info_get_op_vls(&p->port_info) != >>> op_vl1 && >>> + sl2vl_update_table(sm, p, 0, 0x20000 | i, >>> force_update, >>> + &qcfg->sl2vl)) >>> + ret = -1; >>> + } >>> + return ret; >>> } >>> >>> - for (i = 0; i < num_ports; i++) { >>> + /* non optimized sl2vl configuration */ >>> + i = ib_switch_info_is_enhanced_port0(&node->sw->switch_info) ? 0 : >>> 1; >>> + for (; i < num_ports; i++) { >>> p = osm_node_get_physp_ptr(node, i); >>> force_update = p->need_update || sm->p_subn->need_update; >>> j = ib_switch_info_is_enhanced_port0(&node->sw->switch_info) >>> ? 0 : 1; >>> for (; j < num_ports; j++) >>> - if (sl2vl_update_table(sm, p, i, i << 8 | j, >>> + if (sl2vl_update_table(sm, p, j, j << 8 | i, >>> force_update, &qcfg->sl2vl)) >>> ret = -1; >>> } >>> -- >>> 1.5.5 >>> >>> -- >>> 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 >>> >> > -- 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