<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:st1 = 
"urn:schemas-microsoft-com:office:smarttags" xmlns:w = 
"urn:schemas-microsoft-com:office:word" xmlns:o = 
"urn:schemas-microsoft-com:office:office"><HEAD><!--[if !mso]> 
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<STYLE>
st1\:*{behavior:url(#default#ieooui) }
</STYLE>
<![endif]-->
<STYLE>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</STYLE>

<META content="MSHTML 6.00.2900.3268" name=GENERATOR></HEAD>
<BODY lang=EN-US vLink=purple link=blue>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=091310808-14042008>Hi,</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=091310808-14042008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=091310808-14042008>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=091310808-14042008>The 
patch removes the #if 0 sanity check and add one check of p_qp_create 
pointer.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=091310808-14042008></SPAN></FONT> </DIV></SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=091310808-14042008>I 
looked at IB spec and there isn't forbiddance of qp with sq depth of 0 
</SPAN></FONT><FONT face=Arial color=#0000ff size=2><SPAN 
class=091310808-14042008>(Although the low level driver will set it to 
1).</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=091310808-14042008>Thanks 
for demonstrate one case of such use.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=091310808-14042008>The 
sanity check is promoted from create_qp() (core\al_qp.c # 281) which 
is called at the end of ib_create_qp.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=091310808-14042008>Crash 
the app or assert the pointer </SPAN></FONT><FONT face=Arial color=#0000ff 
size=2><SPAN class=091310808-14042008>is one way but IBAL 
performs </SPAN></FONT><FONT face=Arial color=#0000ff size=2><SPAN 
class=091310808-14042008>sanity checks all over the code and adhere 
this will be more consistent.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=091310808-14042008></SPAN></FONT><FONT face=Arial color=#0000ff 
size=2><SPAN class=091310808-14042008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=091310808-14042008>Reuven.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=091310808-14042008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=091310808-14042008>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>Index: core/al/al_pd.c<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>===================================================================<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>--- core/al/al_pd.c<SPAN 
style="mso-tab-count: 1">     </SPAN>(revision 
1049)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>+++ core/al/al_pd.c<SPAN 
style="mso-tab-count: 1">     </SPAN>(working 
copy)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>@@ -333,24 +333,11 @@<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000><SPAN style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-tab-count: 2">           
</SPAN>AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, 
("IB_INVALID_PD_HANDLE\n") );<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000><SPAN style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-tab-count: 2">           
</SPAN>return IB_INVALID_PD_HANDLE;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000><SPAN style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-tab-count: 1">     
</SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-#if 0<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN style="mso-tab-count: 1">     </SPAN>/* 
seems like no need in these checks */<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN style="mso-tab-count: 1">     
</SPAN>if( !p_qp_create->rq_depth || !p_qp_create->sq_depth 
)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>+<SPAN style="mso-tab-count: 1">     
</SPAN>if( !p_qp_create || !ph_qp )<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000><SPAN style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-tab-count: 1">     
</SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN 
style="mso-tab-count: 2">           
</SPAN>AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_MAX_WRS 
(%d:%d)\n",<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN 
style="mso-tab-count: 3">                 
</SPAN>p_qp_create->rq_depth, p_qp_create->sq_depth ) 
);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN 
style="mso-tab-count: 2">           
</SPAN>return IB_INVALID_MAX_WRS;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>+<SPAN 
style="mso-tab-count: 2">           
</SPAN>AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, 
("IB_INVALID_PARAMETER\n") );<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>+<SPAN 
style="mso-tab-count: 2">           
</SPAN>return IB_INVALID_PARAMETER;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000><SPAN style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-tab-count: 1">     
</SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN style="mso-tab-count: 1">     
</SPAN>if( !p_qp_create->rq_sge || 
!p_qp_create->sq_sge)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN style="mso-tab-count: 1">     
</SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN 
style="mso-tab-count: 2">           
</SPAN>AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_MAX_SGE 
(%d:%d)\n", <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN 
style="mso-tab-count: 3">                 
</SPAN>p_qp_create->rq_sge, p_qp_create->sq_sge ) 
);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN 
style="mso-tab-count: 2">           
</SPAN>return IB_INVALID_MAX_SGE;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<SPAN style="mso-tab-count: 1">     
</SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-#endif<SPAN style="mso-tab-count: 1">     
</SPAN><o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000>-<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000><SPAN style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-tab-count: 1">     </SPAN>if 
(h_pd->obj.p_ci_ca && 
h_pd->obj.p_ci_ca->p_pnp_attr)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000><SPAN style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-tab-count: 1">     
</SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><FONT 
color=#000000><SPAN style="mso-spacerun: yes"> </SPAN><SPAN 
style="mso-tab-count: 2">           
</SPAN>if ((p_qp_create->rq_depth > 
h_pd->obj.p_ci_ca->p_pnp_attr->max_wrs) ||<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal 
style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-language: AR-SA"><o:p><FONT 
color=#000000> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT 
color=#000000> </FONT></o:p></P></SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV><BR></DIV>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> Sean Hefty [mailto:sean.hefty@intel.com] 
<BR><B>Sent:</B> Thursday, April 10, 2008 9:20 PM<BR><B>To:</B> Reuven Amitai; 
ofw@lists.openfabrics.org<BR><B>Subject:</B> RE: [ofw] [PATCH] core 
[4/5]<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV class=Section1>
<DIV 
style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: blue 1.5pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: medium none">
<DIV>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>Index: 
core/al/al_pd.c<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>===================================================================<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>--- 
core/al/al_pd.c    (revision 1047)<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>+++ 
core/al/al_pd.c    (working copy)<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>@@ -333,24 +333,22 
@@<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>           
AL_PRINT_EXIT( TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PD_HANDLE\n") 
);<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>           return 
IB_INVALID_PD_HANDLE;<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>     
}<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>-<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>-#if 
0<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>-    /* 
seems like no need in these checks */<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>-    if( 
!p_qp_create->rq_depth || !p_qp_create->sq_depth 
)<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>+    if( 
!p_qp_create || !ph_qp )<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " Courier 
New?;color:navy?><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">These sort of checks 
are pointless.  There’s nothing that can be done at run time. 
 C<st1:PersonName w:st="on">ras</st1:PersonName>h the app so that they get 
