<html xmlns="http://www.w3.org/TR/REC-html40" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<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.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@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 vlink="purple" link="blue" lang="EN-US">
<div class="WordSection1">
<p class="MsoNormal"><font face="Calibri" size="2"><span style="font-size:11.0pt">Our network infrastructure seems to have a significant delay between Layer 2 and Layer 3 readiness. This can cause failures to download bootfile; the request times out. This
patch is a bit of a hack - we've done some testing and with a 2 second sleep we still sometimes have issues, but have never had an issue with a 3 second sleep after 10,000+ gPXEs.<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Calibri" size="2"><span style="font-size:11.0pt"><o:p> </o:p></span></font></p>
<p class="MsoNormal"><font face="Calibri" size="2"><span style="font-size:11.0pt">As a suggestion, probably the correct way to resolve this is to have boot_next_server_and_filename() or maybe imgfetch() go through a series of sleeps and retries until it succeeds
or times out. Unfortunately what I have below works for me, and being short-staffed I don't have the time to turn it into a proper patch.<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Calibri" size="2"><span style="font-size:11.0pt"><o:p> </o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">--- gpxe.orig/src/usr/autoboot.c 2009-10-21 14:05:47.000000000 -0500<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">+++ gpxe.new/src/usr/autoboot.c 2009-11-23 10:49:07.000000000 -0600<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">@@ -21,6 +21,7 @@<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">#include <string.h><o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">#include <stdio.h><o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">#include <errno.h><o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">+#include <unistd.h><o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">#include <gpxe/netdevice.h><o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">#include <gpxe/dhcp.h><o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">#include <gpxe/settings.h><o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">@@ -172,6 +173,8 @@<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New""> fetch_ipv4_setting ( NULL, &next_server_setting, &next_server );<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New""> fetch_string_setting ( NULL, &filename_setting, buf, sizeof ( buf ) );<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New""> if ( buf[0] ) {<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">+ printf ( "Sleeping 3 seconds to complete port init...\n" );<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New"">+ sleep(3);<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New""> printf ( "Booting from filename \"%s\"\n", buf );<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New""> return boot_next_server_and_filename ( next_server, buf );<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New""> }<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size:11.0pt;font-family:"Courier New""><o:p> </o:p></span></font></p>
<p class="MsoNormal"><font face="Calibri" size="2"><span style="font-size:11.0pt"><o:p> </o:p></span></font></p>
<p class="MsoNormal"><font face="Calibri" size="2"><span style="font-size:11.0pt">--<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Calibri" size="2"><span style="font-size:11.0pt">Geoffrey Silver<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Calibri" size="2"><span style="font-size:11.0pt">Global Infrastructure<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Calibri" size="2"><span style="font-size:11.0pt">CITADEL<o:p></o:p></span></font></p>
<p class="MsoNormal"><font face="Calibri" size="2"><span style="font-size:11.0pt"><o:p> </o:p></span></font></p>
</div>
<br>
<hr>
<font size="1" color="Gray" face="Arial"><br>
CONFIDENTIALITY AND SECURITY NOTICE<br>
<br>
The contents of this message and any attachments may be confidential and proprietary and also may be covered by the Electronic Communications Privacy Act. This message is not intended to be used by, and should not be relied upon in any way, by any third party.
If you are not an intended recipient, please inform the sender of the transmission error and delete this message immediately without reading, disseminating, distributing or copying the contents. Citadel makes no assurances that this e-mail and any attachments
are free of viruses and other harmful code.<br>
</font>
</body>
</html>