[ofa-general] [PATCH] libmlx4: Fix the value of the pkey_index in the completion
Sasha Khapyorsky
sashak at voltaire.com
Mon Jan 14 14:46:25 PST 2008
On 11:31 Mon 14 Jan , Dotan Barak wrote:
> >>>
> >> Just to make sure that everything is clear: I checked that the mthca low
> >> level driver can extract
> >> the right pkey_index in the completion of GSI QP.
> >>
> >> The problem that Yevgeny mentioned exists in the openSM and i opened a
> >> bug on this issue.
> >>
> >
> > I tried mthca connected back-to-back (between ports 1 and 2). When
> > non-default P_Key value is configured (at any index, full membership on
> > both ports pkey tables and no 0xffff), saquery is timed out and trap 257
> > (Bad P_Key) is reported to OpenSM.
> >
> > I'm using kernel 2.6.24-rc7-gcdf71a10 and FW 3.2.000. Could this be old
> > FW issue?
> >
> This is a really old FW and you should consider updating it ...
Actually everything works fine now (even with old FW) - it was a bug in
my test yesterday.
> What exactly did you do (and how)?
I'm using this in order to enforce saquery to use non-zero pkey index:
diff --git a/opensm/libvendor/osm_vendor_ibumad_sa.c b/opensm/libvendor/osm_vendor_ibumad_sa.c
index 24f70bb..f23e67d 100644
--- a/opensm/libvendor/osm_vendor_ibumad_sa.c
+++ b/opensm/libvendor/osm_vendor_ibumad_sa.c
@@ -440,6 +440,7 @@ __osmv_send_sa_req(IN osmv_sa_bind_info_t * p_bind,
p_madw->mad_addr.addr_type.smi.source_lid =
cl_hton16(p_bind->p_vendor->umad_port.base_lid);
p_madw->mad_addr.addr_type.gsi.remote_qp = CL_HTON32(1);
+ p_madw->mad_addr.addr_type.gsi.pkey = 1;
p_madw->resp_expected = TRUE;
p_madw->fail_msg = CL_DISP_MSGID_NONE;
>
> I have troubles to set the pkey table in the subnet to not use the default
> pkey.
This will prevent from OpenSM to create/update 0xffff P_Key:
diff --git a/opensm/opensm/osm_prtn.c b/opensm/opensm/osm_prtn.c
index 15a9c2a..bfb682f 100644
--- a/opensm/opensm/osm_prtn.c
+++ b/opensm/opensm/osm_prtn.c
@@ -368,9 +368,11 @@ ib_api_status_t osm_prtn_make_partitions(osm_log_t * const p_log,
global_pkey_counter = 0;
+#if 0
status = osm_prtn_make_default(p_log, p_subn, !is_config);
if (status != IB_SUCCESS)
goto _err;
+#endif
if (is_config && osm_prtn_config_parse_file(p_log, p_subn, file_name)) {
osm_log(p_log, OSM_LOG_VERBOSE,
And with it I'm using partition config file to create various test
cases. Something like:
#Default=0xffff: ALL=limi ;
#P1=0x8001 : ALL = full ;
P2=0x0002 : ALL = limi, SELF=full ;
P3=0x0003 : ALL ;
Sasha
More information about the general
mailing list