<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:v = 
"urn:schemas-microsoft-com:vml" xmlns:o = 
"urn:schemas-microsoft-com:office:office" xmlns:w = 
"urn:schemas-microsoft-com:office:word" xmlns:m = 
"http://schemas.microsoft.com/office/2004/12/omml"><HEAD>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18904"><!--[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-face {
        font-family: Calibri;
}
@font-face {
        font-family: Tahoma;
}
@page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.0in 1.0in 1.0in; }
P.MsoNormal {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt
}
LI.MsoNormal {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt
}
DIV.MsoNormal {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
P.MsoAcetate {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Tahoma","sans-serif"; FONT-SIZE: 8pt; mso-style-priority: 99; mso-style-link: "Balloon Text Char"
}
LI.MsoAcetate {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Tahoma","sans-serif"; FONT-SIZE: 8pt; mso-style-priority: 99; mso-style-link: "Balloon Text Char"
}
DIV.MsoAcetate {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Tahoma","sans-serif"; FONT-SIZE: 8pt; mso-style-priority: 99; mso-style-link: "Balloon Text Char"
}
SPAN.EmailStyle17 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: windowtext; mso-style-type: personal-compose
}
SPAN.BalloonTextChar {
        FONT-FAMILY: "Tahoma","sans-serif"; mso-style-priority: 99; mso-style-link: "Balloon Text"; mso-style-name: "Balloon Text Char"
}
.MsoChpDefault {
        mso-style-type: export-only
}
DIV.Section1 {
        page: Section1
}
</STYLE>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="2050" />
</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 dir=ltr align=left><SPAN class=782515119-19042010><FONT size=2 
face=Arial>Hello,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT size=2 
face=Arial> The WinOF name has been changed to OFED for windows or OFED-W 
when necessary for clarification...</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT size=2 
face=Arial> A couple of questions:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT size=2 
face=Arial>disclaimer - I am not a Windows driver expert, only a student, 
mileage may vary.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT size=2 
face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT size=2 
face=Arial><FONT color=#0000ff><FONT color=#000000>1)</FONT> <FONT 
color=#000000>y</FONT><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010><FONT color=#000000><FONT size=2 face=Arial>ou are 
speaking of trunk\ulp\ipoib_ndis6_cm driver?</FONT> I'm guessing 
yes</FONT>.</SPAN></SPAN></FONT></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#000000 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN class=782515119-19042010>2) 
IPoIB is technically not a 'filter' driver; although it's behavior may somewhat 
mimic filter driver behaviors.</SPAN></SPAN></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN class=782515119-19042010>3) 
The entire InfiniBand 'bus device management' concept is somewhat wedged into 
the Windows driver stack w.r.t. PNP event 
handling.</SPAN></SPAN></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010>Consider the chicken-n-egg issues of IB bus device 
management. An HCA can not be removed/disabled unless the IB bus devices it 
supports have previously been removed/disabled. The problem is how to 
efficiently inform IB bus devices to remove/change-state without holding the HCA 
in limbo until IB bus devices have been removed; all the IB bus device PNP mgmt 
was done long ago in the 'early' days of Server 
2003.</SPAN></SPAN></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN class=782515119-19042010>IB 
bus devices (IPoIB, vnic, SRP) peek at (register with IBAL for) PNP events such 
that the IB bus device will remove itself if the HCA is being removed. The 
PNP event/IRP eventually reaches the HCA which can then properly remove 
itself knowing it's IB bus devices have removed themselves 
prior.</SPAN></SPAN></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010>The IB bus device PNP peeking was chosen long ago to be 
faster/cleaner than implementing a generalized IB bus device PNP 
manager.</SPAN></SPAN></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010>please find additional inline 
comments.</SPAN></SPAN></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=782515119-19042010><FONT color=#0000ff 
size=2 face=Arial><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN></FONT></SPAN> </DIV>
<DIV dir=ltr align=left>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>From:</B> John Russo [mailto:john.russo@qlogic.com] 
<BR><B>Sent:</B> Monday, April 19, 2010 10:23 AM<BR><B>To:</B> Smith, Stan; 
Hefty, Sean; ofw@lists.openfabrics.org<BR><B>Subject:</B> Filter Drivers in 
WinOF<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV class=Section1>
<P class=MsoNormal><SPAN style="COLOR: #1f497d">QLogic is seeing some issues 
with the current implementation of IPoIB and how it affects PnP 
Notifications.<SPAN class=782515119-19042010><FONT color=#0000ff size=2 
face=Arial> </FONT></SPAN></SPAN></P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><o:p> </o:p></SPAN></P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d">Can anyone tell me why we are 
doing things this way or if they disagree with the following 
statements…<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">Problem:              <o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d">IPoIB registers itself to handle 
PnP notifications in ipoib_driver.c, function ipoib_pnp_notify().  Any PnP 
notification other than PowerProfileChanged will cause the adapter state to 
become “Removed” and the IPoIB filter driver will drop it’s connection.  
This is in direct contradiction to MS Best Practices for filter drivers, which 
clearly state that filter drivers should *<B>not</B>* interpret PnP or Power 
notifications, but should instead pass these down the driver stack to the base 
driver which has the responsibility for actually interpreting the event.  
This is similar to the WinVerbs D0 handler, where the WinVerbs *<B>filter</B>* 
driver is attempting to manage a Power notification.<SPAN 
class=782515119-19042010><FONT color=#0000ff size=2 
face=Arial> </FONT></SPAN></SPAN></P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN> </P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010><FONT color=#0000ff size=2 face=Arial>If the above 
mentioned drivers did</FONT> <FONT color=#0000ff size=2 face=Arial>not 
view/peek at PNP notifications, then how would the HCA be able to be removed or 
disabled?</FONT></SPAN><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">Solution:                  
<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d">IPoIB should follow the MS Best 
Practices for filter drivers and stop attempting to manage the Power or PnP 
notifications, and allow them to pass down the driver stack<SPAN 
class=782515119-19042010><FONT color=#0000ff size=2 
face=Arial> </FONT></SPAN></SPAN></P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN> </P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010><FONT color=#0000ff size=2 face=Arial>Personally I do 
not have a problem with making drivers less complex, provided they continue 
to work.</FONT> </SPAN><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">Additional:              
<o:p></o:p></SPAN></P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d">This will become problematic 
during PCI rebalancing, which recall is *<B>not</B>* supposed to cause a 
teardown but instead a suspension.  IPoIB will treat the PnP rebalance 
notifications as “teardown” events<SPAN class=782515119-19042010><FONT 
color=#0000ff size=2 face=Arial> </FONT></SPAN></SPAN></P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN> </P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010><FONT color=#0000ff size=2 face=Arial>Agreed, sounds 
like a bug.</FONT></SPAN></SPAN></P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN> </P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010><FONT color=#0000ff size=2 face=Arial>Perhaps the IPoIB 
implementers from Mellanox will provide a more in-depth view of the 
how and why of IPoIB PNP handling.</FONT></SPAN></SPAN></P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010></SPAN></SPAN> </P>
<P class=MsoNormal><SPAN style="COLOR: #1f497d"><SPAN 
class=782515119-19042010><FONT color=#0000ff size=2 
face=Arial>stan.</FONT> </SPAN><o:p></o:p></SPAN></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><IMG id=Picture_x0020_1 alt="Signiture QL blu" 
src="cid:782515119@19042010-2C2C" width=44 height=26><o:p></o:p></P>
<P class=MsoNormal>John F. Russo<o:p></o:p></P>
<P class=MsoNormal>Engineering Manager<o:p></o:p></P>
<P class=MsoNormal>QLogic Corporation<o:p></o:p></P>
<P class=MsoNormal>780 Fifth Avenue<o:p></o:p></P>
<P class=MsoNormal>Suite 140<o:p></o:p></P>
<P class=MsoNormal>King of Prussia, PA 19406<o:p></o:p></P>
<P class=MsoNormal>Direct: 610-233-4866<o:p></o:p></P>
<P class=MsoNormal>Fax:      
610-233-4777<o:p></o:p></P>
<P class=MsoNormal>Cell:     610-246-9903<o:p></o:p></P>
<P class=MsoNormal><A href="http://www.qlogic.com"><SPAN 
style="COLOR: blue">www.qlogic.com</SPAN></A><o:p></o:p></P>
<P class=MsoNormal><o:p> </o:p></P></DIV></BODY></HTML>