public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-staging/RedfishHostInterfaceDxe PATCH 1/5] RedfishPkg/Include: Definitions of SMBIOS Redfish Host Interface
@ 2020-09-27 15:15 Abner Chang
  0 siblings, 0 replies; only message in thread
From: Abner Chang @ 2020-09-27 15:15 UTC (permalink / raw)
  To: devel; +Cc: abner.chang, Jiaxin Wu, Siyuan Fu, Fan Wang, Jiewen Yao,
	Nickle Wang

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=unknown-8bit, Size: 8711 bytes --]

BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=2912

Add definitions of SMBIOS Type 42 Host Interface.

Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com>
Signed-off-by: Ye Ting <ting.ye@intel.com>
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Signed-off-by: Wang Fan <fan.wang@intel.com>
Signed-off-by: Abner Chang <abner.chang@hpe.com>

Cc: Jiaxin Wu <jiaxin.wu@intel.com>
Cc: Siyuan Fu <siyuan.fu@intel.com>
Cc: Fan Wang <fan.wang@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Nickle Wang <nickle.wang@hpe.com>
---
 .../BZ2912RedfishHostInterface.h              | 165 ++++++++++++++++++
 RedfishPkg/RedfishPkg.dec                     |   3 +
 2 files changed, 168 insertions(+)
 create mode 100644 RedfishPkg/Include/IndustryStandard/BZ2912RedfishHostInterface.h

diff --git a/RedfishPkg/Include/IndustryStandard/BZ2912RedfishHostInterface.h b/RedfishPkg/Include/IndustryStandard/BZ2912RedfishHostInterface.h
new file mode 100644
index 00000000000..71fb0580032
--- /dev/null
+++ b/RedfishPkg/Include/IndustryStandard/BZ2912RedfishHostInterface.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_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
+
+#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 b4ecd13069a..4a11b7ea726 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.21.0.windows.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2020-09-27 15:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-09-27 15:15 [edk2-staging/RedfishHostInterfaceDxe PATCH 1/5] RedfishPkg/Include: Definitions of SMBIOS Redfish Host Interface Abner Chang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox