On Wed, Dec 4, 2019 at 10:56 AM Eddy Geez <eddyg...@gmail.com> wrote: > > On Tue, Dec 3, 2019 at 6:22 PM Alexander Duyck > <alexander.du...@gmail.com> wrote: > > On Tue, Dec 3, 2019 at 12:40 PM Eddy Geez <eddyg...@gmail.com> wrote: > > > > > > BLUF: > > > Is there any way to bring the interface physically up immediately > > > when the e1000e driver loads so auto-negotiation can start? > > > > > > Greetings! > > > > > > I am evaluating some Intel NUCs that will be diskless and rely on > > > PXE netbooting. > > > > > > I have everything working, but the boot process is significantly > > > delayed after the OS (in this case, Ubuntu 18.04.3) starts: > > > > > > From the dmesg output: > > > > > > [ 1.390993] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k > > > [ 1.932005] e1000e 0000:00:1f.6 eno1: renamed from eth0 > > > [ 9.538232] e1000e: eno1 NIC Link is Up 1000 Mbps Full Duplex, Flow > > > Control: None > > > > > > So there's about 7 seconds where nothing is happening. > > > > > > I've searched this list and found messages about how auto-negotiation > > > can take 3-4 seconds, but there's more going on here. Specifically, > > > once iPXE is done and hands off control to the initrd, link on the NIC > > > goes away and does NOT come back up when the kernel loads the > > > e1000e driver. It isn't until the later in the boot process, when > > > the interface is configured, that link negotiation starts and the > > > LEDs on the NIC come back on. > > > > > > Is there any way to bring the interface physically up immediately > > > when the e1000e driver loads so auto-negotiation can start right > > > away? I'm guessing this simple change would take several seconds > > > off the boot time. (Incidentally, the auto-negotiation during PXE > > > boot happens very quickly.) > > > > > > FWIW, I've also built and installed the latest version of the driver: > > > > > > [ 1.410023] e1000e: Intel(R) PRO/1000 Network Driver - 3.6.0-NAPI > > > > > > and it didn't behave any differently. > > > > > > Thanks for any insight! > > > > So the issue is likely going to be that the physical interface for the > > NIC is powered down in e1000e_reset via e1000_power_down_phy and is > > not powered back on until e1000e_open calls e100_power_up_phy. As such > > the PHY has to be powered on and initialized before you can even start > > getting to the link negotiation process. > > > > Also I believe 3 to 4 seconds is the typical link time for 10/100Mbps > > Ethernet. If I recall correctly for 1Gbps you are looking at 4 to 5 > > seconds for link negotiation. > > > > Hope that helps. > > Thanks for the quick reply! > > So there's no way to get `e1000_power_up_phy` called sooner? > (I'm envisioning something like an E1000_PARAM that could be specified > as an option in /etc/modprobe.d/e1000e.conf)
As far as I am aware nothing like that exists in the current driver. > As I mentioned, I had read previously on this list that auto-neg > can take 3-4 seconds, and that's why I want to start that process > ASAP after the e1000e module gets loaded by the kernel. Then, with > any luck, when the boot process gets around to configuring the network > interface it will hopefully be ready to go, letting the netboot process > continue that much sooner. > > Thanks again for any suggestions in speeding things up! If you are wanting to experiment, one thing you might try rebuilding the driver and modifying the function e1000_check_reset_block_ich8lan which should be in the ich8lan.c file for the driver. If you modified it so that it always returned the blocked value then that would likely disable any PHY resets and power cycles which may improve your boot time. Hope that helps. - Alex _______________________________________________ E1000-devel mailing list E1000-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel Ethernet, visit https://forums.intel.com/s/topic/0TO0P00000018NbWAI/intel-ethernet