[ofa-general] [PATCH] osm_port.c: do not force max_op_vls = 0 to 1

Hal Rosenstock hal.rosenstock at gmail.com
Tue May 5 11:30:45 PDT 2009


On Tue, May 5, 2009 at 10:45 AM, Eli Dorfman (Voltaire)
<dorfman.eli at gmail.com> wrote:
> Hal Rosenstock wrote:
>> On Tue, May 5, 2009 at 9:48 AM, Eli Dorfman (Voltaire)
>> <dorfman.eli at gmail.com> wrote:
>>> Hal Rosenstock wrote:
>>>> On Tue, May 5, 2009 at 9:00 AM, Doron Shoham <dorons at voltaire.com> wrote:
>>>>> when setting max_op_vls = 0
>>>>> do not force it to 1.
>>>>> 0 is valid value which means "No change"
>>>>>
>>>>> Signed-off-by: Doron Shoham <dorons at voltaire.com>
>>>>> ---
>>>>>  opensm/opensm/osm_port.c   |    6 ------
>>>>>  opensm/opensm/osm_subnet.c |    8 ++++++++
>>>>>  2 files changed, 8 insertions(+), 6 deletions(-)
>>>>>
>>>>> diff --git a/opensm/opensm/osm_port.c b/opensm/opensm/osm_port.c
>>>>> index 2e6c642..db0c27e 100644
>>>>> --- a/opensm/opensm/osm_port.c
>>>>> +++ b/opensm/opensm/osm_port.c
>>>>> @@ -380,12 +380,6 @@ uint8_t osm_physp_calc_link_op_vls(IN osm_log_t * p_log,
>>>>>        if (op_vls > p_subn->opt.max_op_vls)
>>>>>                op_vls = p_subn->opt.max_op_vls;
>>>>>
>>>>> -       if (op_vls == 0) {
>>>>> -               OSM_LOG(p_log, OSM_LOG_DEBUG, "ERR 4102: "
>>>>> -                       "Invalid OP_VLS = 0. Forcing correction to 1 (VL0)\n");
>>>>> -               op_vls = 1;
>>>>> -       }
>>>>> -
>>>> Should that only be done when max_op_vls is 0 ?
>>>>
>>>> Something like:
>>>>            if (op_vls > p_subn->opt.max_op_vls)
>>>>                 op_vls = p_subn->opt.max_op_vls;
>>>>            else if (op_vls == 0) {
>>>>                OSM_LOG(p_log, OSM_LOG_DEBUG, "ERR 4102: "
>>>>                        "Invalid OP_VLS = 0. Forcing correction to 1 (VL0)\n");
>>>>                op_vls = 1;
>>>>           }
>>> why do you suggest a special case for op_vls=0 (and not for other portinfo fields)?
>>
>>> is there a firmware bug that reports op_vls=0?
>>
>> There were (still are ?) implementations which returned op_vls 0 which
>> is why the words "valid on Set()" were added to the IBA spec and why I
>> don't feel safe removing the code as originally proposed but think my
>> alternative is safe and accomplishes the stated goal. Is there a
>> problem with my alternative proposal ?
>
> no, but there are other fields in portinfo that are not validated.

Yes, there's some inconsistency here but it's based on field experience.

> for example link_speed_enabled (which allows 0 value only on Set as well).

Yes, but this field had the specific issue I noted and 0 being
returned on get was never observed on any of the other fields where 0
is valid on set (added there as well).

> also if a node returns op_vl=0 how do you know it supports op_vl=1?

op_vls 1 is always safe as at least 1 data VL must be supported. It's
just that possibly more op vls could have been supported if things had
been compliant.

-- Hal

> Eli



More information about the general mailing list