summaryrefslogtreecommitdiffstats
path: root/src/interface/efi/efi_snp.c
diff options
context:
space:
mode:
authorMichael Brown2009-01-12 21:53:38 +0100
committerMichael Brown2009-01-12 21:53:38 +0100
commit08f6d22410c662e075cf9907f12e1e6278a06967 (patch)
tree554dcfeb476f56b182fa025fc20f33e10f3b0bb1 /src/interface/efi/efi_snp.c
parent[efi] Add an EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL interface (diff)
downloadipxe-08f6d22410c662e075cf9907f12e1e6278a06967.tar.gz
ipxe-08f6d22410c662e075cf9907f12e1e6278a06967.tar.xz
ipxe-08f6d22410c662e075cf9907f12e1e6278a06967.zip
[efi] Expose both GUIDs for the EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL
At some point, it seems that someone decided to change the GUID for the EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL. Current EFI builds ignore the older GUID, older EFI builds ignore the newer GUID, so we have to expose both.
Diffstat (limited to 'src/interface/efi/efi_snp.c')
-rw-r--r--src/interface/efi/efi_snp.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/interface/efi/efi_snp.c b/src/interface/efi/efi_snp.c
index a3eace3d..491d2a80 100644
--- a/src/interface/efi/efi_snp.c
+++ b/src/interface/efi/efi_snp.c
@@ -91,13 +91,15 @@ static EFI_GUID efi_component_name2_protocol_guid
static EFI_GUID efi_device_path_protocol_guid
= EFI_DEVICE_PATH_PROTOCOL_GUID;
-/** Efi network interface identifier GUID */
-static EFI_GUID efi_nii_protocol_guid = {
- /* No, this isn't the GUID defined as
- * EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID in
- * Protocol/NetworkInterfaceIdentifier.h. That GUID gets
- * ignored by the EFI network stack. You have to use this one
- * instead.
+/** EFI network interface identifier GUID */
+static EFI_GUID efi_nii_protocol_guid
+ = EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID;
+
+/** EFI network interface identifier GUID (extra special version) */
+static EFI_GUID efi_nii31_protocol_guid = {
+ /* At some point, it seems that someone decided to change the
+ * GUID. Current EFI builds ignore the older GUID, older EFI
+ * builds ignore the newer GUID, so we have to expose both.
*/
0x1ACED566, 0x76ED, 0x4218,
{ 0xBC, 0x81, 0x76, 0x7F, 0x1F, 0x97, 0x7A, 0x89 }
@@ -987,6 +989,7 @@ efi_snp_driver_start ( EFI_DRIVER_BINDING_PROTOCOL *driver,
&efi_simple_network_protocol_guid, &snpdev->snp,
&efi_device_path_protocol_guid, &snpdev->path,
&efi_nii_protocol_guid, &snpdev->nii,
+ &efi_nii31_protocol_guid, &snpdev->nii,
NULL ) ) != 0 ) {
DBGC ( snpdev, "SNPDEV %p could not install protocols: "
"%s\n", snpdev, efi_strerror ( efirc ) );
@@ -1002,6 +1005,7 @@ efi_snp_driver_start ( EFI_DRIVER_BINDING_PROTOCOL *driver,
&efi_simple_network_protocol_guid, &snpdev->snp,
&efi_device_path_protocol_guid, &snpdev->path,
&efi_nii_protocol_guid, &snpdev->nii,
+ &efi_nii31_protocol_guid, &snpdev->nii,
NULL );
err_install_protocol_interface:
bs->CloseEvent ( snpdev->snp.WaitForPacket );
@@ -1051,6 +1055,7 @@ efi_snp_driver_stop ( EFI_DRIVER_BINDING_PROTOCOL *driver,
&efi_simple_network_protocol_guid, &snpdev->snp,
&efi_device_path_protocol_guid, &snpdev->path,
&efi_nii_protocol_guid, &snpdev->nii,
+ &efi_nii31_protocol_guid, &snpdev->nii,
NULL );
bs->CloseEvent ( snpdev->snp.WaitForPacket );
netdev_put ( snpdev->netdev );