]> xenbits.xensource.com Git - people/aperard/ovmf.git/commitdiff
Support Report Status Code in the UefiPxe driver.
authoryhsu3 <yhsu3@lenovo.com>
Sun, 8 Sep 2024 09:45:54 +0000 (17:45 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 11 Sep 2024 16:36:03 +0000 (16:36 +0000)
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>
NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c
NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c
NetworkPkg/UefiPxeBcDxe/PxeBcImpl.h
NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf

index f22a151e256dd7efd235d7d8ed78cd50137bc9e1..0af791dc5f589e33330f1a5726330346f0c655f3 100644 (file)
@@ -1268,5 +1268,12 @@ ON_EXIT:
     AsciiPrint ("\n  PXE-E99: Unexpected network error.\n");\r
   }\r
 \r
+  REPORT_STATUS_CODE_WITH_EXTENDED_DATA (\r
+    EFI_ERROR_CODE,\r
+    (EFI_STATUS_CODE_VALUE)(EFI_IO_BUS_IP_NETWORK | EFI_OEM_SPECIFIC | ((EFI_STATUS_CODE_VALUE)(Status & 0x1F))),\r
+    (VOID *)&(PxeBcMode->UsingIpv6),\r
+    sizeof (PxeBcMode->UsingIpv6)\r
+    );\r
+\r
   return Status;\r
 }\r
index 0a4baf6f90e8583c884cd2b4484401de35cc5f21..e29647447184fd4a7193426c75f42506cd06b985 100644 (file)
@@ -72,6 +72,13 @@ EfiPxeBcStart (
     return EFI_UNSUPPORTED;\r
   }\r
 \r
+  REPORT_STATUS_CODE_WITH_EXTENDED_DATA (\r
+    EFI_PROGRESS_CODE,\r
+    EFI_IO_BUS_IP_NETWORK | EFI_IOB_PC_RECONFIG,\r
+    (VOID *)&(Mode->UsingIpv6),\r
+    sizeof (Mode->UsingIpv6)\r
+    );\r
+\r
   if (Mode->UsingIpv6) {\r
     AsciiPrint ("\n>>Start PXE over IPv6");\r
     //\r
index 732889f23d16c1568f545bb33feed12b24384016..cdb9b3448094e47042966a6950453a7400605aaf 100644 (file)
@@ -48,6 +48,7 @@
 #include <Library/DpcLib.h>\r
 #include <Library/DevicePathLib.h>\r
 #include <Library/PcdLib.h>\r
+#include <Library/ReportStatusCodeLib.h>\r
 \r
 typedef struct _PXEBC_PRIVATE_DATA      PXEBC_PRIVATE_DATA;\r
 typedef struct _PXEBC_PRIVATE_PROTOCOL  PXEBC_PRIVATE_PROTOCOL;\r
index 3371c150be1336ea4a35b301b439f15c032d2648..d5aba1376ac07d563bd0c3a1e98d3a592b6a6f7c 100644 (file)
@@ -62,6 +62,7 @@
   DpcLib\r
   DevicePathLib\r
   PcdLib\r
+  ReportStatusCodeLib\r
 \r
 [Protocols]\r
   ## TO_START\r