[openib-general] Re: Re[PATCH] Opensm - running on system with 2 hcas
Hal Rosenstock
halr at voltaire.com
Thu Jan 5 11:10:54 PST 2006
On Thu, 2006-01-05 at 03:24, Yael Kalka wrote:
> Hi Hal,
>
> When trying to run OpenSM on a system with 2 hca cards, we noticed
> that there is a problem with the osm_vendor_get_all_port_attr.
> What happens is that we are saving the port 0 for each hca, though
> this data is relevant for the default port only once.
> The result is that if running with -g 0, we get 5 ports instead of 4,
> and the third port (which was the data copied as the default port for
> the second hca) is not valid.
> The following patch fixes this.
Thanks. Applied by hand (please double check). You patch was rejected.
This seems to happen a fair bit.
-- Hal
> Thanks,
> Yael
>
> Signed-off-by: Yael Kalka <yael at mellanox.co.il>
>
> Index: libvendor/osm_vendor_ibumad.c
> ===================================================================
> --- libvendor/osm_vendor_ibumad.c (revision 4760)
> +++ libvendor/osm_vendor_ibumad.c (working copy)
> @@ -637,18 +637,24 @@ osm_vendor_get_all_port_attr(
> umad_release_port(&def_port);
> }
>
> + j = 0;
> if (p_attr_array) {
> /* set the port guid, lid, and sm lid in the port attr struct */
> for (i = 0; i < *p_num_ports; i++) {
> - p_attr_array[i].port_guid = portguids[i];
> - p_attr_array[i].lid = lids[i];
> - if (i == 0)
> - p_attr_array[i].sm_lid = sm_lid;
> + if (i > 0 && portguids[i] == 0) {
> + continue;
> + }
> + p_attr_array[j].port_guid = portguids[i];
> + p_attr_array[j].lid = lids[i];
> + if (j == 0)
> + p_attr_array[j].sm_lid = sm_lid;
> else
> - p_attr_array[i].sm_lid = p_vend->umad_port.sm_lid;
> - p_attr_array[i].link_state = linkstates[i];
> + p_attr_array[j].sm_lid = p_vend->umad_port.sm_lid;
> + p_attr_array[j].link_state = linkstates[i];
> + j++;
> }
> r = 0;
> + *p_num_ports = j;
> } else
> r = IB_INSUFFICIENT_MEMORY;
>
More information about the general
mailing list