Skip to contentSkip to conversation

NIC not working after ACPI PXE boot - solution!

Linux-ia64 [email protected] 3 participants 3 messages Nov 30, 2000 – Dec 1, 2000

lore
Share & tools
lore
#0 lore raw

Some engineers here at Dell have developed a solution to the issue where the on-board NIC is unresponsive to Linux if first EFI tried to use it. We're working through the licensing issues to make the code GPL, but until then, I can provide a simple functional description, and if someone wished to write code and add it to the kernel, great! :)

The basic steps are:
use BS->LocateHandle(SimpleNetworkProtocol) to get the number of NICs in the system.
for each handle returned:

	use BS->HandleProtocol() get EFI_SIMPLE_NETWORK->Mode->State.
	if State != shutdown
		call EFI_SIMPLE_NETWORK->Shutdown() on the NIC
		call EFI_SIMPLE_NETWORK->Stop() on the NIC

This obviously needs to be done prior to loading network drivers, either in the kernel or in eli/lilo.

Thanks,
Matt Domsch
Dell Enterprise Systems Group
Linux Development Team

#1 lore raw

Matt,

This very same fix was developed here at Intel and integrated into the BigSur BIOS a few weeks back. The next released version of BigSur FW will include this fix. I believe this fix will get pushed into standard releases of EFI, so all EFI based FW should get this problem solved in time. This is pretty much a bug in EFI, so I don't think a workaround needs to go into the kernel permanently. Thanks,

Chris

-----Original Message-----
From: [email protected] [mailto:[email protected]]
Sent: Thursday, November 30, 2000 8:02 AM
To: [email protected]
Subject: [Linux-ia64] NIC not working after ACPI PXE boot - solution!

Some engineers here at Dell have developed a solution to the issue where the on-board NIC is unresponsive to Linux if first EFI tried to use it. We're working through the licensing issues to make the code GPL, but until then, I can provide a simple functional description, and if someone wished to write code and add it to the kernel, great! :)

The basic steps are:
use BS->LocateHandle(SimpleNetworkProtocol) to get the number of NICs in the system.
for each handle returned:

	use BS->HandleProtocol() get EFI_SIMPLE_NETWORK->Mode->State.
	if State != shutdown
		call EFI_SIMPLE_NETWORK->Shutdown() on the NIC
		call EFI_SIMPLE_NETWORK->Stop() on the NIC

This obviously needs to be done prior to loading network drivers, either in the kernel or in eli/lilo.

Thanks,
Matt Domsch
Dell Enterprise Systems Group
Linux Development Team

_______________________________________________
Linux-IA64 mailing list
[email protected]
http://lists.linuxia64.org/lists/listinfo/linux-ia64

#2 lore raw
In reply to [email protected]

Hi,

I have thrown together a quick and dirty efi application to shutdown any network adapters which are not already in a stopped state. The source code and Makefile are attached. We intend to add the workaround as a patch to our lilo package as well.

Signature · 3 lines
Mike Madore
Software Engineer
TurboLinux, Inc.
Quoted 30 lines · On Thu, Nov 30, 2000 at 10:02:19AM -0600, [email protected] wrote:

Some engineers here at Dell have developed a solution to the issue where the on-board NIC is unresponsive to Linux if first EFI tried to use it. We're working through the licensing issues to make the code GPL, but until then, I can provide a simple functional description, and if someone wished to write code and add it to the kernel, great! :)

The basic steps are:
use BS->LocateHandle(SimpleNetworkProtocol) to get the number of NICs in the system.
for each handle returned:

	use BS->HandleProtocol() get EFI_SIMPLE_NETWORK->Mode->State.
	if State != shutdown
		call EFI_SIMPLE_NETWORK->Shutdown() on the NIC
		call EFI_SIMPLE_NETWORK->Stop() on the NIC

This obviously needs to be done prior to loading network drivers, either in the kernel or in eli/lilo.

Thanks,
Matt Domsch
Dell Enterprise Systems Group
Linux Development Team

_______________________________________________
Linux-IA64 mailing list
[email protected]
http://lists.linuxia64.org/lists/listinfo/linux-ia64