[edk2-devel] [EFI Redfish Host Interface PATCH 1/5] RedfishPkg/Include: Definitions of SMBIOS Redfish Host Interface

Nickle Wang nickle.wang at hpe.com
Thu Oct 29 06:07:53 UTC 2020


Reviewed-by: Nickle Wang <nickle.wang at hpe.com>

> -----Original Message-----
> From: Chang, Abner (HPS SW/FW Technologist) <abner.chang at hpe.com>
> Sent: Tuesday, October 13, 2020 12:08 PM
> To: devel at edk2.groups.io
> Cc: Jiaxin Wu <jiaxin.wu at intel.com>; Siyuan Fu <siyuan.fu at intel.com>; Fan
> Wang <fan.wang at intel.com>; Jiewen Yao <jiewen.yao at intel.com>; Wang,
> Nickle (HPS SW) <nickle.wang at hpe.com>
> Subject: [EFI Redfish Host Interface PATCH 1/5] RedfishPkg/Include:
> Definitions of SMBIOS Redfish Host Interface
> 
> Add definitions of SMBIOS Type 42 Host Interface.
> 
> Signed-off-by: Jiaxin Wu <jiaxin.wu at intel.com>
> Signed-off-by: Siyuan Fu <siyuan.fu at intel.com>
> Signed-off-by: Fan Wang <fan.wang at intel.com>
> Signed-off-by: Abner Chang <abner.chang at hpe.com>
> 
> Cc: Jiaxin Wu <jiaxin.wu at intel.com>
> Cc: Siyuan Fu <siyuan.fu at intel.com>
> Cc: Fan Wang <fan.wang at intel.com>
> Cc: Jiewen Yao <jiewen.yao at intel.com>
> Cc: Nickle Wang <nickle.wang at hpe.com>
> ---
>  .../IndustryStandard/RedfishHostInterface.h   | 165 ++++++++++++++++++
>  RedfishPkg/RedfishPkg.dec                     |   3 +
>  2 files changed, 168 insertions(+)
>  create mode 100644
> RedfishPkg/Include/IndustryStandard/RedfishHostInterface.h
> 
> diff --git a/RedfishPkg/Include/IndustryStandard/RedfishHostInterface.h
> b/RedfishPkg/Include/IndustryStandard/RedfishHostInterface.h
> new file mode 100644
> index 0000000000..981f8a0cfb
> --- /dev/null
> +++ b/RedfishPkg/Include/IndustryStandard/RedfishHostInterface.h
> @@ -0,0 +1,165 @@
> +/** @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>
> +
> +  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_CONFIGU
> RE     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
> +
> +#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                   SecialNumberStr; ///< 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.
> +} 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;
> +
> +///
> +///  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.
> +  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.
> +  } DeviceDescriptor; /// Device descriptor data formated based on Device
> Type.
> +
> +} 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
> +
> diff --git a/RedfishPkg/RedfishPkg.dec b/RedfishPkg/RedfishPkg.dec
> index e95ec5fe10..de3611252e 100644
> --- a/RedfishPkg/RedfishPkg.dec
> +++ b/RedfishPkg/RedfishPkg.dec
> @@ -13,6 +13,9 @@
>    PACKAGE_GUID      = c432b76e-5232-11e7-9010-005056c00008
>    PACKAGE_VERSION   = 1.0
> 
> +[Includes]
> +  Include
> +
>  [Guids]
>    gEfiRedfishPkgTokenSpaceGuid      = { 0x4fdbccb7, 0xe829, 0x4b4c, { 0x88,
> 0x87, 0xb2, 0x3f, 0xd7, 0x25, 0x4b, 0x85 }}
> 
> --
> 2.17.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66727): https://edk2.groups.io/g/devel/message/66727
Mute This Topic: https://groups.io/mt/77477501/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list