Support Report Status Code in the UefiPxe driver.

Report PXE error status via Status Code, with this design,
it will be flexible to register a status code handler
via gEfiRscHandlerProtocolGuid to output the customized error code
to other telemetry service.

The subclass code is `EFI_IO_BUS_IP_NETWORK`

Signed-off-by: Ethan Hsu <Eathonhsu@gmail.com>
This commit is contained in:
yhsu3 2024-09-08 17:45:54 +08:00 committed by mergify[bot]
parent 58b4bf7b7e
commit 589304e67f
4 changed files with 16 additions and 0 deletions

View File

@ -1268,5 +1268,12 @@ ON_EXIT:
AsciiPrint ("\n PXE-E99: Unexpected network error.\n");
}
REPORT_STATUS_CODE_WITH_EXTENDED_DATA (
EFI_ERROR_CODE,
(EFI_STATUS_CODE_VALUE)(EFI_IO_BUS_IP_NETWORK | EFI_OEM_SPECIFIC | ((EFI_STATUS_CODE_VALUE)(Status & 0x1F))),
(VOID *)&(PxeBcMode->UsingIpv6),
sizeof (PxeBcMode->UsingIpv6)
);
return Status;
}

View File

@ -72,6 +72,13 @@ EfiPxeBcStart (
return EFI_UNSUPPORTED;
}
REPORT_STATUS_CODE_WITH_EXTENDED_DATA (
EFI_PROGRESS_CODE,
EFI_IO_BUS_IP_NETWORK | EFI_IOB_PC_RECONFIG,
(VOID *)&(Mode->UsingIpv6),
sizeof (Mode->UsingIpv6)
);
if (Mode->UsingIpv6) {
AsciiPrint ("\n>>Start PXE over IPv6");
//

View File

@ -48,6 +48,7 @@
#include <Library/DpcLib.h>
#include <Library/DevicePathLib.h>
#include <Library/PcdLib.h>
#include <Library/ReportStatusCodeLib.h>
typedef struct _PXEBC_PRIVATE_DATA PXEBC_PRIVATE_DATA;
typedef struct _PXEBC_PRIVATE_PROTOCOL PXEBC_PRIVATE_PROTOCOL;

View File

@ -62,6 +62,7 @@
DpcLib
DevicePathLib
PcdLib
ReportStatusCodeLib
[Protocols]
## TO_START