<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.5659" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN class=570522418-10122008>While experimenting
with the APIs in opensm/libvendor, I was unable to get the path record queries
to work. Reviewing the error logs from the SM, I discovered that the APIs were
not setting the required num_path field. Here's the fix:</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=570522418-10122008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=570522418-10122008>---
osm_vendor_ibumad_sa.bak 2008-12-10 13:21:22.000000000
-0500<BR>+++ osm_vendor_ibumad_sa.c 2008-12-10
13:24:42.000000000 -0500<BR>@@ -615,7 +615,7
@@<BR>
sa_mad_data.attr_offset
=<BR>
ib_get_attr_offset(sizeof(ib_path_rec_t));<BR>
sa_mad_data.comp_mask
=<BR>-
(IB_PR_COMPMASK_DGID |
IB_PR_COMPMASK_SGID);<BR>+
(IB_PR_COMPMASK_DGID | IB_PR_COMPMASK_SGID |
IB_PR_COMPMASK_NUMBPATH);<BR>
sa_mad_data.p_attr =
&path_rec;<BR>
ib_gid_set_default(&path_rec.dgid,<BR>
((osmv_guid_pair_t *) (p_query_req-><BR>@@ -625,6 +625,7
@@<BR>
((osmv_guid_pair_t *)
(p_query_req-><BR>
p_query_input))-><BR>
src_guid);<BR>+
path_rec.num_path =
1;<BR>
break;</SPAN></FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2><SPAN
class=570522418-10122008> case
OSMV_QUERY_PATH_REC_BY_GIDS:<BR>@@ -634,7 +635,7
@@<BR>
sa_mad_data.attr_offset
=<BR>
ib_get_attr_offset(sizeof(ib_path_rec_t));<BR>
sa_mad_data.comp_mask
=<BR>-
(IB_PR_COMPMASK_DGID |
IB_PR_COMPMASK_SGID);<BR>+
(IB_PR_COMPMASK_DGID | IB_PR_COMPMASK_SGID |
IB_PR_COMPMASK_NUMBPATH);<BR>
sa_mad_data.p_attr =
&path_rec;<BR>
memcpy(&path_rec.dgid,<BR>
&((osmv_gid_pair_t *) (p_query_req->p_query_input))-><BR>@@ -642,6
+643,7
@@<BR>
memcpy(&path_rec.sgid,<BR>
&((osmv_gid_pair_t *)
(p_query_req->p_query_input))-><BR>
src_gid,
sizeof(ib_gid_t));<BR>+
path_rec.num_path =
1;<BR>
break;</SPAN></FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2><SPAN
class=570522418-10122008> case
OSMV_QUERY_PATH_REC_BY_LIDS:<BR>@@ -652,13 +654,14
@@<BR>
sa_mad_data.attr_offset
=<BR>
ib_get_attr_offset(sizeof(ib_path_rec_t));<BR>
sa_mad_data.comp_mask
=<BR>-
(IB_PR_COMPMASK_DLID |
IB_PR_COMPMASK_SLID);<BR>+
(IB_PR_COMPMASK_DLID | IB_PR_COMPMASK_SLID |
IB_PR_COMPMASK_NUMBPATH);<BR>
sa_mad_data.p_attr =
&path_rec;<BR>
path_rec.dlid
=<BR>
((osmv_lid_pair_t *)
(p_query_req->p_query_input))-><BR>
dest_lid;<BR>
path_rec.slid
=<BR>
((osmv_lid_pair_t *)
(p_query_req->p_query_input))->src_lid;<BR>+
path_rec.num_path =
1;<BR>
break;</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN
class=570522418-10122008> case
OSMV_QUERY_UD_MULTICAST_SET:<BR></SPAN></FONT><FONT face=Arial size=2><SPAN
class=570522418-10122008>---
osm_vendor_mlx_sa.bak 2008-12-10
13:21:10.000000000 -0500<BR>+++ osm_vendor_mlx_sa.c 2008-12-10
13:24:07.000000000 -0500<BR>@@ -743,7 +743,7
@@<BR>
sa_mad_data.attr_offset
=<BR>
ib_get_attr_offset(sizeof(ib_path_rec_t));<BR>
sa_mad_data.comp_mask
=<BR>-
(IB_PR_COMPMASK_DGID |
IB_PR_COMPMASK_SGID);<BR>+
(IB_PR_COMPMASK_DGID | IB_PR_COMPMASK_SGID |
IB_PR_COMPMASK_NUMBPATH);<BR>
sa_mad_data.p_attr =
&path_rec;<BR>
ib_gid_set_default(&path_rec.dgid,<BR>
((osmv_guid_pair_t *) (p_query_req-><BR>@@ -753,6 +753,7
@@<BR>
((osmv_guid_pair_t *)
(p_query_req-><BR>
p_query_input))-><BR>
src_guid);<BR>+
path_rec.num_path =
1;<BR>
break;</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN
class=570522418-10122008> case
OSMV_QUERY_PATH_REC_BY_GIDS:<BR>@@ -763,7 +764,7
@@<BR>
sa_mad_data.attr_offset
=<BR>
ib_get_attr_offset(sizeof(ib_path_rec_t));<BR>
sa_mad_data.comp_mask
=<BR>-
(IB_PR_COMPMASK_DGID |
IB_PR_COMPMASK_SGID);<BR>+
(IB_PR_COMPMASK_DGID | IB_PR_COMPMASK_SGID |
IB_PR_COMPMASK_NUMBPATH);<BR>
sa_mad_data.p_attr =
&path_rec;<BR>
memcpy(&path_rec.dgid,<BR>
&((osmv_gid_pair_t *) (p_query_req->p_query_input))-><BR>@@ -771,6
+772,7
@@<BR>
memcpy(&path_rec.sgid,<BR>
&((osmv_gid_pair_t *)
(p_query_req->p_query_input))-><BR>
src_gid,
sizeof(ib_gid_t));<BR>+
path_rec.num_path =
1;<BR>
break;</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN
class=570522418-10122008> case
OSMV_QUERY_PATH_REC_BY_LIDS:<BR>@@ -789,6 +791,7
@@<BR>
dest_lid;<BR>
path_rec.slid
=<BR>
((osmv_lid_pair_t *)
(p_query_req->p_query_input))->src_lid;<BR>+
path_rec.num_path =
1;<BR>
break;</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN
class=570522418-10122008> case
OSMV_QUERY_UD_MULTICAST_SET:<BR></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV align=left><FONT face=Arial size=2>--</FONT></DIV>
<DIV align=left><FONT face=Arial size=2>Michael Heinz</FONT></DIV>
<DIV align=left><FONT face=Arial size=2>Principal Engineer, Qlogic
Corporation</FONT></DIV>
<DIV align=left><FONT face=Arial size=2>King of Prussia,
Pennsylvania</FONT></DIV>
<DIV><SPAN class=570522418-10122008><FONT face=Arial
size=2> </FONT></SPAN></DIV></BODY></HTML>