[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
Mon Dec 3 07:52:04 PST 2007


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




More information about the general mailing list