<html xmlns="http://www.w3.org/TR/REC-html40" xmlns:st="" xmlns:Z="urn:schemas-microsoft-com:" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:D="DAV:" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:z="#RowsetSchema" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<!--[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: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;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle19
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.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="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 vlink="purple" link="blue" lang="EN-US">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Problem Description:<o:p></o:p></p>
<p class="MsoNormal">We have noticed that gPXE UNDI code is always expecting
interrupt(s) to be generated by the underlying NIC HW to process the receive
path in undinet_poll() routine. This is causing problem on some of the PCI NIC
controllers where though the NIC device supports IRQ and able to generate
interrupts, during PXE UNDI code some devices do not enable interrupts on
their device and run in polling mode. Those devices expect upper layer UNDI
drivers to poll for the receive packets instead of waiting for interrupt from
the device. But in undinet_poll() routine the code checks for ISR triggered or
not if not it just returns. [(please check “if
(undinet_isr_triggered)” statement ) in undinet_poll()]<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Solution Description:<o:p></o:p></p>
<p class="MsoNormal">I have attached a patch here to take care of this so that
gPXE UNDI code will work on both types of devices (interrupt & polling
supported devices). The patch is to check whether the device supports IRQ or
not in “ServiceFlags” returned by the API call
PXENV_UNDI_GET_IFACE_INFO in undinet_probe() routine. If the underlying device
supports IRQ then enable the newly introduced flag
“irq_supported” in undi_nic structure.<o:p></o:p></p>
<p class="MsoNormal">Later in undinet_open() & undinet_close() routines
check this flag (irq_supported) to decide to hook the interrupts or to unhook
the interrupts. Also in undinet_poll() routine check whether interrupt got
generated or not, only if the device supports interrupts otherwise get the
packet from underlying UNDI NIC drivers by calling PXENV_UNDI_ISR using FuncFlag
PXEENV_UNDI_ISR_GET_NEXT.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am attaching here the patch for review and acceptance.<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"">Muralidhar
Appalla<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">Engineer
Principal<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">2560
N.First Street<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">Sanjose,CA<br>
Emulex Corporation<br>
(408)678-3472 (work)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><br>
</span><a href="http://www.emulex.com/"><span style="color:blue;text-decoration:
none"><img alt="http://www.emulex.com" src="cid:image001.gif@01CB867A.2F6F8180" id="Picture_x0020_1" height="39" width="175" border="0"></span></a><br>
<a href="http://www.twitter.com/emulex"><span style="color:blue;text-decoration:
none"><img alt="Twitter" src="cid:image002.gif@01CB867A.2F6F8180" id="Picture_x0020_2" height="42" width="27" border="0"></span></a><a href="http://www.friendfeed.com/emulex"><span style="color:blue;text-decoration:
none"><img alt="Friend Feed" src="cid:image003.gif@01CB867A.2F6F8180" id="Picture_x0020_3" height="42" width="34" border="0"></span></a><a href="http://www.google.com/reader/shared/emulexinc"><span style="color:blue;
text-decoration:none"><img alt="Google Reader" src="cid:image004.gif@01CB867A.2F6F8180" id="Picture_x0020_4" height="42" width="31" border="0"></span></a><a href="http://www.facebook.com/pages/Emulex-Corporation/116933412473"><span style="color:blue;text-decoration:none"><img alt="Facebook" src="cid:image005.gif@01CB867A.2F6F8180" id="Picture_x0020_5" height="42" width="35" border="0"></span></a><a href="http://www.slideshare.net/emulex"><span style="color:blue;text-decoration:
none"><img alt="Slideshare" src="cid:image006.gif@01CB867A.2F6F8180" id="Picture_x0020_6" height="42" width="28" border="0"></span></a><a href="http://www.emulex.com/rss.xml"><span style="color:blue;text-decoration:
none"><img alt="Emulex RSS" src="cid:image007.gif@01CB867A.2F6F8180" id="Picture_x0020_7" height="42" width="33" border="0"></span></a><a href="http://www.youtube.com/EmulexVideo"><span style="color:blue;text-decoration:
none"><img alt="You Tube" src="cid:image008.gif@01CB867A.2F6F8180" id="Picture_x0020_8" height="42" width="29" border="0"></span></a><a href="http://www.emulex.com/resources/blogs.html"><span style="color:blue;
text-decoration:none"><img alt="Emulex Blog" src="cid:image009.gif@01CB867A.2F6F8180" id="Picture_x0020_9" height="42" width="28" border="0"></span></a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>