<!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.3243" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT size=2><FONT size=1>
<P><FONT face=Arial><FONT size=2>HCA API of modify_qp contains an optional
parameter of qp_attr.<SPAN class=796305413-17062009> </SPAN></FONT></FONT></P>
<P><FONT face=Arial><FONT size=2><SPAN
class=796305413-17062009></SPAN></FONT></FONT><FONT face=Arial size=2>If it is
coded, modify_qp makes internally a query_qp request to low-level driver and
returns QP attributes.</FONT></P>
<P><FONT face=Arial size=2>IBAL codes this parameter, but do not use the
returned QP attributes.</FONT></P>
<P><FONT face=Arial size=2>It causes unnecessary query_qp request to low-level
driver and possible racy scenarios.</FONT></P></FONT></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Index:
core/al/al_qp.c<BR>===================================================================<BR>---
core/al/al_qp.c (revision 2256)<BR>+++ core/al/al_qp.c (working
copy)<BR>@@ -1332,7 +1332,6
@@<BR> IN OUT ci_umv_buf_t*
const p_umv_buf
)<BR> {<BR> ib_api_status_t status;<BR>- ib_qp_attr_t qp_attr;<BR> <BR> CL_ASSERT(
h_qp );<BR> <BR>@@ -1350,7 +1349,7 @@<BR> #endif /* CL_KERNEL
*/<BR> <BR> /* Modify the actual QP attributes.
*/<BR>- status = verbs_modify_qp( h_qp, p_qp_mod, qp_attr
);<BR>+ status = verbs_modify_qp( h_qp, p_qp_mod, NULL
);<BR> <BR> /* Record the QP state if the modify was successful.
*/<BR> if( status == IB_SUCCESS )<BR>Index:
core/al/al_verbs.h<BR>===================================================================<BR>---
core/al/al_verbs.h (revision 2256)<BR>+++ core/al/al_verbs.h (working
copy)<BR>@@ -333,9 +333,9
@@<BR> h_qp->obj.p_ci_ca->verbs.query_qp(
h_qp->h_ci_qp,\<BR> p_qp_attr, p_umv_buf
)<BR> <BR>-#define verbs_modify_qp(h_qp, p_qp_mod, qp_attr) \<BR>+#define
verbs_modify_qp(h_qp, p_qp_mod, p_qp_attr)
\<BR> h_qp->obj.p_ci_ca->verbs.modify_qp(
h_qp->h_ci_qp,\<BR>- p_qp_mod, &qp_attr, p_umv_buf
)<BR>+ p_qp_mod, p_qp_attr, p_umv_buf )<BR> <BR> #define
verbs_ndi_modify_qp(h_qp, p_qp_mod, qp_attr, buf_size, p_buf)
\<BR> h_qp->obj.p_ci_ca->verbs.ndi_modify_qp(
h_qp->h_ci_qp,\<BR>@@ -593,8 +593,8 @@<BR> ual_query_qp(h_qp,
p_qp_attr); \<BR> UNUSED_PARAM( p_umv_buf );<BR> <BR>-#define
verbs_modify_qp(h_qp, p_qp_mod, qp_attr) \<BR>- ual_modify_qp(h_qp,
p_qp_mod, &qp_attr); \<BR>+#define verbs_modify_qp(h_qp, p_qp_mod,
p_qp_attr) \<BR>+ ual_modify_qp(h_qp, p_qp_mod, p_qp_attr);
\<BR> UNUSED_PARAM( p_umv_buf );<BR> <BR> #define
verbs_post_send(h_qp, p_send_wr, pp_send_failure)
\<BR></FONT></DIV></BODY></HTML>