123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570 |
- /** @file
- PCI/PCIe network interface instace of RedfishPlatformHostInterfaceLib
- Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
- (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
- Copyright (C) 2022 Advanced Micro Devices, Inc. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include <Uefi.h>
- #include <Library/BaseLib.h>
- #include <Library/BaseMemoryLib.h>
- #include <Library/DebugLib.h>
- #include <Library/DevicePathLib.h>
- #include <Library/MemoryAllocationLib.h>
- #include <Library/PrintLib.h>
- #include <Library/RedfishHostInterfaceLib.h>
- #include <Library/UefiLib.h>
- #include <Library/UefiBootServicesTableLib.h>
- #include <Library/UefiRuntimeServicesTableLib.h>
- #include <Pcd/RestExServiceDevicePath.h>
- #include <Guid/GlobalVariable.h>
- #define VERBOSE_COLUME_SIZE (16)
- REDFISH_OVER_IP_PROTOCOL_DATA *mRedfishOverIpProtocolData;
- UINT8 mRedfishProtocolDataSize;
- /**
- Get the MAC address of NIC.
- @param[out] MacAddress Pointer to retrieve MAC address
- @retval EFI_SUCCESS MAC address is returned in MacAddress
- **/
- EFI_STATUS
- GetMacAddressInformation (
- OUT EFI_MAC_ADDRESS *MacAddress
- )
- {
- MAC_ADDR_DEVICE_PATH *Mac;
- REST_EX_SERVICE_DEVICE_PATH_DATA *RestExServiceDevicePathData;
- EFI_DEVICE_PATH_PROTOCOL *RestExServiceDevicePath;
- MAC_ADDR_DEVICE_PATH *MacAddressDevicePath;
- Mac = NULL;
- RestExServiceDevicePathData = NULL;
- RestExServiceDevicePath = NULL;
- RestExServiceDevicePathData = (REST_EX_SERVICE_DEVICE_PATH_DATA *)PcdGetPtr (PcdRedfishRestExServiceDevicePath);
- if ((RestExServiceDevicePathData == NULL) ||
- (RestExServiceDevicePathData->DevicePathNum == 0) ||
- !IsDevicePathValid (RestExServiceDevicePathData->DevicePath, 0))
- {
- return EFI_NOT_FOUND;
- }
- RestExServiceDevicePath = RestExServiceDevicePathData->DevicePath;
- if (RestExServiceDevicePathData->DevicePathMatchMode != DEVICE_PATH_MATCH_MAC_NODE) {
- return EFI_NOT_FOUND;
- }
- //
- // Find Mac DevicePath Node.
- //
- while (!IsDevicePathEnd (RestExServiceDevicePath) &&
- ((DevicePathType (RestExServiceDevicePath) != MESSAGING_DEVICE_PATH) ||
- (DevicePathSubType (RestExServiceDevicePath) != MSG_MAC_ADDR_DP)))
- {
- RestExServiceDevicePath = NextDevicePathNode (RestExServiceDevicePath);
- }
- if (!IsDevicePathEnd (RestExServiceDevicePath)) {
- MacAddressDevicePath = (MAC_ADDR_DEVICE_PATH *)RestExServiceDevicePath;
- CopyMem ((VOID *)MacAddress, (VOID *)&MacAddressDevicePath->MacAddress, sizeof (EFI_MAC_ADDRESS));
- return EFI_SUCCESS;
- }
- return EFI_NOT_FOUND;
- }
- /**
- Get platform Redfish host interface device descriptor.
- @param[out] DeviceType Pointer to retrieve device type.
- @param[out] DeviceDescriptor Pointer to retrieve REDFISH_INTERFACE_DATA, caller has to free
- this memory using FreePool().
- @retval EFI_SUCCESS Device descriptor is returned successfully in DeviceDescriptor.
- @retval EFI_NOT_FOUND No Redfish host interface descriptor provided on this platform.
- @retval Others Fail to get device descriptor.
- **/
- EFI_STATUS
- RedfishPlatformHostInterfaceDeviceDescriptor (
- OUT UINT8 *DeviceType,
- OUT REDFISH_INTERFACE_DATA **DeviceDescriptor
- )
- {
- EFI_STATUS Status;
- EFI_MAC_ADDRESS MacAddress;
- REDFISH_INTERFACE_DATA *RedfishInterfaceData;
- PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2 *ThisDeviceDescriptor;
- RedfishInterfaceData = AllocateZeroPool (sizeof (PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2) + 1);
- if (RedfishInterfaceData == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
- RedfishInterfaceData->DeviceType = REDFISH_HOST_INTERFACE_DEVICE_TYPE_PCI_PCIE_V2;
- //
- // Fill up device type information.
- //
- ThisDeviceDescriptor = (PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2 *)((UINT8 *)RedfishInterfaceData + 1);
- ThisDeviceDescriptor->Length = sizeof (PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2) + 1;
- Status = GetMacAddressInformation (&MacAddress);
- if (EFI_ERROR (Status)) {
- FreePool (RedfishInterfaceData);
- return EFI_NOT_FOUND;
- }
- CopyMem ((VOID *)&ThisDeviceDescriptor->MacAddress, (VOID *)&MacAddress, sizeof (ThisDeviceDescriptor->MacAddress));
- *DeviceType = REDFISH_HOST_INTERFACE_DEVICE_TYPE_PCI_PCIE_V2;
- *DeviceDescriptor = RedfishInterfaceData;
- return EFI_SUCCESS;
- }
- /**
- Get platform Redfish host interface protocol data.
- Caller should pass NULL in ProtocolRecord to retrive the first protocol record.
- Then continuously pass previous ProtocolRecord for retrieving the next ProtocolRecord.
- @param[out] ProtocolRecord Pointer to retrieve the protocol record.
- caller has to free the new protocol record returned from
- this function using FreePool().
- @param[in] IndexOfProtocolData The index of protocol data.
- @retval EFI_SUCCESS Protocol records are all returned.
- @retval EFI_NOT_FOUND No more protocol records.
- @retval Others Fail to get protocol records.
- **/
- EFI_STATUS
- RedfishPlatformHostInterfaceProtocolData (
- OUT MC_HOST_INTERFACE_PROTOCOL_RECORD **ProtocolRecord,
- IN UINT8 IndexOfProtocolData
- )
- {
- MC_HOST_INTERFACE_PROTOCOL_RECORD *ThisProtocolRecord;
- if (mRedfishOverIpProtocolData == 0) {
- return EFI_NOT_FOUND;
- }
- if (IndexOfProtocolData == 0) {
- //
- // Return the first Redfish protocol data to caller. We only have
- // one protocol data in this case.
- //
- ThisProtocolRecord = (MC_HOST_INTERFACE_PROTOCOL_RECORD *)AllocatePool (mRedfishProtocolDataSize + sizeof (MC_HOST_INTERFACE_PROTOCOL_RECORD) - 1);
- ThisProtocolRecord->ProtocolType = MCHostInterfaceProtocolTypeRedfishOverIP;
- ThisProtocolRecord->ProtocolTypeDataLen = mRedfishProtocolDataSize;
- CopyMem ((VOID *)&ThisProtocolRecord->ProtocolTypeData, (VOID *)mRedfishOverIpProtocolData, mRedfishProtocolDataSize);
- *ProtocolRecord = ThisProtocolRecord;
- return EFI_SUCCESS;
- }
- return EFI_NOT_FOUND;
- }
- /**
- Dump IPv4 address.
- @param[in] Ip IPv4 address
- **/
- VOID
- InternalDumpIp4Addr (
- IN EFI_IPv4_ADDRESS *Ip
- )
- {
- UINTN Index;
- for (Index = 0; Index < 4; Index++) {
- DEBUG ((DEBUG_VERBOSE, "%d", Ip->Addr[Index]));
- if (Index < 3) {
- DEBUG ((DEBUG_VERBOSE, "."));
- }
- }
- DEBUG ((DEBUG_VERBOSE, "\n"));
- }
- /**
- Dump IPv6 address.
- @param[in] Ip IPv6 address
- **/
- VOID
- InternalDumpIp6Addr (
- IN EFI_IPv6_ADDRESS *Ip
- )
- {
- UINTN Index;
- for (Index = 0; Index < 16; Index++) {
- if (Ip->Addr[Index] != 0) {
- DEBUG ((DEBUG_VERBOSE, "%x", Ip->Addr[Index]));
- }
- Index++;
- if (Index > 15) {
- return;
- }
- if (((Ip->Addr[Index] & 0xf0) == 0) && (Ip->Addr[Index - 1] != 0)) {
- DEBUG ((DEBUG_VERBOSE, "0"));
- }
- DEBUG ((DEBUG_VERBOSE, "%x", Ip->Addr[Index]));
- if (Index < 15) {
- DEBUG ((DEBUG_VERBOSE, ":"));
- }
- }
- DEBUG ((DEBUG_VERBOSE, "\n"));
- }
- /**
- Dump data
- @param[in] Data Pointer to data.
- @param[in] Size size of data to dump.
- **/
- VOID
- InternalDumpData (
- IN UINT8 *Data,
- IN UINTN Size
- )
- {
- UINTN Index;
- for (Index = 0; Index < Size; Index++) {
- DEBUG ((DEBUG_VERBOSE, "%02x ", (UINTN)Data[Index]));
- }
- }
- /**
- Dump hex data
- @param[in] Data Pointer to hex data.
- @param[in] Size size of hex data to dump.
- **/
- VOID
- InternalDumpHex (
- IN UINT8 *Data,
- IN UINTN Size
- )
- {
- UINTN Index;
- UINTN Count;
- UINTN Left;
- Count = Size / VERBOSE_COLUME_SIZE;
- Left = Size % VERBOSE_COLUME_SIZE;
- for (Index = 0; Index < Count; Index++) {
- InternalDumpData (Data + Index * VERBOSE_COLUME_SIZE, VERBOSE_COLUME_SIZE);
- DEBUG ((DEBUG_VERBOSE, "\n"));
- }
- if (Left != 0) {
- InternalDumpData (Data + Index * VERBOSE_COLUME_SIZE, Left);
- DEBUG ((DEBUG_VERBOSE, "\n"));
- }
- DEBUG ((DEBUG_VERBOSE, "\n"));
- }
- /**
- Dump Redfish over IP protocol data
- @param[in] RedfishProtocolData Pointer to REDFISH_OVER_IP_PROTOCOL_DATA
- @param[in] RedfishProtocolDataSize size of data to dump.
- **/
- VOID
- DumpRedfishIpProtocolData (
- IN REDFISH_OVER_IP_PROTOCOL_DATA *RedfishProtocolData,
- IN UINT8 RedfishProtocolDataSize
- )
- {
- CHAR16 Hostname[16];
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData: \n"));
- InternalDumpHex ((UINT8 *)RedfishProtocolData, RedfishProtocolDataSize);
- DEBUG ((DEBUG_VERBOSE, "Parsing as below: \n"));
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->ServiceUuid - %g\n", &(RedfishProtocolData->ServiceUuid)));
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->HostIpAssignmentType - %d\n", RedfishProtocolData->HostIpAssignmentType));
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->HostIpAddressFormat - %d\n", RedfishProtocolData->HostIpAddressFormat));
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->HostIpAddress: \n"));
- if (RedfishProtocolData->HostIpAddressFormat == 0x01) {
- InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *)(RedfishProtocolData->HostIpAddress));
- } else {
- InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *)(RedfishProtocolData->HostIpAddress));
- }
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->HostIpMask: \n"));
- if (RedfishProtocolData->HostIpAddressFormat == 0x01) {
- InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *)(RedfishProtocolData->HostIpMask));
- } else {
- InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *)(RedfishProtocolData->HostIpMask));
- }
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceIpDiscoveryType - %d\n", RedfishProtocolData->RedfishServiceIpDiscoveryType));
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceIpAddressFormat - %d\n", RedfishProtocolData->RedfishServiceIpAddressFormat));
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceIpAddress: \n"));
- if (RedfishProtocolData->RedfishServiceIpAddressFormat == 0x01) {
- InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *)(RedfishProtocolData->RedfishServiceIpAddress));
- } else {
- InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *)(RedfishProtocolData->RedfishServiceIpAddress));
- }
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceIpMask: \n"));
- if (RedfishProtocolData->RedfishServiceIpAddressFormat == 0x01) {
- InternalDumpIp4Addr ((EFI_IPv4_ADDRESS *)(RedfishProtocolData->RedfishServiceIpMask));
- } else {
- InternalDumpIp6Addr ((EFI_IPv6_ADDRESS *)(RedfishProtocolData->RedfishServiceIpMask));
- }
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceIpPort - %d\n", RedfishProtocolData->RedfishServiceIpPort));
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceVlanId - %d\n", RedfishProtocolData->RedfishServiceVlanId));
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceHostnameLength - %d\n", RedfishProtocolData->RedfishServiceHostnameLength));
- AsciiStrToUnicodeStrS ((CHAR8 *)RedfishProtocolData->RedfishServiceHostname, Hostname, sizeof (Hostname) / sizeof (Hostname[0]));
- DEBUG ((DEBUG_VERBOSE, "RedfishProtocolData->RedfishServiceHostname - %s\n", Hostname));
- }
- /**
- Get Redfish host interface protocol data from variale.
- @param[out] RedfishProtocolData Pointer to retrieve REDFISH_OVER_IP_PROTOCOL_DATA.
- @param[out] RedfishProtocolDataSize Size of REDFISH_OVER_IP_PROTOCOL_DATA.
- @retval EFI_SUCESS REDFISH_OVER_IP_PROTOCOL_DATA is returned successfully.
- **/
- EFI_STATUS
- GetRedfishRecordFromVariable (
- OUT REDFISH_OVER_IP_PROTOCOL_DATA **RedfishProtocolData,
- OUT UINT8 *RedfishProtocolDataSize
- )
- {
- EFI_STATUS Status;
- UINT8 HostIpAssignmentType;
- UINTN HostIpAssignmentTypeSize;
- EFI_IPv4_ADDRESS HostIpAddress;
- UINTN IPv4DataSize;
- EFI_IPv4_ADDRESS HostIpMask;
- EFI_IPv4_ADDRESS RedfishServiceIpAddress;
- EFI_IPv4_ADDRESS RedfishServiceIpMask;
- UINT16 RedfishServiceIpPort;
- UINTN IpPortDataSize;
- UINT8 HostNameSize;
- CHAR8 RedfishHostName[20];
- if ((RedfishProtocolData == NULL) || (RedfishProtocolDataSize == NULL)) {
- return EFI_INVALID_PARAMETER;
- }
- //
- // 1. Retrieve Address Information from variable.
- //
- Status = gRT->GetVariable (
- L"HostIpAssignmentType",
- &gEmuRedfishServiceGuid,
- NULL,
- &HostIpAssignmentTypeSize,
- &HostIpAssignmentType
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "RedfishPlatformDxe: GetVariable HostIpAssignmentType - %r\n", Status));
- return Status;
- }
- IPv4DataSize = sizeof (EFI_IPv4_ADDRESS);
- if (HostIpAssignmentType == 1 ) {
- Status = gRT->GetVariable (
- L"HostIpAddress",
- &gEmuRedfishServiceGuid,
- NULL,
- &IPv4DataSize,
- &HostIpAddress
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "RedfishPlatformDxe: GetVariable HostIpAddress - %r\n", Status));
- return Status;
- }
- Status = gRT->GetVariable (
- L"HostIpMask",
- &gEmuRedfishServiceGuid,
- NULL,
- &IPv4DataSize,
- &HostIpMask
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "RedfishPlatformDxe: GetVariable HostIpMask - %r\n", Status));
- return Status;
- }
- }
- Status = gRT->GetVariable (
- L"RedfishServiceIpAddress",
- &gEmuRedfishServiceGuid,
- NULL,
- &IPv4DataSize,
- &RedfishServiceIpAddress
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "RedfishPlatformDxe: GetVariable RedfishServiceIpAddress - %r\n", Status));
- return Status;
- }
- Status = gRT->GetVariable (
- L"RedfishServiceIpMask",
- &gEmuRedfishServiceGuid,
- NULL,
- &IPv4DataSize,
- &RedfishServiceIpMask
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "RedfishPlatformDxe: GetVariable RedfishServiceIpMask - %r\n", Status));
- return Status;
- }
- Status = gRT->GetVariable (
- L"RedfishServiceIpPort",
- &gEmuRedfishServiceGuid,
- NULL,
- &IpPortDataSize,
- &RedfishServiceIpPort
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "RedfishPlatformDxe: GetVariable RedfishServiceIpPort - %r\n", Status));
- return Status;
- }
- AsciiSPrint (
- RedfishHostName,
- sizeof (RedfishHostName),
- "%d.%d.%d.%d",
- RedfishServiceIpAddress.Addr[0],
- RedfishServiceIpAddress.Addr[1],
- RedfishServiceIpAddress.Addr[2],
- RedfishServiceIpAddress.Addr[3]
- );
- HostNameSize = (UINT8)AsciiStrLen (RedfishHostName) + 1;
- //
- // 2. Protocol Data Size.
- //
- *RedfishProtocolDataSize = sizeof (REDFISH_OVER_IP_PROTOCOL_DATA) - 1 + HostNameSize;
- //
- // 3. Protocol Data.
- //
- *RedfishProtocolData = (REDFISH_OVER_IP_PROTOCOL_DATA *)AllocateZeroPool (*RedfishProtocolDataSize);
- if (*RedfishProtocolData == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
- CopyGuid (&(*RedfishProtocolData)->ServiceUuid, &gEmuRedfishServiceGuid);
- (*RedfishProtocolData)->HostIpAssignmentType = HostIpAssignmentType;
- (*RedfishProtocolData)->HostIpAddressFormat = 1; // Only support IPv4
- if (HostIpAssignmentType == 1 ) {
- (*RedfishProtocolData)->HostIpAddress[0] = HostIpAddress.Addr[0];
- (*RedfishProtocolData)->HostIpAddress[1] = HostIpAddress.Addr[1];
- (*RedfishProtocolData)->HostIpAddress[2] = HostIpAddress.Addr[2];
- (*RedfishProtocolData)->HostIpAddress[3] = HostIpAddress.Addr[3];
- (*RedfishProtocolData)->HostIpMask[0] = HostIpMask.Addr[0];
- (*RedfishProtocolData)->HostIpMask[1] = HostIpMask.Addr[1];
- (*RedfishProtocolData)->HostIpMask[2] = HostIpMask.Addr[2];
- (*RedfishProtocolData)->HostIpMask[3] = HostIpMask.Addr[3];
- }
- (*RedfishProtocolData)->RedfishServiceIpDiscoveryType = 1; // Use static IP address
- (*RedfishProtocolData)->RedfishServiceIpAddressFormat = 1; // Only support IPv4
- (*RedfishProtocolData)->RedfishServiceIpAddress[0] = RedfishServiceIpAddress.Addr[0];
- (*RedfishProtocolData)->RedfishServiceIpAddress[1] = RedfishServiceIpAddress.Addr[1];
- (*RedfishProtocolData)->RedfishServiceIpAddress[2] = RedfishServiceIpAddress.Addr[2];
- (*RedfishProtocolData)->RedfishServiceIpAddress[3] = RedfishServiceIpAddress.Addr[3];
- (*RedfishProtocolData)->RedfishServiceIpMask[0] = RedfishServiceIpMask.Addr[0];
- (*RedfishProtocolData)->RedfishServiceIpMask[1] = RedfishServiceIpMask.Addr[1];
- (*RedfishProtocolData)->RedfishServiceIpMask[2] = RedfishServiceIpMask.Addr[2];
- (*RedfishProtocolData)->RedfishServiceIpMask[3] = RedfishServiceIpMask.Addr[3];
- (*RedfishProtocolData)->RedfishServiceIpPort = RedfishServiceIpPort;
- (*RedfishProtocolData)->RedfishServiceVlanId = 0xffffffff;
- (*RedfishProtocolData)->RedfishServiceHostnameLength = HostNameSize;
- AsciiStrCpyS ((CHAR8 *)((*RedfishProtocolData)->RedfishServiceHostname), HostNameSize, RedfishHostName);
- return Status;
- }
- /**
- Construct Redfish host interface protocol data.
- @param ImageHandle The image handle.
- @param SystemTable The system table.
- @retval EFI_SUCEESS Install Boot manager menu success.
- @retval Other Return error status.
- **/
- EFI_STATUS
- EFIAPI
- RedfishPlatformHostInterfaceConstructor (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
- {
- EFI_STATUS Status;
- Status = GetRedfishRecordFromVariable (&mRedfishOverIpProtocolData, &mRedfishProtocolDataSize);
- DEBUG ((DEBUG_INFO, "%a: GetRedfishRecordFromVariable() - %r\n", __FUNCTION__, Status));
- if (!EFI_ERROR (Status)) {
- DumpRedfishIpProtocolData (mRedfishOverIpProtocolData, mRedfishProtocolDataSize);
- }
- return EFI_SUCCESS;
- }
- /**
- Get the EFI protocol GUID installed by platform library which
- indicates the necessary information is ready for building
- SMBIOS 42h record.
- @param[out] InformationReadinessGuid Pointer to retrive the protocol
- GUID.
- @retval EFI_SUCCESS Notification is required for building up
- SMBIOS type 42h record.
- @retval EFI_UNSUPPORTED Notification is not required for building up
- SMBIOS type 42h record.
- @retval EFI_ALREADY_STARTED Platform host information is already ready.
- @retval Others Other errors.
- **/
- EFI_STATUS
- RedfishPlatformHostInterfaceNotification (
- OUT EFI_GUID **InformationReadinessGuid
- )
- {
- return EFI_UNSUPPORTED;
- }
|