<!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><SPAN class=734403708-28062009><FONT face=Arial color=#0000ff size=2>Aplied
in 2271.</FONT></SPAN></DIV><BR>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> ofw-bounces@lists.openfabrics.org
[mailto:ofw-bounces@lists.openfabrics.org] <B>On Behalf Of </B>Leonid
Keller<BR><B>Sent:</B> Wednesday, June 17, 2009 4:59 PM<BR><B>To:</B>
ofw@lists.openfabrics.org<BR><B>Subject:</B> [ofw][patch][IBAL] remove
unnecessary query_qp request duringmodify_qp<BR></FONT><BR></DIV>
<DIV></DIV>
<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></BLOCKQUOTE></BODY></HTML>