<!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>