summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/efi/nii.c
diff options
context:
space:
mode:
authorMichael Brown2014-10-17 17:36:00 +0200
committerMichael Brown2014-10-17 17:52:31 +0200
commitaf17abf67f1c89ee7193185b6ba1584e4eded4bc (patch)
tree0c40a20175046e9b5214b9965ecf00f44163bf11 /src/drivers/net/efi/nii.c
parent[efi] Check for presence of UNDI in NII protocol (diff)
downloadipxe-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.c47
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,
-};