Marty,<br>I forgot to post this yesterday...<br><br>I fumbled around with some of the link checking code on my own and wound up removing the<br>link state check. I compiled it and everything worked like a charm...here is my simple change:<br>
<br>--- eepro100.c    2010-04-16 09:56:56.753307333 -0400<br>+++ /home/arsinio/Desktop/eepro100.c    2010-04-16 07:55:15.000000000 -0400<br>@@ -586,8 +586,7 @@<br>     /* Check to see if network cable is plugged in. */<br>
     if ( ! ( ifec_mdio_read ( netdev, mdio_register &amp; 0x1f, 1 )<br>           &amp; ( 1 &lt;&lt; 2 ) ) ) {<br>-//        return 0;<br>-        return 1;<br>+        return 0;<br>     }<br>     return 1;<br> }<br><br>
Let me know if you still want me to try your change. I&#39;m not sure what direction everyone<br>would like to take this development, be it removing link state checking, or fixing the link <br>state checking problem. Either way, I&#39;m more than willing to help with finding a <br>
permanent solution.<br><br>Thanks!<br>-Chris<br><br><br><div class="gmail_quote">On Fri, Apr 16, 2010 at 8:26 AM, Marty Connor <span dir="ltr">&lt;<a href="mailto:mdc@etherboot.org">mdc@etherboot.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Christopher Armenio wrote on 4/13/10 6:17 PM:<br>
<div><div></div><div class="h5">&gt; Hi there,<br>
&gt; I seem to be having a problem getting gPXE to correctly interact with my<br>
&gt; intel NIC (integrated intel eepro100). I believe gPXE is incorrectly<br>
&gt; reporting the link as being down. There are both link and activity lights on<br>
&gt; the physical interface, and I can see the RX counter incrementing using the<br>
&gt; &#39;ifstat&#39; command.<br>
&gt;<br>
&gt; Any thoughts/suggestions?<br>
&gt; Thanks!<br>
&gt; -Chris<br>
<br>
</div></div>Hi Chris,<br>
<br>
If you are able to compile gPXE, could you make the following change and recompile:<br>
<div class="im"><br>
--- a/src/drivers/net/eepro100.c<br>
+++ b/src/drivers/net/eepro100.c<br>
</div>@@ -600,6 +600,9 @@ static void ifec_link_update ( struct net_device *netdev )<br>
 {<br>
        DBGP ( &quot;ifec_link_update\n&quot; );<br>
<br>
+       netdev_link_up ( netdev );<br>
+       return;<br>
+<br>
        /* Update link state */<br>
        if ( ifec_link_check ( netdev ) )<br>
                netdev_link_up ( netdev );<br>
<br>
<br>
-----------<br>
<br>
What this does is to assert that the link state is &quot;up&quot;.  I notice that<br>
most of our drivers don&#39;t do elaborate link state checking, but<br>
eepro100 does, and it appears that the card is reporting a value during that<br>
check that says the link is down, even if it is up.<br>
<br>
Since there&#39;s really nothing we can do if the link isn&#39;t up, I think the<br>
check is probably not needed.<br>
<br>
The patch above simply short-circuits the check for link, and always indicates<br>
to the core that link is up.<br>
<br>
If this patch works, we can just remove the extra link_state checking logic<br>
from src/drivers/net/eepro100.c, since other drivers don&#39;t do it, and it seems<br>
to cause a problem for some eepro100 cards.<br>
<br>
If editing and compiling this is a problem for you, I or someone else would<br>
be more than happy to make a test image for you.<br>
<br>
Thanks again for your help debugging this!<br>
<font color="#888888"><br>
/ Marty /<br>
<br>
<br>
</font></blockquote></div><br>