[efi] Add NII / UNDI driver
authorMichael Brown <mcb30@ipxe.org>
Fri, 3 Oct 2014 12:17:22 +0000 (13:17 +0100)
committerMichael Brown <mcb30@ipxe.org>
Thu, 16 Oct 2014 13:13:20 +0000 (14:13 +0100)
commit047baaba3819f9c98c1e253ba6d37dd5a20fd435
tree18e7ef782aeef9bd8249cbd9df3343c90eb5d14d
parent318b5fca1a0602389b090785aada7783794076ab
[efi] Add NII / UNDI driver

Some UEFI network drivers provide a software UNDI interface which is
exposed via the Network Interface Identifier Protocol (NII), rather
than providing a Simple Network Protocol (SNP).

The UEFI platform firmware will usually include the SnpDxe driver,
which attaches to NII and provides an SNP interface.  The SNP
interface is usually provided on the same handle as the underlying NII
device.  This causes problems for our EFI driver model: when
efi_driver_connect() detaches existing drivers from the handle it will
cause the SNP interface to be uninstalled, and so our SNP driver will
not be able to attach to the handle.  The platform firmware will
eventually reattach the SnpDxe driver and may attach us to the SNP
handle, but we have no way to prevent other drivers from attaching
first.

Fix by providing a driver which can attach directly to the NII
protocol, using the software UNDI interface to drive the network
device.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/efi/nii.c [new file with mode: 0644]
src/include/ipxe/efi/IndustryStandard/Acpi10.h [new file with mode: 0644]
src/include/ipxe/efi/IndustryStandard/AcpiAml.h [new file with mode: 0644]
src/include/ipxe/errfile.h
src/include/ipxe/ethernet.h