[ofa-general] Re: [PATCH 2/3] opensm: adding missing comparison by to_lid/from_lid in LinkRecord processing

Yevgeny Kliteynik kliteyn at dev.mellanox.co.il
Tue Dec 4 00:13:02 PST 2007


Yevgeny Kliteynik wrote:
> Hal Rosenstock wrote:
>> On Mon, 2007-12-03 at 17:15 +0200, Yevgeny Kliteynik wrote:
>>> Sasha Khapyorsky wrote:
>>>> Hi Yevgeny,
>>>>
>>>> On 14:15 Sun 02 Dec     , Yevgeny Kliteynik wrote:
>>>>> Comparison for IB_LR_COMPMASK_FROM_LID/IB_LR_COMPMASK_TO_LID
>>>>> component mask bits was missing in LinkRecord processing.
>>>>>
>>>>> Signed-off-by: Yevgeny Kliteynik <kliteyn at dev.mellanox.co.il>
>>>>> ---
>>>>>  opensm/opensm/osm_sa_link_record.c |   13 +++++++++++--
>>>>>  1 files changed, 11 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/opensm/opensm/osm_sa_link_record.c 
>>>>> b/opensm/opensm/osm_sa_link_record.c
>>>>> index ba52aea..0970ad7 100644
>>>>> --- a/opensm/opensm/osm_sa_link_record.c
>>>>> +++ b/opensm/opensm/osm_sa_link_record.c
>>>>> @@ -256,6 +256,17 @@ __osm_lr_rcv_get_physp_link(IN osm_lr_rcv_t * 
>>>>> const p_rcv,
>>>>>          if (dest_port_num != p_lr->to_port_num)
>>>>>              goto Exit;
>>>>>
>>>>> +    __get_base_lid(p_src_physp, &from_base_lid);
>>>>> +    __get_base_lid(p_dest_physp, &to_base_lid);
>>>>> +
>>>>> +    if (comp_mask & IB_LR_COMPMASK_FROM_LID)
>>>>> +        if (from_base_lid != p_lr->from_lid)
>>>>> +            goto Exit;
>>>>> +
>>>>> +    if (comp_mask & IB_LR_COMPMASK_TO_LID)
>>>>> +        if (to_base_lid != p_lr->to_lid)
>>>>> +            goto Exit;
>>>> Would this be correct LMC > 0? As far as I understand aliased (not 
>>>> based)
>>>> LIDs can be used in a query.
>>> Good catch, thanks.
>>
>> Note that:
>> In a query request, any LID of a port can be requested as the ToLID. In
>> a query response, only the base LID of a port is returned as the ToLID.
> 
> Right.
> So in the current implementation it does build response with only base
> lids, but it will include more than one LinkRecord with the base lids
> in the resulting list - one for each lid when LMC>0...

I take it back.
Looks OK (apart from the lmc_mask issue).

-- Yevgeny

> I'll repost the patch.
> 
> -- Yevgeny
> 
>> -- Hal
>>
>>> -- Yevgeny
>>>
>>>> Sasha
>>>>
>>>>> +
>>>>>      if (osm_log_is_active(p_rcv->p_log, OSM_LOG_DEBUG))
>>>>>          osm_log(p_rcv->p_log, OSM_LOG_DEBUG,
>>>>>              "__osm_lr_rcv_get_physp_link: "
>>>>> @@ -267,8 +278,6 @@ __osm_lr_rcv_get_physp_link(IN osm_lr_rcv_t * 
>>>>> const p_rcv,
>>>>>              cl_ntoh64(osm_physp_get_port_guid(p_dest_physp)),
>>>>>              dest_port_num);
>>>>>
>>>>> -    __get_base_lid(p_src_physp, &from_base_lid);
>>>>> -    __get_base_lid(p_dest_physp, &to_base_lid);
>>>>>
>>>>>      __osm_lr_rcv_build_physp_link(p_rcv, from_base_lid,
>>>>>                        to_base_lid, src_port_num,
>>>>> -- 
>>>>> 1.5.1.4
>>>>>
>>> _______________________________________________
>>> general mailing list
>>> general at lists.openfabrics.org
>>> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
>>>
>>> To unsubscribe, please visit 
>>> http://openib.org/mailman/listinfo/openib-general
>>
> 
> _______________________________________________
> general mailing list
> general at lists.openfabrics.org
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
> 
> To unsubscribe, please visit 
> http://openib.org/mailman/listinfo/openib-general
> 




More information about the general mailing list