[ofa-general] [PATCH 3/3] opensm/vendor: handle guid = 0 with osm_vendor_bind()
Sasha Khapyorsky
sashak at voltaire.com
Thu Nov 15 01:03:04 PST 2007
Handle guid = 0 with osm_vendor_bind() and osm_vendor_open_port() -
just open default umad port.
Signed-off-by: Sasha Khapyorsky <sashak at voltaire.com>
---
opensm/libvendor/osm_vendor_ibumad.c | 43 +++++++++++++++++----------------
1 files changed, 22 insertions(+), 21 deletions(-)
diff --git a/opensm/libvendor/osm_vendor_ibumad.c b/opensm/libvendor/osm_vendor_ibumad.c
index 5668c5e..1d5f359 100644
--- a/opensm/libvendor/osm_vendor_ibumad.c
+++ b/opensm/libvendor/osm_vendor_ibumad.c
@@ -656,20 +656,25 @@ osm_vendor_open_port(IN osm_vendor_t * const p_vend,
IN const ib_net64_t port_guid)
{
ib_net64_t portguids[OSM_UMAD_MAX_PORTS_PER_CA + 1];
- int i = 0, umad_port_id = -1, found = 0;
+ int i = 0, umad_port_id = -1;
+ char *name;
int ca, r;
CL_ASSERT(p_vend);
OSM_LOG_ENTER(p_vend->p_log, osm_vendor_open_port);
- CL_ASSERT(port_guid);
-
if (p_vend->umad_port_id >= 0) {
umad_port_id = p_vend->umad_port_id;
goto Exit;
}
+ if (!port_guid) {
+ name = NULL;
+ i = 0;
+ goto _found;
+ }
+
for (ca = 0; ca < p_vend->ca_count; ca++) {
if ((r = umad_get_ca_portguids(p_vend->ca_names[ca],
portguids,
@@ -680,37 +685,33 @@ osm_vendor_open_port(IN osm_vendor_t * const p_vend,
p_vend->ca_names[ca], strerror(r));
goto Exit;
}
-
for (i = 0; i < r; i++)
if (port_guid == portguids[i]) {
- found = 1;
- break;
+ name = p_vend->ca_names[ca];
+ goto _found;
}
-
- if (found)
- break;
}
- if (!found) {
- /*
- * No local CA owns this guid!
- */
- osm_log(p_vend->p_log, OSM_LOG_ERROR,
- "osm_vendor_open_port: ERR 5422: "
- "Unable to find requested CA guid 0x%" PRIx64 "\n",
- cl_ntoh64(port_guid));
- goto Exit;
- }
+ /*
+ * No local CA owns this guid!
+ */
+ osm_log(p_vend->p_log, OSM_LOG_ERROR,
+ "osm_vendor_open_port: ERR 5422: "
+ "Unable to find requested CA guid 0x%" PRIx64 "\n",
+ cl_ntoh64(port_guid));
+ goto Exit;
+_found:
/* Port found, try to open it */
- if (umad_get_port(p_vend->ca_names[ca], i, &p_vend->umad_port) < 0) {
+ if (umad_get_port(name, i, &p_vend->umad_port) < 0) {
osm_log(p_vend->p_log, OSM_LOG_ERROR,
"osm_vendor_open_port: ERR 542B: "
"umad_get_port() failed\n");
goto Exit;
}
- if ((umad_port_id = umad_open_port(p_vend->ca_names[ca], i)) < 0) {
+ if ((umad_port_id = umad_open_port(p_vend->umad_port.ca_name,
+ p_vend->umad_port.portnum)) < 0) {
osm_log(p_vend->p_log, OSM_LOG_ERROR,
"osm_vendor_open_port: ERR 542C: "
"umad_open_port() failed\n");
--
1.5.3.rc2.29.gc4640f
More information about the general
mailing list