a backtrace and force the programmer to fix them.<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>     
{<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>-          AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR, 
("IB_INVALID_<U1:STOCKTICKER>MAX</U1:STOCKTICKER>_<U1:STOCKTICKER>WRS</U1:STOCKTICKER> 
(%d:%d)\n",<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>-                
p_qp_create->rq_depth, p_qp_create->sq_depth ) 
);<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>-          return 
IB_INVALID_<U1:STOCKTICKER>MAX</U1:STOCKTICKER>_<U1:STOCKTICKER>WRS</U1:STOCKTICKER>;<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>+          AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_PARAMETER\n") 
);<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>+          return 
IB_INVALID_PARAMETER;<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>     
}<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>-<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>-    if( 
!p_qp_create->rq_sge || !p_qp_create->sq_sge)<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>+    if( 
!p_qp_create->rq_depth &&  !p_qp_create->sq_depth 
)<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " Courier 
New?;color:navy?><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Couldn’t a QP that’s 
the target of RDMA reads/writes support depths of 0 on both?  The RDMA 
target information can be exchanged out of bounds or during connection 
establishment.  (I know that Intel MPI exchanges RKey information during 
connection setup.)<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>     
{<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>-          AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR, 
("IB_INVALID_<U1:STOCKTICKER>MAX</U1:STOCKTICKER>_SGE (%d:%d)\n", 
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>-                
p_qp_create->rq_sge, p_qp_create->sq_sge ) );<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>-          return 
IB_INVALID_<U1:STOCKTICKER>MAX</U1:STOCKTICKER>_SGE;<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>+          AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_SETTING\n") 
);<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>+          return 
IB_INVALID_SETTING;<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>     
}<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>-#endif    
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>+    if( 
!p_qp_create->rq_sge && 
!p_qp_create->sq_sge)<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>+    
{<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">These checks are 
related to checks against rq_depth and sq_depth, 
respectively.<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>+          AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR, ("IB_INVALID_SETTING\n") 
);<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>+          return 
IB_INVALID_SETTING;<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier> <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>+    
}<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>     if 
(h_pd->obj.p_ci_ca && 
h_pd->obj.p_ci_ca->p_pnp_attr)<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? Courier>     
{<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier>           if 
((p_qp_create->rq_depth > h_pd->obj.p_ci_ca->p_pnp_attr->max_wrs) 
||<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN 
style="FONT-SIZE: 10pt; FONT-FAMILY: " New?? 
Courier><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=navy size=3><SPAN 
style="FONT-SIZE: 12pt; COLOR: navy"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">- 
Sean<o:p></o:p></SPAN></FONT></P></DIV></DIV></DIV></BODY></HTML>