Hello,

When I use LIDs from the top LFT block (0xbfc0-0xbfff), I get an
assertion error from the function osm_switch_get_lft_block() which is
implemented in osm_switch.c.

The line is this one:
CL_ASSERT(base_lid_ho + IB_SMP_DATA_SIZE <= IB_LID_UCAST_END_HO);

In the topmost LFT block, the base_lid_ho has the value 49088 and the
IB_SMP_DATA_SIZE is 64. Together they add up to 49152 but the assertion
checks if they are less than 0xbfff (49151).

Shouldn't this line be something like the following?

CL_ASSERT(base_lid_ho + IB_SMP_DATA_SIZE - 1 <= IB_LID_UCAST_END_HO);

or

CL_ASSERT(base_lid_ho + IB_SMP_DATA_SIZE <= IB_LID_UCAST_END_HO + 1);

Cheers,
Vangelis

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to