Hi again Jim,
On Mon, May 24, 2010 at 5:42 PM, Jim Schutt <[email protected]> wrote:
> 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 <[email protected]> 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 <[email protected]>
>> >> ---
>> >> 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 was basing this on Table 166 SMP AttributeModifier Errors p. 855 for
SLtoVLMappingTable which summarizes the related compliances for MAD
status handling.
> 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.
Yes; you can check this with smpquery switchinfo.
> --- 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?
Yes.
-- Hal
>
> Thanks -- Jim
>
>
>>
>> -- Hal
>>
>
>
>
--
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