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 & 0x1f, 1 )<br> & ( 1 << 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'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'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"><<a href="mailto:mdc@etherboot.org">mdc@etherboot.org</a>></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">> Hi there,<br>
> I seem to be having a problem getting gPXE to correctly interact with my<br>
> intel NIC (integrated intel eepro100). I believe gPXE is incorrectly<br>
> reporting the link as being down. There are both link and activity lights on<br>
> the physical interface, and I can see the RX counter incrementing using the<br>
> 'ifstat' command.<br>
><br>
> Any thoughts/suggestions?<br>
> Thanks!<br>
> -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 ( "ifec_link_update\n" );<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 "up". I notice that<br>
most of our drivers don'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's really nothing we can do if the link isn'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'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>