| /** @file | |
| This file defines the Redfish Interface Specific Data. | |
| Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> | |
| (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR> | |
| Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef REDFISH_HOST_INTERFACE_ | |
| #define REDFISH_HOST_INTERFACE_ | |
| #include <IndustryStandard/SmBios.h> | |
| #define REDFISH_HOST_INTERFACE_DEVICE_TYPE_USB 0x02 // We don't support this type of interface. | |
| // Use REDFISH_HOST_INTERFACE_DEVICE_TYPE_USB_V2 instead. | |
| #define REDFISH_HOST_INTERFACE_DEVICE_TYPE_PCI_PCIE 0x03 // We don't support this type of interface. | |
| // Use REDFISH_HOST_INTERFACE_DEVICE_TYPE_PCI_PCIE_V2 instead. | |
| #define REDFISH_HOST_INTERFACE_DEVICE_TYPE_USB_V2 0x04 | |
| #define REDFISH_HOST_INTERFACE_DEVICE_TYPE_PCI_PCIE_V2 0x05 | |
| #define REDFISH_HOST_INTERFACE_HOST_IP_ASSIGNMENT_TYPE_UNKNOWN 0x00 | |
| #define REDFISH_HOST_INTERFACE_HOST_IP_ASSIGNMENT_TYPE_STATIC 0x01 | |
| #define REDFISH_HOST_INTERFACE_HOST_IP_ASSIGNMENT_TYPE_DHCP 0x02 | |
| #define REDFISH_HOST_INTERFACE_HOST_IP_ASSIGNMENT_TYPE_AUTO_CONFIGURE 0x03 | |
| #define REDFISH_HOST_INTERFACE_HOST_IP_ASSIGNMENT_TYPE_HOST_SELECTED 0x04 | |
| #define REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_UNKNOWN 0x00 | |
| #define REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP4 0x01 | |
| #define REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_IP6 0x02 | |
| /// | |
| /// Definitions for IP assignment tyeps. | |
| /// | |
| typedef enum { | |
| RedfishHostIpAssignmentUnknown, | |
| RedfishHostIpAssignmentStatic, | |
| RedfishHostIpAssignmentDhcp, | |
| RedfishHostIpAssignmentAutoConfigure, | |
| RedfishHostIpAssignmentHostSelected, | |
| RedfishHostIpAssignmentReserved | |
| } REDFISH_HOST_IP_ASSIGNMENT; | |
| #pragma pack(1) | |
| /// | |
| /// Structure definitions of Host Interface device type 04h (USB Network Interface V2) | |
| /// | |
| typedef struct { | |
| UINT8 Length; ///< Length of the structure, including Device Type | |
| ///< and Length fields. | |
| UINT16 IdVendor; ///< The Vendor ID of the device, as read from the | |
| ///< idVendor field of the USB descriptor. | |
| UINT16 IdProduct; ///< The Product ID of the device, as read from the | |
| ///< idProduct field of the USB descriptor. | |
| UINT8 SerialNumberStr; ///< The string number for the Serial Number of the | |
| ///< device. The string data is read from the | |
| ///< iSerialNumber.bDescriptorType field of the USB | |
| ///< descriptor, and is converted from Unicode to ASCII | |
| ///< and is NULL terminated. | |
| UINT8 MacAddress[6]; ///< The MAC address of the PCI/PCIe network device. | |
| /// | |
| /// Below is defined in Redfish Host Interface spec v1.3 | |
| /// | |
| UINT16 Characteristics; ///< Additional device characteristics. | |
| UINT16 CredentialBootstrappingHandle; ///< Credential bootstrapping handle. | |
| } USB_INTERFACE_DEVICE_DESCRIPTOR_V2; | |
| // | |
| // Structure definitions of Host Interface device type 05h (PCI/PCIE V2) | |
| // | |
| typedef struct { | |
| UINT8 Length; ///< Length of the structure, including Device Type and Length fields. | |
| UINT16 VendorId; ///< The Vendor ID of the PCI/PCIe device. | |
| UINT16 DeviceId; ///< The Device ID of the PCI/PCIe device. | |
| UINT16 SubsystemVendorId; ///< The Subsystem Vendor ID of the PCI/PCIe device. | |
| UINT16 SubsystemId; ///< The Subsystem ID of the PCI/PCIe device. | |
| UINT8 MacAddress[6]; ///< The MAC address of the PCI/PCIe network device. | |
| UINT16 SegmemtGroupNumber; ///< The Segment Group Number of the PCI/PCIe. | |
| UINT8 BusNumber; ///< The Bus Number of the PCI/PCIe device. | |
| UINT8 DeviceFunctionNumber; ///< The Device/Function Number of the PCI/PCIe. | |
| } PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2; | |
| /// | |
| /// Structure definitions of Host Interface device type 80-FFh (OEM) | |
| /// | |
| typedef struct { | |
| UINT32 VendorIana; ///< The IANA code for the vendor (MSB first). | |
| UINT8 OemDefinedData[1]; ///< OEM defined data. | |
| } OEM_DEVICE_DESCRIPTOR; | |
| /// | |
| /// Define union for the Host Interface Device Descriptor | |
| /// | |
| #define USB_INTERFACE_DEVICE_DESCRIPTOR_V2_SIZE_1_3 0x11 ///< Length USB interface device v2 defined in | |
| ///< Redfish host interface spec v1.3 | |
| #define USB_INTERFACE_DEVICE_DESCRIPTOR_V2_SIZE_1_2 0x0d ///< Length USB interface device v2 defined in | |
| ///< Redfish host interface spec v1.2 | |
| typedef union { | |
| USB_INTERFACE_DEVICE_DESCRIPTOR_V2 UsbDeviceV2; ///< Device type USB V2 device discriptor. | |
| PCI_OR_PCIE_INTERFACE_DEVICE_DESCRIPTOR_V2 PciPcieDeviceV2; ///< Device type PCI/PCIe V2 device discriptor. | |
| OEM_DEVICE_DESCRIPTOR OemDevice; ///< OEM type device discriptor. | |
| } DEVICE_DESCRITOR; /// Device descriptor data formated based on Device Type. | |
| /// | |
| /// Interface Specific Data starts at offset 06h of the SMBIOS Type 42 struct. | |
| /// This table defines the Interface Specific data for Interface Type 40h. There | |
| /// are 3 types of Device Descriptor3 defined , however only 1 may be used in | |
| /// specific Tape 42 table. | |
| /// | |
| typedef struct { | |
| UINT8 DeviceType; ///< The Device Type of the interface. | |
| DEVICE_DESCRITOR DeviceDescriptor; ///< The Device descriptor. | |
| } REDFISH_INTERFACE_DATA; | |
| // | |
| // the protocol-specific data for the "Redfish Over IP" protocol | |
| // | |
| typedef struct { | |
| EFI_GUID ServiceUuid; // same as Redfish Service UUID in Redfish Service Root resource | |
| // | |
| // Unknown=00h, | |
| // Static=01h, | |
| // DHCP=02h, | |
| // AutoConfigure=03h, | |
| // HostSelected=04h, | |
| // other values reserved | |
| // | |
| UINT8 HostIpAssignmentType; | |
| // | |
| // Unknown=00h, | |
| // Ipv4=01h, | |
| // Ipv6=02h, | |
| // other values reserved | |
| // | |
| UINT8 HostIpAddressFormat; | |
| // | |
| // Used for Static and AutoConfigure. | |
| // For IPV4, use the first 4 Bytes and zero fill the remaining bytes. | |
| // | |
| UINT8 HostIpAddress[16]; | |
| // | |
| // Used for Static and AutoConfigure. | |
| // For IPV4, use the first 4 Bytes and zero fill the remaining bytes. | |
| // | |
| UINT8 HostIpMask[16]; | |
| // | |
| // Unknown=00h, | |
| // Static=01h, | |
| // DHCP=02h, | |
| // AutoConfigure=03h, | |
| // HostSelected=04h, | |
| // other values reserved | |
| // | |
| UINT8 RedfishServiceIpDiscoveryType; | |
| // | |
| // Unknown=00h, | |
| // Ipv4=01h, | |
| // Ipv6=02h, | |
| // other values reserved | |
| // | |
| UINT8 RedfishServiceIpAddressFormat; | |
| // | |
| // Used for Static and AutoConfigure. | |
| // For IPV4, use the first 4 Bytes and zero fill the remaining bytes. | |
| // | |
| UINT8 RedfishServiceIpAddress[16]; | |
| // | |
| // Used for Static and AutoConfigure. | |
| // For IPV4, use the first 4 Bytes and zero fill the remaining bytes. | |
| // | |
| UINT8 RedfishServiceIpMask[16]; | |
| UINT16 RedfishServiceIpPort; // Used for Static and AutoConfigure. | |
| UINT32 RedfishServiceVlanId; // Used for Static and AutoConfigure. | |
| UINT8 RedfishServiceHostnameLength; // length of the following hostname string | |
| UINT8 RedfishServiceHostname[1]; // hostname of Redfish Service | |
| } REDFISH_OVER_IP_PROTOCOL_DATA; | |
| #pragma pack() | |
| #endif |