diff options
author | Patrick Wildt <patrick@cvs.openbsd.org> | 2019-08-13 09:00:21 +0000 |
---|---|---|
committer | Patrick Wildt <patrick@cvs.openbsd.org> | 2019-08-13 09:00:21 +0000 |
commit | 62f4b393d1b376dfd19fdeaae5f11782ee9682fe (patch) | |
tree | ec6a00d5ff26eff01cc9b008d4a5dc0feaf2cacc /sys/arch/armv7/stand | |
parent | cc619e08eaa74544ac1447b29b8d6ed2c0e79d2b (diff) |
Allow PXE booting using u-boot by relaxing our requirements
of the EFI PXE protocol. This also brings us in line with
the GRUB2 implementation.
Tested by naddy@ to behave the same
Tested by sven falempin on his Pine64
Diffstat (limited to 'sys/arch/armv7/stand')
-rw-r--r-- | sys/arch/armv7/stand/efiboot/conf.c | 4 | ||||
-rw-r--r-- | sys/arch/armv7/stand/efiboot/efipxe.c | 17 |
2 files changed, 5 insertions, 16 deletions
diff --git a/sys/arch/armv7/stand/efiboot/conf.c b/sys/arch/armv7/stand/efiboot/conf.c index 0cfba5f4115..e0615de7a3a 100644 --- a/sys/arch/armv7/stand/efiboot/conf.c +++ b/sys/arch/armv7/stand/efiboot/conf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: conf.c,v 1.18 2019/08/04 13:45:15 deraadt Exp $ */ +/* $OpenBSD: conf.c,v 1.19 2019/08/13 09:00:20 patrick Exp $ */ /* * Copyright (c) 1996 Michael Shalayeff @@ -36,7 +36,7 @@ #include "efidev.h" #include "efipxe.h" -const char version[] = "1.5"; +const char version[] = "1.6"; int debug = 0; struct fs_ops file_system[] = { diff --git a/sys/arch/armv7/stand/efiboot/efipxe.c b/sys/arch/armv7/stand/efiboot/efipxe.c index 7013a5bb7ee..654d3474ab6 100644 --- a/sys/arch/armv7/stand/efiboot/efipxe.c +++ b/sys/arch/armv7/stand/efiboot/efipxe.c @@ -1,4 +1,4 @@ -/* $OpenBSD: efipxe.c,v 1.2 2019/04/25 20:19:30 naddy Exp $ */ +/* $OpenBSD: efipxe.c,v 1.3 2019/08/13 09:00:20 patrick Exp $ */ /* * Copyright (c) 2017 Patrick Wildt <patrick@blueri.se> * @@ -89,7 +89,7 @@ efi_pxeprobe(void) return; for (i = 0; i < nhandles; i++) { - EFI_PXE_BASE_CODE_DHCPV4_PACKET *dhcp = NULL; + EFI_PXE_BASE_CODE_DHCPV4_PACKET *dhcp; status = EFI_CALL(BS->HandleProtocol, handles[i], &devp_guid, (void **)&dp0); @@ -113,21 +113,10 @@ efi_pxeprobe(void) if (pxe->Mode == NULL) continue; - if (pxe->Mode->DhcpAckReceived) { - dhcp = (EFI_PXE_BASE_CODE_DHCPV4_PACKET *) - &pxe->Mode->DhcpAck; - } - if (pxe->Mode->PxeReplyReceived) { - dhcp = (EFI_PXE_BASE_CODE_DHCPV4_PACKET *) - &pxe->Mode->PxeReply; - } - - if (!dhcp) - continue; - if (pxe->Mtftp != NULL) use_mtftp = 1; + dhcp = (EFI_PXE_BASE_CODE_DHCPV4_PACKET *)&pxe->Mode->DhcpAck; memcpy(&bootip, dhcp->BootpYiAddr, sizeof(bootip)); memcpy(&servip, dhcp->BootpSiAddr, sizeof(servip)); memcpy(&gateip, dhcp->BootpSiAddr, sizeof(gateip)); |