<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=WordSection1>

<p class=MsoNormal><span style='color:#1F497D'>If you are going to include a
change in RC4, I think it would be good to check in the associated code – that way
the RC4 code is available in SVN somewhere.  If the patch ends up causing
issues, it can be rolled back or fixed at that point.  This helps users that
might build a tweaked version of what they think is RC4, without missing some
potentially important change.<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>-Fab<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
ofw-bounces@lists.openfabrics.org [mailto:ofw-bounces@lists.openfabrics.org] <b>On
Behalf Of </b>Smith, Stan<br>
<b>Sent:</b> Thursday, October 07, 2010 9:07 AM<br>
<b>To:</b> Tzachi Dar; ofw@lists.openfabrics.org<br>
<b>Subject:</b> Re: [ofw] [Patch][IPoIB_NIDS6_CM] Adding shutter_shut for
Adapter Reset flow<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p> </o:p></p>

<div class=MsoNormal align=center style='text-align:center'><span
style='font-size:12.0pt;font-family:"Times New Roman","serif"'>

<hr size=2 width="100%" align=center>

</span></div>

<p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:10.0pt;
font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;
font-family:"Tahoma","sans-serif"'> Tzachi Dar [mailto:tzachid@mellanox.co.il] <br>
<b>Sent:</b> Thursday, October 07, 2010 8:58 AM<br>
<b>To:</b> Smith, Stan; ofw@lists.openfabrics.org<br>
<b>Subject:</b> RE: [ofw] [Patch][IPoIB_NIDS6_CM] Adding shutter_shut for
Adapter Reset flow</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>I’m fine with the ipoib
forwarding checkin. (if no one else has objection).</span><span
style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'> </span><o:p></o:p></p>

<p class=MsoNormal> <o:p></o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>OK, will make it part of winOFED 2.3 RC4; meaning I will go ahead
and commit the patch to winOFED SVN.</span><span style='color:#1F497D'> <o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>As for the shutter checkin, we
have been running with it for a few days, but I don’t know if shutdown is
really tested.</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'> </span><o:p></o:p></p>

<p class=MsoNormal> <o:p></o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>Will include this patch in 2.3 RC4 as I have not witnessed any
shutdown problems so far in pre-RC4 testing.</span><o:p></o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>I'll hold back on committing the patch until we have more shutdown
testing on both sides of the pond.</span><o:p></o:p></p>

<p class=MsoNormal> <o:p></o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>thanks,</span><o:p></o:p></p>

<p class=MsoNormal> <o:p></o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>stan.</span><o:p></o:p></p>

<p class=MsoNormal> <o:p></o:p></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>Thanks<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>Tzachi<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Smith, Stan
[mailto:stan.smith@intel.com] <br>
<b>Sent:</b> Thursday, October 07, 2010 5:50 PM<br>
<b>To:</b> Tzachi Dar; ofw@lists.openfabrics.org<br>
<b>Subject:</b> RE: [ofw] [Patch][IPoIB_NIDS6_CM] Adding shutter_shut for
Adapter Reset flow<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>Hello,</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>  If shutter_shut() is called twice an ASSERT() in
shutter.h::shutter_shut() will fire.</span><span style='font-size:12.0pt;
font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>I do not see the ASSERT() fire so we are OK; although code
inspection looked as if shutter_shut() 'could' be called twice:</span><span
style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>  1) ex_shutdown path - power down case</span><span
style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>  2) PNP port down path</span><span style='font-size:12.0pt;
font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'> <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>What are your plans for SVN committing this patch and the patch for
fixing forwarding of ipoib ?</span><span style='font-size:12.0pt;font-family:
"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'> <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p> </o:p></span></p>

<div class=MsoNormal align=center style='text-align:center'><span
style='font-size:12.0pt;font-family:"Times New Roman","serif"'>

<hr size=2 width="100%" align=center>

</span></div>

<p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:10.0pt;
font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;
font-family:"Tahoma","sans-serif"'> ofw-bounces@lists.openfabrics.org
[mailto:ofw-bounces@lists.openfabrics.org] <b>On Behalf Of </b>Tzachi Dar<br>
<b>Sent:</b> Thursday, October 07, 2010 3:22 AM<br>
<b>To:</b> Alex Naslednikov; ofw@lists.openfabrics.org<br>
<b>Subject:</b> Re: [ofw] [Patch][IPoIB_NIDS6_CM] Adding shutter_shut for
Adapter Reset flow</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>Hi Stan,<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>Shuter_shut should not be called
twice. In the case that it will than it will probably stay shut “for ever”.<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>The real question is whether it
can be called twice. I believe that there is an assumption in the code that
once reset is called shut down cannot be called, so the shutter will not be
called twice.<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>Thanks<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>Tzachi<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
ofw-bounces@lists.openfabrics.org [mailto:ofw-bounces@lists.openfabrics.org] <b>On
Behalf Of </b>Alex Naslednikov<br>
<b>Sent:</b> Wednesday, October 06, 2010 1:13 PM<br>
<b>To:</b> ofw@lists.openfabrics.org<br>
<b>Subject:</b> [ofw] [Patch][IPoIB_NIDS6_CM] Adding shutter_shut for Adapter
Reset flow<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>The patch below prevents race with BSOD when NDIS call
receive callback of ipoib while <o:p></o:p></p>

<p class=MsoNormal>some ipoib global objects are under destruction (like
p_adapter ->p_port).<o:p></o:p></p>

<p class=MsoNormal>It was tested by night regression run on IPoIB driver<o:p></o:p></p>

<p class=MsoNormal>---<o:p></o:p></p>

<p class=MsoNormal>Adding shutter_shut for Adapter Reset flow<o:p></o:p></p>

<p class=MsoNormal>Signed-off by: Alexander Naslednikov (xalex at
mellanox.co.il)<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>Index: kernel/ipoib_adapter.cpp<o:p></o:p></p>

<p class=MsoNormal>===================================================================<o:p></o:p></p>

<p class=MsoNormal>--- kernel/ipoib_adapter.cpp     
(revision 2938)<o:p></o:p></p>

<p class=MsoNormal>+++ kernel/ipoib_adapter.cpp   (working copy)<o:p></o:p></p>

<p class=MsoNormal>@@ -988,10 +988,13 @@<o:p></o:p></p>

<p class=MsoNormal>               
p_adapter->reset = TRUE;<o:p></o:p></p>

<p class=MsoNormal> <o:p></o:p></p>

<p class=MsoNormal>               
if( p_adapter->h_pnp )<o:p></o:p></p>

<p class=MsoNormal>-             
{<o:p></o:p></p>

<p class=MsoNormal>+            
{             
<o:p></o:p></p>

<p class=MsoNormal>+                            
<o:p></o:p></p>

<p class=MsoNormal>                               
h_pnp = p_adapter->h_pnp;<o:p></o:p></p>

<p class=MsoNormal>                               
p_adapter->h_pnp  = NULL;<o:p></o:p></p>

<p class=MsoNormal>                               
status = p_adapter->p_ifc->dereg_pnp( h_pnp, __ipoib_pnp_dereg );<o:p></o:p></p>

<p class=MsoNormal>+                            
// Wait until NDIS will return all indicated NBLs that were received<o:p></o:p></p>

<p class=MsoNormal>+                            
shutter_shut( &p_adapter->recv_shutter );<o:p></o:p></p>

<p class=MsoNormal>                               
if( status == IB_SUCCESS )<o:p></o:p></p>

<p class=MsoNormal>                                               
status = IB_NOT_DONE;<o:p></o:p></p>

<p class=MsoNormal>               
}<o:p></o:p></p>

<p class=MsoNormal>Index: kernel/ipoib_port.cpp<o:p></o:p></p>

<p class=MsoNormal>===================================================================<o:p></o:p></p>

<p class=MsoNormal>---
kernel/ipoib_port.cpp            
(revision 2946)<o:p></o:p></p>

<p class=MsoNormal>+++
kernel/ipoib_port.cpp         
(working copy)<o:p></o:p></p>

<p class=MsoNormal>@@ -830,11 +830,15 @@<o:p></o:p></p>

<p class=MsoNormal>               
IPOIB_PRINT( TRACE_LEVEL_ERROR, IPOIB_DBG_OBJ,<o:p></o:p></p>

<p class=MsoNormal>                               
("ref type %d ref_cnt %d\n", ref_init, p_port->obj.ref_cnt) );<o:p></o:p></p>

<p class=MsoNormal> #endif<o:p></o:p></p>

<p class=MsoNormal>-             
// The port is started as paused and NDIS calls latter to ipoib_restart. We<o:p></o:p></p>

<p class=MsoNormal>-             
// shut the recv_shuter for now and alive it on ipoib_restart. We did<o:p></o:p></p>

<p class=MsoNormal>-             
// it in this way since MpInitializeInternal also calls in reset and than<o:p></o:p></p>

<p class=MsoNormal>-             
// we need to set the rec ref count to 1 //TODO !!!!!!!!!!1<o:p></o:p></p>

<p class=MsoNormal>-             
//<o:p></o:p></p>

<p class=MsoNormal>+            
/* The steps of the initialization are as depicted below:<o:p></o:p></p>

<p class=MsoNormal>+            
I.           
adapter_init() calls shutter_init(), the shutter counter is set to 0<o:p></o:p></p>

<p class=MsoNormal>+            
II.           
ipoib_pnp_cb() calls to ipoib_port_init() that calls to __port_init() that
SHOULD set shutter counter to -MAX_OPERATIONS<o:p></o:p></p>

<p class=MsoNormal>+                            
That is, the code below should call to shutter_shut()<o:p></o:p></p>

<p class=MsoNormal>+            
III.NDIS calls to ipoib_restart() that calls to shutter_alive. Now,
shutter_counter is again 0.<o:p></o:p></p>

<p class=MsoNormal>+            
IV.          NDIS call to
ipoib_pause() that sets the adapter to pause state, calls to shutter_shut. <o:p></o:p></p>

<p class=MsoNormal>+                            
Now, the counter is again equals to -MAX_OPERATIONS<o:p></o:p></p>

<p class=MsoNormal>+            
V.            NDIS calls
to ipoib_restart that calls to shutter_alive. Shutter counter is 0 and we can
start working<o:p></o:p></p>

<p class=MsoNormal>+            
*/<o:p></o:p></p>

<p class=MsoNormal>               
<o:p></o:p></p>

<p class=MsoNormal>               
if ( p_adapter->ipoib_state == IPOIB_INIT) {<o:p></o:p></p>

<p class=MsoNormal>                               
IPOIB_PRINT( TRACE_LEVEL_INFORMATION, IPOIB_DBG_RECV,<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal><b>Alexander (XaleX) Naslednikov<o:p></o:p></b></p>

<p class=MsoNormal><b>SW Networking Team<o:p></o:p></b></p>

<p class=MsoNormal><b>Mellanox Technologies<o:p></o:p></b></p>

<p class=MsoNormal><o:p> </o:p></p>

</div>

</div>

</div>

</body>

</html>