Hi Hal, On Mon, 2010-05-24 at 12:03 -0600, Hal Rosenstock wrote: > Hi Jim, > > On Fri, May 21, 2010 at 4:29 PM, Jim Schutt <jasc...@sandia.gov> wrote: > > > > Sorry, I somehow got this wrong. > > > > Corrected patch below. > > > > -- Jim > > > > On Fri, 2010-05-21 at 14:18 -0600, Jim Schutt wrote: > >> Before commit 051a1dd5 (opensm/osm_qos.c: split switch external and end > >> ports setup), osm_qos_setup() would end up calling sl2vl_update_table() > >> for output ports 1-N, and inport ports 0-N. > >> > >> Commit 051a1dd5 changed this around to be output ports 0-N, and input > >> ports 1-N, and an InfiniScale IV based fabric would log lots of errors > >> like these: > >> > >> log_rcv_cb_error: ERR 3111: Received MAD with error status = 0x1C > >> SubnGetResp(SLtoVLMappingTable), attr_mod 0x2300, TID 0xad069 > >> Initial path: 0,1,1,4,13 Return path: 0,25,1,7,10 > >> > >> The attr_mod in every such message has 0x00 in the least significant > >> byte. > > This is the output port. > > >> With the port ranges restored to their old values, the above log messages > >> stop. > > Is this with base or enhanced port 0 ? I'm assuming base. See comment below.
See extra patch below. > > Also, what firmware version is in use ? flint reports the FW version as 7.2.0 > > >> Signed-off-by: Jim Schutt <jasc...@sandia.gov> > >> --- > >> opensm/opensm/osm_qos.c | 8 ++++---- > >> 1 files changed, 4 insertions(+), 4 deletions(-) > >> > >> diff --git a/opensm/opensm/osm_qos.c b/opensm/opensm/osm_qos.c > >> index 6bbbfa2..b8c3111 100644 > >> --- a/opensm/opensm/osm_qos.c > >> +++ b/opensm/opensm/osm_qos.c > >> @@ -230,12 +230,12 @@ static int qos_extports_setup(osm_sm_t * sm, > >> osm_node_t *node, > >> &qcfg->sl2vl); > >> } > >> > >> - for (i = 1; i < num_ports; i++) { > >> + for (i = 0; i < num_ports; i++) { > >> p = osm_node_get_physp_ptr(node, i); > >> force_update = p->need_update || sm->p_subn->need_update; > >> - for (j = 0; j < num_ports; j++) > >> - if (sl2vl_update_table(sm, p, i, i << 8 | j, > >> - force_update, &qcfg->sl2vl)) > >> + for (j = 1; j < num_ports; j++) > >> + if (sl2vl_update_table(sm, p, i, j, force_update, > >> + &qcfg->sl2vl)) > >> ret = -1; > >> } > >> > > > > diff --git a/opensm/opensm/osm_qos.c b/opensm/opensm/osm_qos.c > > index 6bbbfa2..7d76c75 100644 > > @@ -230,10 +230,10 @@ static int qos_extports_setup(osm_sm_t * sm, > > osm_node_t *node, > > &qcfg->sl2vl); > > } > > > > - for (i = 1; i < num_ports; i++) { > > + for (i = 0; i < num_ports; i++) { > > p = osm_node_get_physp_ptr(node, i); > > force_update = p->need_update || sm->p_subn->need_update; > > - for (j = 0; j < num_ports; j++) > > + for (j = 1; j < num_ports; j++) > > if (sl2vl_update_table(sm, p, i, i << 8 | j, > > force_update, &qcfg->sl2vl)) > > ret = -1; > > > > I think the start for j depends on whether it is base or enhanced port > 0. Start should be 0 for enhanced and 1 for base. Ah. I see now in the IBA 1.2.1 spec, Table 146 PortInfo, p 837, that only an enhanced SP0 supports OperationalVLs. So if a base SP0 doesn't support it, such port also doesn't support VLs, and it makes sense that you shouldn't attempt to program SL2VL maps. Is that what you're thinking? I added this patch on top of above, and things still work w/ no error messages. I guess that means our InfiniSwitch IV gear has only base SP0. --- a/opensm/opensm/osm_qos.c +++ b/opensm/opensm/osm_qos.c @@ -233,7 +233,8 @@ static int qos_extports_setup(osm_sm_t * sm, osm_node_t *node, for (i = 0; i < num_ports; i++) { p = osm_node_get_physp_ptr(node, i); force_update = p->need_update || sm->p_subn->need_update; - for (j = 1; j < num_ports; j++) + 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, force_update, &qcfg->sl2vl)) ret = -1; Does that look OK to you? Thanks -- Jim > > -- Hal > -- 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