public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] opensm/qos.c: Revert port ranges for calls to sl2vl_update_table().
       [not found] ` <1851_1274473140_o4LKDZ3n001852_1274473115-3153-1-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
@ 2010-05-21 20:29   ` Jim Schutt
       [not found]     ` <1274473795.4773.43.camel-mgfCWIlwujvg4c9jKm7R2O1ftBKYq+Ku@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Jim Schutt @ 2010-05-21 20:29 UTC (permalink / raw)
  To: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
  Cc: sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org


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.
> 
> With the port ranges restored to their old values, the above log messages
> stop.
> 
> Signed-off-by: Jim Schutt <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
> ---
>  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;




--
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] opensm/qos.c: Revert port ranges for calls to sl2vl_update_table().
       [not found]     ` <1274473795.4773.43.camel-mgfCWIlwujvg4c9jKm7R2O1ftBKYq+Ku@public.gmane.org>
@ 2010-05-24 18:03       ` Hal Rosenstock
       [not found]         ` <AANLkTimzCMA8sdpT7W7bpBnb0fqdEhA5I3j-6Vqc7S2L-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Hal Rosenstock @ 2010-05-24 18:03 UTC (permalink / raw)
  To: Jim Schutt
  Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org

Hi Jim,

On Fri, May 21, 2010 at 4:29 PM, Jim Schutt <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org> 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.

Also, what firmware version is in use ?

>> Signed-off-by: Jim Schutt <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
>> ---
>>  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.

-- Hal
--
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] opensm/qos.c: Revert port ranges for calls to sl2vl_update_table().
       [not found]         ` <AANLkTimzCMA8sdpT7W7bpBnb0fqdEhA5I3j-6Vqc7S2L-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2010-05-24 21:42           ` Jim Schutt
       [not found]             ` <1274737321.4773.68.camel-mgfCWIlwujvg4c9jKm7R2O1ftBKYq+Ku@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Jim Schutt @ 2010-05-24 21:42 UTC (permalink / raw)
  To: Hal Rosenstock
  Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org

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 <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org> 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 <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
> >> ---
> >>  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 majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] opensm/qos.c: Revert port ranges for calls to sl2vl_update_table().
       [not found]             ` <1274737321.4773.68.camel-mgfCWIlwujvg4c9jKm7R2O1ftBKYq+Ku@public.gmane.org>
@ 2010-05-25 15:57               ` Hal Rosenstock
       [not found]                 ` <AANLkTimrixibqJWr4zIeSYRUH4-Y1_BOqOGCvuEMNOmQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Hal Rosenstock @ 2010-05-25 15:57 UTC (permalink / raw)
  To: Jim Schutt
  Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org

Hi again Jim,

On Mon, May 24, 2010 at 5:42 PM, Jim Schutt <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org> 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 <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org> 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 <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
>> >> ---
>> >>  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 majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] opensm/qos.c: Revert port ranges for calls to sl2vl_update_table().
       [not found]                 ` <AANLkTimrixibqJWr4zIeSYRUH4-Y1_BOqOGCvuEMNOmQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2010-05-30 23:56                   ` Sasha Khapyorsky
  2010-06-01 14:56                     ` [PATCH v2] " Jim Schutt
  0 siblings, 1 reply; 7+ messages in thread
From: Sasha Khapyorsky @ 2010-05-30 23:56 UTC (permalink / raw)
  To: Jim Schutt
  Cc: Hal Rosenstock,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

Hi Jim,

On 11:57 Tue 25 May     , Hal Rosenstock wrote:
> 
> > --- 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.

Could you repost up to date version of the patch? Thanks.

Sasha
--
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2] opensm/qos.c: Revert port ranges for calls to sl2vl_update_table().
  2010-05-30 23:56                   ` Sasha Khapyorsky
@ 2010-06-01 14:56                     ` Jim Schutt
       [not found]                       ` <1275404212-5646-1-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Jim Schutt @ 2010-06-01 14:56 UTC (permalink / raw)
  To: linux-rdma-u79uwXL29TY76Z2rM5mHXA
  Cc: sashak-smomgflXvOZWk0Htik3J/w,
	hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w, Jim Schutt

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, which specifies the output port.

With the port ranges restored to their old values, the above log messages
stop.  Hal Rosenstock pointed out that we should not be attempting
to program a base SP0 with SL2VL maps; see, e.g.,  IBA 1.2.1, section
14.2.5.8, page 844.  So, this patch is a full reversion for
switches supporting base SP0, but only a partial reversion for
switches supporting enhanced SP0.

Signed-off-by: Jim Schutt <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
---
 opensm/opensm/osm_qos.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/opensm/opensm/osm_qos.c b/opensm/opensm/osm_qos.c
index f814ea8..cce59ee 100644
--- a/opensm/opensm/osm_qos.c
+++ b/opensm/opensm/osm_qos.c
@@ -230,10 +230,11 @@ 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++)
+		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;
-- 
1.6.2.2


--
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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2] opensm/qos.c: Revert port ranges for calls to sl2vl_update_table().
       [not found]                       ` <1275404212-5646-1-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
@ 2010-06-01 18:39                         ` Sasha Khapyorsky
  0 siblings, 0 replies; 7+ messages in thread
From: Sasha Khapyorsky @ 2010-06-01 18:39 UTC (permalink / raw)
  To: Jim Schutt
  Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w

On 08:56 Tue 01 Jun     , 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, which specifies the output port.
> 
> With the port ranges restored to their old values, the above log messages
> stop.  Hal Rosenstock pointed out that we should not be attempting
> to program a base SP0 with SL2VL maps; see, e.g.,  IBA 1.2.1, section
> 14.2.5.8, page 844.  So, this patch is a full reversion for
> switches supporting base SP0, but only a partial reversion for
> switches supporting enhanced SP0.
> 
> Signed-off-by: Jim Schutt <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>

Applied. Thanks.

Sasha
--
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-06-01 18:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1851_1274473140_o4LKDZ3n001852_1274473115-3153-1-git-send-email-jaschut@sandia.gov>
     [not found] ` <1851_1274473140_o4LKDZ3n001852_1274473115-3153-1-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2010-05-21 20:29   ` [PATCH] opensm/qos.c: Revert port ranges for calls to sl2vl_update_table() Jim Schutt
     [not found]     ` <1274473795.4773.43.camel-mgfCWIlwujvg4c9jKm7R2O1ftBKYq+Ku@public.gmane.org>
2010-05-24 18:03       ` Hal Rosenstock
     [not found]         ` <AANLkTimzCMA8sdpT7W7bpBnb0fqdEhA5I3j-6Vqc7S2L-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-05-24 21:42           ` Jim Schutt
     [not found]             ` <1274737321.4773.68.camel-mgfCWIlwujvg4c9jKm7R2O1ftBKYq+Ku@public.gmane.org>
2010-05-25 15:57               ` Hal Rosenstock
     [not found]                 ` <AANLkTimrixibqJWr4zIeSYRUH4-Y1_BOqOGCvuEMNOmQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-05-30 23:56                   ` Sasha Khapyorsky
2010-06-01 14:56                     ` [PATCH v2] " Jim Schutt
     [not found]                       ` <1275404212-5646-1-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2010-06-01 18:39                         ` Sasha Khapyorsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox