> Thanks for the patch, your problem is interesting, although why reseting > the phy has anything to do with mtu > 1500 not working I don't know. > > Also, what adapter (lspci -n) what are steps to reproduce, etc.
lspci -n 0000:0f:07.0 Class 0200: 8086:1076 (rev 05) 0000:10:08.0 Class 0200: 8086:1076 (rev 05) To reproduce, boot the system with ifcfg-eth0 containing a line MTU='8232' or any value bigger than 1500. Alternatively, boot the system with a standard MTU and then change with 'ifconfig eth0 mtu 8232'. Once you do this, the link light won't go on and nothing can ping across the link. I'm testing using a crossover cable if that makes any difference. Once the failure occurs, I must do an '/etc/rc.d/network restart' several times to get the connection to work. I found the issue by tracking code changes between linux kernel 2.6.7 and 2.6.11. I narrowed down the changes to the e1000_main.c file and noticed that the PHY was being powered on/off at times. This is done in the e1000_up and e1000_down routines. I'm assuming that when I run ifconfig to change the MTU that the adapter down/up routines are called. In addition, subsequent testing has shown that the patch I sent doesn't work 100% of the time. So I commented out the code block that does a power down/up of the PHY and now it works 100% of the time. > If you could, please try the latest driver off of sourceforge at > http://sf.net/projects/e1000, which will get us working off > of the same source base. I'm going to try the latest driver you mentioned and let you know what happens. > when you do patches, please do then with diff -up, and specifiy the driver > version you're patching, because I can't tell where in your driver you > made this change. The driver version I patched was from the 2.6.11 kernel and is labelled "5.6.10.1-k2-NAPI". Here is the diff output that works for me right now. @@ -283,6 +283,7 @@ e1000_up(struct e1000_adapter *adapter) /* hardware has been reset, we need to reload some things */ +#if 0 /* Reset the PHY if it was previously powered down */ if(adapter->hw.media_type == e1000_media_type_copper) { uint16_t mii_reg; @@ -290,6 +291,7 @@ e1000_up(struct e1000_adapter *adapter) if(mii_reg & MII_CR_POWER_DOWN) e1000_phy_reset(&adapter->hw); } +#endif e1000_set_multi(netdev); @@ -330,6 +332,7 @@ e1000_down(struct e1000_adapter *adapter e1000_clean_tx_ring(adapter); e1000_clean_rx_ring(adapter); +#if 0 /* If WoL is not enabled * Power down the PHY so no link is implied when interface is down */ if(!adapter->wol && adapter->hw.media_type == e1000_media_type_copper) { @@ -338,6 +341,7 @@ e1000_down(struct e1000_adapter *adapter mii_reg |= MII_CR_POWER_DOWN; e1000_write_phy_reg(&adapter->hw, PHY_CTRL, mii_reg); } +#endif } void Thanks for your help. Russ - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html