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,
Yael

Signed-off-by:  Yael Kalka <[EMAIL PROTECTED]>

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;

_______________________________________________
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to