[ofa-general] [PATCH 1/3] libvendor: osm_vendor_get_all_port_attr() rework

Sasha Khapyorsky sashak at voltaire.com
Tue Jan 8 11:44:57 PST 2008


On 08:58 Tue 08 Jan     , Hal Rosenstock wrote:
> 
> Yes, but it goes further than checking in tree consumers and not
> everyone is paying attention all the time or running complete
> regressions frequently so this wasn't found until recently.
> 
> This change broke autoselection on a machine running OpenSM with a
> combination of IB and iWARP adapters as it selected an iWARP adapter and
> exited.

Right, after reviewing this code again I see that it is possible
failure.

> If we care about continuing to support this feature, I suppose code
> might be able to be added to OpenSM main.c to handle this rather than it
> being in a lower layer as it was before.

We don't have appropriate indication in the vendor layer. I think non-IB
devices can be filtered out in osm_vendor_get_all_port_attr(), something
like this:

diff --git a/opensm/libvendor/osm_vendor_ibumad.c b/opensm/libvendor/osm_vendor_ibumad.c
index 522325b..977a3b2 100644
--- a/opensm/libvendor/osm_vendor_ibumad.c
+++ b/opensm/libvendor/osm_vendor_ibumad.c
@@ -571,6 +571,8 @@ osm_vendor_get_all_port_attr(IN osm_vendor_t * const p_vend,
 		 * For each CA, retrieve the port guids
 		 */
 		if (umad_get_ca(p_vend->ca_names[i], &ca) == 0) {
+			if (ca.node_type < 1 || ca.node_type > 3)
+				continue;
 			for (j = 0; j <= ca.numports; j++) {
 				if (!ca.ports[j])
 					continue;

Sasha



More information about the general mailing list