13static EFI_GUID mPlatformHostInterfaceBmcUsbNicReadinessGuid =
14 BMC_USB_NIC_HOST_INTERFASCE_READINESS_GUID;
16static VOID *mPlatformHostInterfaceSnpRegistration =
NULL;
41 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry\n", __func__));
47 Status =
gBS->LocateProtocol (
48 &gEdkIIRedfishCredential2ProtocolGuid,
50 (VOID **)&CredentialProtocol
52 if (EFI_ERROR (Status)) {
57 Status = CredentialProtocol->GetAuthInfo (
63 if (!EFI_ERROR (Status)) {
70 if (Status == EFI_ACCESS_DENIED) {
78 " Redfish Credential Bootstrapping is %a\n",
79 ReturnBool ?
"supported" :
"not supported"
103 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry\n", __func__));
106 return EFI_NOT_FOUND;
113 *DeviceType = REDFISH_HOST_INTERFACE_DEVICE_TYPE_USB_V2;
117 if (InterfaceData ==
NULL) {
118 DEBUG ((DEBUG_ERROR,
"Failed to allocate memory for REDFISH_INTERFACE_DATA\n"));
119 return EFI_OUT_OF_RESOURCES;
122 InterfaceData->
DeviceType = REDFISH_HOST_INTERFACE_DEVICE_TYPE_USB_V2;
134 *DeviceDescriptor = InterfaceData;
147 return EFI_NOT_FOUND;
166 IN UINT8 IndexOfProtocolData
172 UINT8 HostNameLength;
173 CHAR8 *HostNameString;
175 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry\n", __func__));
177 if (
IsListEmpty (&mBmcUsbNic) || (IndexOfProtocolData > 0)) {
178 return EFI_NOT_FOUND;
185 HostNameString = (CHAR8 *)
PcdGetPtr (PcdRedfishHostName);
192 if (ThisProtocolRecord ==
NULL) {
193 DEBUG ((DEBUG_ERROR,
" Allocate memory fail for MC_HOST_INTERFACE_PROTOCOL_RECORD.\n"));
194 return EFI_OUT_OF_RESOURCES;
197 ThisProtocolRecord->ProtocolType = MCHostInterfaceProtocolTypeRedfishOverIP;
212 RedfishOverIpData->HostIpAssignmentType = RedfishHostIpAssignmentUnknown;
213 RedfishOverIpData->RedfishServiceIpDiscoveryType = RedfishHostIpAssignmentUnknown;
215 RedfishOverIpData->HostIpAssignmentType = RedfishHostIpAssignmentStatic;
216 RedfishOverIpData->RedfishServiceIpDiscoveryType = RedfishHostIpAssignmentStatic;
217 }
else if (ThisInstance->
IpAssignedType == IpmiDynamicAddressBmcDhcp) {
218 RedfishOverIpData->HostIpAssignmentType = RedfishHostIpAssignmentDhcp;
219 RedfishOverIpData->RedfishServiceIpDiscoveryType = RedfishHostIpAssignmentDhcp;
223 RedfishOverIpData->HostIpAddressFormat = REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP4;
224 RedfishOverIpData->RedfishServiceIpAddressFormat = REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP4;
228 (VOID *)RedfishOverIpData->HostIpAddress,
235 (VOID *)RedfishOverIpData->HostIpMask,
240 (VOID *)RedfishOverIpData->RedfishServiceIpMask,
247 (VOID *)RedfishOverIpData->RedfishServiceIpAddress,
253 RedfishOverIpData->RedfishServiceIpPort =
PcdGet16 (PcdRedfishServicePort);
256 RedfishOverIpData->RedfishServiceVlanId = ThisInstance->
VLanId;
259 RedfishOverIpData->RedfishServiceHostnameLength = HostNameLength;
263 (VOID *)&RedfishOverIpData->RedfishServiceHostname,
264 (VOID *)HostNameString,
269 *ProtocolRecord = ThisProtocolRecord;
281 return EFI_NOT_FOUND;
298 UINT32 ResponseDataSize;
309 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry\n", __func__));
312 return EFI_NOT_FOUND;
324 GetLanConfigReq.SetSelector = 0;
325 GetLanConfigReq.BlockSelector = 0;
327 GetLanConfigReq.ChannelNumber.Bits.GetParameter = 0;
328 GetLanConfigReq.ChannelNumber.Bits.Reserved = 0;
329 GetLanConfigReq.ParameterSelector = IpmiLanIpAddressSource;
332 GetLanConfigReps->CompletionCode = IPMI_COMP_CODE_UNSPECIFIED;
338 if (EFI_ERROR (Status) || (GetLanConfigReps->CompletionCode != IPMI_COMP_CODE_NORMAL)) {
339 DEBUG ((DEBUG_ERROR,
" Failed to get IP address source at channel %d: %r, 0x%02x.\n", ThisInstance->
IpmiLanChannelNumber, Status, GetLanConfigReps->CompletionCode));
350 GetLanConfigReq.ParameterSelector = IpmiLanIpAddress;
353 GetLanConfigReps->CompletionCode = IPMI_COMP_CODE_UNSPECIFIED;
359 if (EFI_ERROR (Status) || (GetLanConfigReps->CompletionCode != IPMI_COMP_CODE_NORMAL)) {
360 DEBUG ((DEBUG_ERROR,
" Failed to get Dest IP address at channel %d: %r, 0x%02x.\n", ThisInstance->
IpmiLanChannelNumber, Status, GetLanConfigReps->CompletionCode));
368 " Dest IP address at channel %d: %d.%d.%d.%d\n",
370 DestIpAddress->IpAddress[0],
371 DestIpAddress->IpAddress[1],
372 DestIpAddress->IpAddress[2],
373 DestIpAddress->IpAddress[3]
381 CopyMem ((VOID *)&ThisInstance->
HostIpAddressIpv4, (VOID *)&DestIpAddress->IpAddress, sizeof (DestIpAddress->IpAddress));
386 " Host IP address at channel %d: %d.%d.%d.%d\n",
395 GetLanConfigReq.ParameterSelector = IpmiLanSubnetMask;
398 GetLanConfigReps->CompletionCode = IPMI_COMP_CODE_UNSPECIFIED;
404 if ((EFI_ERROR (Status)) || (GetLanConfigReps->CompletionCode != IPMI_COMP_CODE_NORMAL)) {
405 DEBUG ((DEBUG_ERROR,
" Failed to get subnet mask at channel %d: %r, 0x%02x.\n", ThisInstance->
IpmiLanChannelNumber, Status, GetLanConfigReps->CompletionCode));
413 " Subnet mask at channel %d: %d.%d.%d.%d\n",
415 SubnetMask->IpAddress[0],
416 SubnetMask->IpAddress[1],
417 SubnetMask->IpAddress[2],
418 SubnetMask->IpAddress[3]
420 CopyMem ((VOID *)&ThisInstance->
SubnetMaskIpv4, (VOID *)&SubnetMask->IpAddress, sizeof (SubnetMask->IpAddress));
424 GetLanConfigReq.ParameterSelector = IpmiLanDefaultGateway;
427 GetLanConfigReps->CompletionCode = IPMI_COMP_CODE_UNSPECIFIED;
433 if ((EFI_ERROR (Status)) || (GetLanConfigReps->CompletionCode != IPMI_COMP_CODE_NORMAL)) {
434 DEBUG ((DEBUG_ERROR,
" Failed to get default gateway at channel %d: %r, 0x%02x.\n", ThisInstance->
IpmiLanChannelNumber, Status, GetLanConfigReps->CompletionCode));
442 " Gateway at channel %d: %d.%d.%d.%d\n",
444 DefaultGateway->IpAddress[0],
445 DefaultGateway->IpAddress[1],
446 DefaultGateway->IpAddress[2],
447 DefaultGateway->IpAddress[3]
449 CopyMem ((VOID *)&ThisInstance->
GatewayIpv4, (VOID *)&DefaultGateway->IpAddress, sizeof (DefaultGateway->IpAddress));
453 GetLanConfigReq.ParameterSelector = IpmiLanVlanId;
456 GetLanConfigReps->CompletionCode = IPMI_COMP_CODE_UNSPECIFIED;
462 if ((EFI_ERROR (Status)) || (GetLanConfigReps->CompletionCode != IPMI_COMP_CODE_NORMAL)) {
463 DEBUG ((DEBUG_ERROR,
" Failed to get VLAN ID at channel %d: %r, 0x%02x.\n", ThisInstance->
IpmiLanChannelNumber, Status, GetLanConfigReps->CompletionCode));
470 if (LanVlanId->Data2.Bits.Enabled == 1) {
471 ThisInstance->
VLanId = LanVlanId->Data1.VanIdLowByte | (LanVlanId->Data2.Bits.VanIdHighByte << 8);
482 Status = ThisInstance->
ThisUsbIo->UsbGetDeviceDescriptor (ThisInstance->
ThisUsbIo, &UsbDeviceDescriptor);
483 if (!EFI_ERROR (Status)) {
485 ThisInstance->
UsbVendorId = UsbDeviceDescriptor.IdVendor;
486 ThisInstance->
UsbProductId = UsbDeviceDescriptor.IdProduct;
505 return EFI_NOT_FOUND;
526 IN UINT8 IpmiLanMacAddressSize
532 if (ChannelInfo ==
NULL) {
533 return EFI_OUT_OF_RESOURCES;
536 ChannelInfo->
Channel = ChannelNum;
537 CopyMem ((VOID *)&ChannelInfo->
MacAddress.Addr, (VOID *)IpmiLanChannelMacAddress->Addr, IpmiLanMacAddressSize);
565 return EFI_NOT_FOUND;
570 if (ThisInstance->
Channel == ChannelNum) {
571 *CachedIpmiLanChannel = ThisInstance;
583 return EFI_NOT_FOUND;
606 UINT32 ResponseDataSize;
612 UINT8 IpmiLanMacAddressSize;
614 BOOLEAN AlreadyCached;
616 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry.\n", __func__));
618 GetLanConfigReps =
NULL;
619 AlreadyCached =
FALSE;
621 AlreadyCached =
TRUE;
625 GetLanConfigReq.ChannelNumber.Uint8 = 0;
626 GetLanConfigReq.SetSelector = 0;
627 GetLanConfigReq.BlockSelector = 0;
628 GetLanConfigReq.ParameterSelector = IpmiLanMacAddress;
630 ExitStatus = EFI_NOT_FOUND;
631 for (ChannelNum = IPMI_CHANNEL_NUMBER_IMPLEMENTATION_SPECIFIC_1;
632 ChannelNum <= IPMI_CHANNEL_NUMBER_IMPLEMENTATION_SPECIFIC_11;
635 IpmiLanMacAddressSize = 0;
638 Status = EFI_NOT_FOUND;
646 CopyMem ((VOID *)&IpmiLanChannelMacAddress.Addr, (VOID *)&CachedIpmiLanChannel->
MacAddress.Addr, IpmiLanMacAddressSize);
650 GetChanelInfoRequest.ChannelNumber.Uint8 = 0;
651 GetChanelInfoRequest.ChannelNumber.Bits.ChannelNo = (UINT8)ChannelNum;
653 &GetChanelInfoRequest,
654 &GetChanelInfoResponse,
657 if (EFI_ERROR (Status)) {
658 DEBUG ((DEBUG_ERROR,
" - Channel %d fails to send command.\n", ChannelNum));
663 if ((GetChanelInfoResponse.CompletionCode != IPMI_COMP_CODE_NORMAL) || (ResponseDataSize == 0)) {
664 DEBUG ((DEBUG_ERROR,
" - Command returned fail: 0x%x.\n", GetChanelInfoResponse.CompletionCode));
670 " - Channel protocol = 0x%x, Media = 0x%x\n",
671 GetChanelInfoResponse.ProtocolType.Bits.ChannelProtocolType,
672 GetChanelInfoResponse.MediumType.Bits.ChannelMediumType
675 if (GetChanelInfoResponse.ChannelNumber.Bits.ChannelNo != ChannelNum) {
678 " - ChannelNumber = %d in the response which is not macthed to the request.\n",
679 GetChanelInfoResponse.ChannelNumber.Bits.ChannelNo
684 if ((GetChanelInfoResponse.MediumType.Bits.ChannelMediumType == IPMI_CHANNEL_MEDIA_TYPE_802_3_LAN) &&
685 (GetChanelInfoResponse.ProtocolType.Bits.ChannelProtocolType == IPMI_CHANNEL_PROTOCOL_TYPE_IPMB_1_0))
691 if (GetLanConfigReps ==
NULL) {
694 if (GetLanConfigReps ==
NULL) {
695 DEBUG ((DEBUG_ERROR,
" Allocate memory failed for getting MAC address.\n"));
700 GetLanConfigReq.ChannelNumber.Bits.ChannelNo = (UINT8)ChannelNum;
701 GetLanConfigReps->CompletionCode = IPMI_COMP_CODE_UNSPECIFIED;
707 if (EFI_ERROR (Status) || (GetLanConfigReps->CompletionCode != IPMI_COMP_CODE_NORMAL)) {
710 " Fails to get MAC address of channel %d, CompletionCode = %02x.\n",
712 GetLanConfigReps->CompletionCode
719 " %02x:%02x:%02x:%02x:%02x:%02x\n",
720 *((UINT8 *)(GetLanConfigReps + 1) + 0),
721 *((UINT8 *)(GetLanConfigReps + 1) + 1),
722 *((UINT8 *)(GetLanConfigReps + 1) + 2),
723 *((UINT8 *)(GetLanConfigReps + 1) + 3),
724 *((UINT8 *)(GetLanConfigReps + 1) + 4),
725 *((UINT8 *)(GetLanConfigReps + 1) + 5)
728 CopyMem ((VOID *)&IpmiLanChannelMacAddress.Addr, (VOID *)(GetLanConfigReps + 1), IpmiLanMacAddressSize);
733 if (IpmiLanMacAddressSize != 0) {
734 if (!AlreadyCached) {
737 CacheIpmiLanMac ((UINT8)ChannelNum, &IpmiLanChannelMacAddress, IpmiLanMacAddressSize);
747 if ((IpmiLanMacAddressSize != UsbNicInfo->MacAddressSize) ||
749 (VOID *)UsbNicInfo->MacAddress,
750 (VOID *)&IpmiLanChannelMacAddress.Addr,
751 IpmiLanMacAddressSize - 1
753 ((IpmiLanChannelMacAddress.Addr[IpmiLanMacAddressSize - 1] - 1) !=
754 *(UsbNicInfo->MacAddress + IpmiLanMacAddressSize - 1))
762 UsbNicInfo->IpmiLanChannelNumber = (UINT8)ChannelNum;
763 UsbNicInfo->IsExposedByBmc =
TRUE;
770 if (GetLanConfigReps !=
NULL) {
791 if (ThisDevicePath ==
NULL) {
802 return ThisDevicePath;
831 CHAR16 *DevicePathStr;
838 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry.\n", __func__));
841 if (DevicePathStr !=
NULL) {
845 DEBUG ((DEBUG_ERROR,
"Failed to convert device path.\n"));
846 return EFI_INVALID_PARAMETER;
852 Status =
gBS->LocateHandle (
854 &gEfiUsbIoProtocolGuid,
859 if (Status == EFI_BUFFER_TOO_SMALL) {
862 if (HandleBuffer ==
NULL) {
863 DEBUG ((DEBUG_ERROR,
" Falied to allocate buffer for the handles.\n"));
864 return EFI_OUT_OF_RESOURCES;
867 Status =
gBS->LocateHandle (
869 &gEfiUsbIoProtocolGuid,
874 if (EFI_ERROR (Status)) {
875 DEBUG ((DEBUG_ERROR,
" Falied to locate UsbIo protocol handles.\n"));
883 for (Index = 0; Index < (BufferSize/
sizeof (
EFI_HANDLE)); Index++) {
884 Status =
gBS->HandleProtocol (
885 *(HandleBuffer + Index),
886 &gEfiDevicePathProtocolGuid,
887 (VOID **)&ThisDevicePath
889 if (EFI_ERROR (Status)) {
895 if (DevicePathStr !=
NULL) {
899 DEBUG ((DEBUG_ERROR,
"Failed to convert device path on #%d instance of UsbIo.\n", Index));
903 Status = EFI_NOT_FOUND;
906 ThisUsbDevicePath = UsbDevicePath;
911 if (ThisUsbDevicePath ==
NULL) {
920 if (ThisDevicePath ==
NULL) {
926 ThisDevicePathEnd = ThisDevicePath;
927 ThisUsbDevicePathEnd = ThisUsbDevicePath;
930 if (TempDevicePath ==
NULL) {
934 ThisDevicePathEnd = TempDevicePath;
939 if (TempDevicePath ==
NULL) {
943 ThisUsbDevicePathEnd = TempDevicePath;
953 (VOID *)ThisDevicePath,
954 (VOID *)ThisUsbDevicePath,
966 Status =
gBS->HandleProtocol (
967 *(HandleBuffer + Index),
968 &gEfiUsbIoProtocolGuid,
974 return EFI_NOT_FOUND;
994 DevicePath = UsbDevicePath;
1017 return EFI_NOT_FOUND;
1045 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry.\n", __func__));
1046 Status =
gBS->HandleProtocol (
1048 &gEfiSimpleNetworkProtocolGuid,
1051 if (EFI_ERROR (Status)) {
1052 DEBUG ((DEBUG_ERROR,
" Failed to locate SNP.\n"));
1057 if (EFI_ERROR (Status)) {
1058 DEBUG ((DEBUG_ERROR,
" Failed to find USBIO.\n"));
1064 if (BmcUsbNic ==
NULL) {
1065 DEBUG ((DEBUG_ERROR,
" Failed to allocate memory for HOST_INTERFACE_BMC_USB_NIC_INFO.\n"));
1066 return EFI_OUT_OF_RESOURCES;
1073 DEBUG ((DEBUG_ERROR,
" Failed to allocate memory for HW MAC addresss.\n"));
1075 return EFI_OUT_OF_RESOURCES;
1126 BOOLEAN GotBmcUsbNic;
1127 CHAR16 *DevicePathStr;
1129 if ((HandleNumer == 0) || (HandleBuffer ==
NULL)) {
1130 return EFI_INVALID_PARAMETER;
1133 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry, #%d SNP handle\n", __func__, HandleNumer));
1135 GotBmcUsbNic =
FALSE;
1136 for (Index = 0; Index < HandleNumer; Index++) {
1137 DEBUG ((DEBUG_MANAGEABILITY,
" Locate device path on handle 0x%08x\n", *(HandleBuffer + Index)));
1138 Status =
gBS->HandleProtocol (
1139 *(HandleBuffer + Index),
1140 &gEfiDevicePathProtocolGuid,
1141 (VOID **)&DevicePath
1143 if (EFI_ERROR (Status)) {
1144 DEBUG ((DEBUG_ERROR,
" Failed to locate device path on %d handle.\n", Index));
1149 if (DevicePathStr !=
NULL) {
1150 DEBUG ((DEBUG_MANAGEABILITY,
" Device path: %s\n", DevicePathStr));
1158 if (!EFI_ERROR (Status)) {
1160 if (!EFI_ERROR (Status)) {
1161 GotBmcUsbNic =
TRUE;
1179 DEBUG ((DEBUG_MANAGEABILITY,
"No BMC USB NIC found on SNP handles\n"));
1180 return EFI_NOT_FOUND;
1208 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry, the registration key - 0x%08x.\n", __func__, Registration));
1211 HandleBuffer =
NULL;
1216 Status =
gBS->LocateHandle (
1218 &gEfiSimpleNetworkProtocolGuid,
1223 if (Status == EFI_BUFFER_TOO_SMALL) {
1226 if (HandleBuffer ==
NULL) {
1227 DEBUG ((DEBUG_ERROR,
" Falied to allocate buffer for the handles.\n"));
1228 return EFI_OUT_OF_RESOURCES;
1231 Status =
gBS->LocateHandle (
1233 &gEfiSimpleNetworkProtocolGuid,
1238 if (EFI_ERROR (Status)) {
1239 DEBUG ((DEBUG_ERROR,
" Falied to locate SNP protocol handles.\n"));
1243 }
else if (EFI_ERROR (Status)) {
1244 if (Registration !=
NULL) {
1254 if (!EFI_ERROR (Status)) {
1258 if (!EFI_ERROR (Status)) {
1260 Status =
gBS->InstallProtocolInterface (
1262 &mPlatformHostInterfaceBmcUsbNicReadinessGuid,
1266 if (EFI_ERROR (Status)) {
1267 DEBUG ((DEBUG_ERROR,
" Install protocol fail %r.\n", Status));
1273 }
while (Registration !=
NULL);
1293 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry.\n", __func__));
1321 DEBUG ((DEBUG_MANAGEABILITY,
"%a: Entry\n", __func__));
1323 *InformationReadinessGuid =
NULL;
1332 if (!EFI_ERROR (Status)) {
1333 return EFI_ALREADY_STARTED;
1336 if (Status == EFI_NOT_FOUND) {
1340 Status =
gBS->CreateEvent (
1345 &mPlatformHostInterfaceSnpEvent
1347 if (EFI_ERROR (Status)) {
1348 DEBUG ((DEBUG_ERROR,
"%a: Fail to create event for the installation of SNP protocol.", __func__));
1352 Status =
gBS->RegisterProtocolNotify (
1353 &gEfiSimpleNetworkProtocolGuid,
1354 mPlatformHostInterfaceSnpEvent,
1355 &mPlatformHostInterfaceSnpRegistration
1357 if (EFI_ERROR (Status)) {
1358 DEBUG ((DEBUG_ERROR,
"%a: Fail to register event for the installation of SNP protocol.", __func__));
1362 *InformationReadinessGuid = &mPlatformHostInterfaceBmcUsbNicReadinessGuid;
1366 DEBUG ((DEBUG_ERROR,
"%a: Something wrong when look for BMC USB NIC.\n", __func__));
BOOLEAN EFIAPI IsListEmpty(IN CONST LIST_ENTRY *ListHead)
LIST_ENTRY *EFIAPI GetNextNode(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
BOOLEAN EFIAPI IsNodeAtEnd(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
LIST_ENTRY *EFIAPI GetFirstNode(IN CONST LIST_ENTRY *List)
RETURN_STATUS EFIAPI StrToGuid(IN CONST CHAR16 *String, OUT GUID *Guid)
LIST_ENTRY *EFIAPI InitializeListHead(IN OUT LIST_ENTRY *ListHead)
UINTN EFIAPI AsciiStrSize(IN CONST CHAR8 *String)
UINTN EFIAPI StrLen(IN CONST CHAR16 *String)
LIST_ENTRY *EFIAPI InsertTailList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
INTN EFIAPI CompareMem(IN CONST VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
#define MESSAGING_DEVICE_PATH
UINT8 EFIAPI DevicePathType(IN CONST VOID *Node)
UINTN EFIAPI DevicePathNodeLength(IN CONST VOID *Node)
UINT8 EFIAPI DevicePathSubType(IN CONST VOID *Node)
BOOLEAN EFIAPI IsDevicePathEnd(IN CONST VOID *Node)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI NextDevicePathNode(IN CONST VOID *Node)
CHAR16 *EFIAPI ConvertDevicePathToText(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, IN BOOLEAN DisplayOnly, IN BOOLEAN AllowShortcuts)
EDKII_REDFISH_AUTH_METHOD
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
EFI_STATUS EFIAPI IpmiGetLanConfigurationParameters(IN IPMI_GET_LAN_CONFIGURATION_PARAMETERS_REQUEST *GetLanConfigurationParametersRequest, OUT IPMI_GET_LAN_CONFIGURATION_PARAMETERS_RESPONSE *GetLanConfigurationParametersResponse, IN OUT UINT32 *GetLanConfigurationParametersSize)
EFI_STATUS EFIAPI IpmiGetChannelInfo(IN IPMI_GET_CHANNEL_INFO_REQUEST *GetChannelInfoRequest, OUT IPMI_GET_CHANNEL_INFO_RESPONSE *GetChannelInfoResponse, OUT UINT32 *GetChannelInfoResponseSize)
#define ASSERT_EFI_ERROR(StatusParameter)
#define DEBUG(Expression)
#define PcdGet16(TokenName)
#define PcdGetPtr(TokenName)
VOID *EFIAPI AllocatePool(IN UINTN AllocationSize)
#define DEBUG_REDFISH_HOST_INTERFACE
Debug error level for Redfish Host INterface.
#define USB_INTERFACE_DEVICE_DESCRIPTOR_V2_SIZE_1_3
EFI_SIMPLE_NETWORK_MODE * Mode
UINT8 MacAddressSize
MAC address size;.
UINT8 Channel
IPMI Channel number.
LIST_ENTRY NextInstance
Link to the next IPMI LAN Channel.
EFI_MAC_ADDRESS MacAddress
IPMI LAN Channel MAC address.
EFI_MAC_ADDRESS CurrentAddress
UINT8 SubnetMaskIpv4[4]
Subnet mask.
EFI_SIMPLE_NETWORK_PROTOCOL * ThisSnp
UINTN MacAddressSize
HW address size.
UINT8 GatewayIpv4[4]
Gateway IP address.
UINT16 UsbProductId
USB Product ID of this BMC exposed USB NIC.
UINT8 HostIpAddressIpv4[4]
Host IP address.
UINT8 * MacAddress
HW address.
LIST_ENTRY NextInstance
Link to the next instance.
BOOLEAN IsSuppportedHostInterface
UINT8 IpAssignedType
Redfish service IP assign type.
UINT8 IpmiLanChannelNumber
BMC IPMI Lan Channel number.
EFI_USB_IO_PROTOCOL * ThisUsbIo
BOOLEAN CredentialBootstrapping
UINT8 RedfishIpAddressIpv4[4]
Redfish service IP address.
UINT16 UsbVendorId
USB Vendor ID of this BMC exposed USB NIC.
Device descriptor data formated based on Device Type.
DEVICE_DESCRITOR DeviceDescriptor
The Device descriptor.
UINT8 DeviceType
The Device Type of the interface.
UINT8 MacAddress[6]
The MAC address of the PCI/PCIe network device.
UINT16 CredentialBootstrappingHandle
Credential bootstrapping handle.
UINT16 Characteristics
Additional device characteristics.
USB_INTERFACE_DEVICE_DESCRIPTOR_V2 UsbDeviceV2
Device type USB V2 device discriptor.