diff options
author | Michael Brown | 2014-10-17 17:36:00 +0200 |
---|---|---|
committer | Michael Brown | 2014-10-17 17:52:31 +0200 |
commit | af17abf67f1c89ee7193185b6ba1584e4eded4bc (patch) | |
tree | 0c40a20175046e9b5214b9965ecf00f44163bf11 /src/drivers/net/efi/nii.c | |
parent | [efi] Check for presence of UNDI in NII protocol (diff) | |
download | ipxe-af17abf67f1c89ee7193185b6ba1584e4eded4bc.tar.gz ipxe-af17abf67f1c89ee7193185b6ba1584e4eded4bc.tar.xz ipxe-af17abf67f1c89ee7193185b6ba1584e4eded4bc.zip |
[efi] Include NII driver within "snp" and "snponly" build targets
End users almost certainly don't care whether the underlying interface
is SNP or NII/UNDI. Try to minimise surprise and unnecessary
documentation by including the NII driver whenever the SNP driver is
requested.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net/efi/nii.c')
-rw-r--r-- | src/drivers/net/efi/nii.c | 47 |
1 files changed, 4 insertions, 43 deletions
diff --git a/src/drivers/net/efi/nii.c b/src/drivers/net/efi/nii.c index 56b6340b..d0d7da95 100644 --- a/src/drivers/net/efi/nii.c +++ b/src/drivers/net/efi/nii.c @@ -28,10 +28,11 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include <ipxe/umalloc.h> #include <ipxe/efi/efi.h> #include <ipxe/efi/efi_driver.h> -#include <ipxe/efi/efi_snp.h> #include <ipxe/efi/efi_pci.h> #include <ipxe/efi/efi_utils.h> +#include <ipxe/efi/Protocol/NetworkInterfaceIdentifier.h> #include <ipxe/efi/IndustryStandard/Acpi10.h> +#include "nii.h" /** @file * @@ -956,44 +957,12 @@ static struct net_device_operations nii_operations = { }; /** - * Check to see if driver supports a device - * - * @v device EFI device handle - * @ret rc Return status code - */ -static int nii_supported ( EFI_HANDLE device ) { - EFI_BOOT_SERVICES *bs = efi_systab->BootServices; - EFI_STATUS efirc; - - /* Check that this is not a device we are providing ourselves */ - if ( find_snpdev ( device ) != NULL ) { - DBGCP ( device, "NII %p %s is provided by this binary\n", - device, efi_handle_name ( device ) ); - return -ENOTTY; - } - - /* Test for presence of NII protocol */ - if ( ( efirc = bs->OpenProtocol ( device, - &efi_nii31_protocol_guid, - NULL, efi_image_handle, device, - EFI_OPEN_PROTOCOL_TEST_PROTOCOL))!=0){ - DBGCP ( device, "NII %p %s is not an NII device\n", - device, efi_handle_name ( device ) ); - return -EEFI ( efirc ); - } - DBGC ( device, "NII %p %s is an NII device\n", - device, efi_handle_name ( device ) ); - - return 0; -} - -/** * Attach driver to device * * @v efidev EFI device * @ret rc Return status code */ -static int nii_start ( struct efi_device *efidev ) { +int nii_start ( struct efi_device *efidev ) { EFI_BOOT_SERVICES *bs = efi_systab->BootServices; EFI_HANDLE device = efidev->device; struct net_device *netdev; @@ -1106,7 +1075,7 @@ static int nii_start ( struct efi_device *efidev ) { * * @v efidev EFI device */ -static void nii_stop ( struct efi_device *efidev ) { +void nii_stop ( struct efi_device *efidev ) { EFI_BOOT_SERVICES *bs = efi_systab->BootServices; struct net_device *netdev = efidev_get_drvdata ( efidev ); struct nii_nic *nii = netdev->priv; @@ -1130,11 +1099,3 @@ static void nii_stop ( struct efi_device *efidev ) { netdev_nullify ( netdev ); netdev_put ( netdev ); } - -/** EFI NII driver */ -struct efi_driver nii_driver __efi_driver ( EFI_DRIVER_NORMAL ) = { - .name = "NII", - .supported = nii_supported, - .start = nii_start, - .stop = nii_stop, -}; |