Thanks for the great work to add generic IPMI definition. Here is my thought:
1) It is good to split header file definition to some small .h. Can we add more description in each function header description, so that people can know where to find the data structure? For example: +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h +/** @file + IPMI 2.0 definitions from the IPMI Specification, revision 2.0 + + This file contains all NetFn App commands, including: + IPM Device "Global" Commands (Chapter 20) + Firmware Firewall & Command Discovery Commands (Chapter 21) + BMC Watchdog Timer Commands (Chapter 27) + BMC Device and Messaging Commands (Chapter 22) + RMCP+ Support and Payload Commands (Chapter 24) + + See IPMI specification, Appendix G, Command Assignments + and Appendix H, Sub-function Assignments. + + Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> 2) Also, can we add Command category info before each sub section? For example: +// +// Below is Definitions for IPM Device "Global" Commands (Chapter 20) +// + +// +// Definitions for Get Device ID command +// +#define IPMI_APP_GET_DEVICE_ID 0x1 ...... +// +// Below is Definitions for BMC Watchdog Timer Commands (Chapter 27) +// + +// +// Definitions for Reset WatchDog Timer command +// +#define IPMI_APP_RESET_WATCHDOG_TIMER 0x22 3) I suggest to use full name of NetFn. IpmiNetFnGroupExtDefinitions.h -> IpmiNetFnGroupExtensionDefinitions.h 4) It is good way to always add IPMI prefix to data structure definition and enum type, to avoid conflict with others. Most of them are OK, while I found below missing. +typedef enum { + Unspecified, + StaticAddrsss, + DynamicAddressBmcDhcp, + DynamicAddressBiosDhcp, + DynamicAddressBmcNonDhcp +} IPMI_IP_ADDRESS_SRC; +typedef struct { + UINT8 IpAddressSelector : 4; + UINT8 Reserved1 : 4; + union { + UINT32 IpAddressLong; + UINT8 IpAddress[4]; + } PPP_IP_ADDRESS; +} DESTINATION_IP_ADDRESS; + +typedef struct { + UINT8 TapSelector; + UINT8 TapServiceSelector : 4; + UINT8 TapDialStringSelector : 4; +} DESTINATION_TAP_ACCOUNT; + +typedef struct { + UINT8 TapSelector; + UINT8 PagerIdString[16]; +} TAP_PAGER_ID_STRING; + -----Original Message----- From: Bu, Daocheng Sent: Thursday, November 26, 2015 4:23 PM To: edk2-devel@lists.01.org Cc: Yao, Jiewen Subject: [Patch] MdePkg: Add Ipmi2.0 definitions head file. Add Ipmi2.0 definitions head file based on Ipmi category: App, Storage and etc. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Daocheng Bu <daocheng...@intel.com> CC: Jiewen Yao <jiewen....@intel.com> --- MdePkg/Include/IndustryStandard/Ipmi.h | 26 + .../IndustryStandard/IpmiNetFnAppDefinitions.h | 614 +++++++++++++++++++++ .../IndustryStandard/IpmiNetFnBridgeDefinitions.h | 238 ++++++++ .../IndustryStandard/IpmiNetFnChassisDefinitions.h | 294 ++++++++++ .../IpmiNetFnFirmwareDefinitions.h | 26 + .../IpmiNetFnGroupExtDefinitions.h | 26 + .../IpmiNetFnSensorEventDefinitions.h | 44 ++ .../IndustryStandard/IpmiNetFnStorageDefinitions.h | 514 +++++++++++++++++ .../IpmiNetFnTransportDefinitions.h | 531 ++++++++++++++++++ 9 files changed, 2313 insertions(+) create mode 100644 MdePkg/Include/IndustryStandard/Ipmi.h create mode 100644 MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h create mode 100644 MdePkg/Include/IndustryStandard/IpmiNetFnBridgeDefinitions.h create mode 100644 MdePkg/Include/IndustryStandard/IpmiNetFnChassisDefinitions.h create mode 100644 MdePkg/Include/IndustryStandard/IpmiNetFnFirmwareDefinitions.h create mode 100644 MdePkg/Include/IndustryStandard/IpmiNetFnGroupExtDefinitions.h create mode 100644 MdePkg/Include/IndustryStandard/IpmiNetFnSensorEventDefinitions.h create mode 100644 MdePkg/Include/IndustryStandard/IpmiNetFnStorageDefinitions.h create mode 100644 MdePkg/Include/IndustryStandard/IpmiNetFnTransportDefinitions.h diff --git a/MdePkg/Include/IndustryStandard/Ipmi.h b/MdePkg/Include/IndustryStandard/Ipmi.h new file mode 100644 index 0000000..de72bcc --- /dev/null +++ b/MdePkg/Include/IndustryStandard/Ipmi.h @@ -0,0 +1,26 @@ +/** @file + IPMI 2.0 definitions from the IPMI Specification, revision 2.0 + + Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ + +#ifndef _IPMIDEFINITIONS_H_ +#define _IPMIDEFINITIONS_H_ + +#include <IndustryStandard/IpmiNetFnChassisDefinitions.h> +#include <IndustryStandard/IpmiNetFnBridgeDefinitions.h> +#include <IndustryStandard/IpmiNetFnSensorDefinitions.h> +#include <IndustryStandard/IpmiNetFnAppDefinitions.h> +#include <IndustryStandard/IpmiNetFnFirmwareDefinitions.h> +#include <IndustryStandard/IpmiNetFnStorageDefinitions.h> +#include <IndustryStandard/IpmiNetFnTransportDefinitions.h> +#include <IndustryStandard/IpmiNetFnGroupExtDefinitions.h> + +#endif diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h new file mode 100644 index 0000000..77582e2 --- /dev/null +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h @@ -0,0 +1,614 @@ +/** @file + IPMI 2.0 definitions from the IPMI Specification, revision 2.0 + + Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ + +#ifndef _IPMINETFNAPPDEFINITIONS_H_ +#define _IPMINETFNAPPDEFINITIONS_H_ + +#pragma pack(1) +// +// Net function definition for App command +// +#define IPMI_NETFN_APP 0x06 + +// +// Definitions for Get Device ID command +// +#define IPMI_APP_GET_DEVICE_ID 0x1 + +// +// Constants and Structure definitions for "Get Device ID" command to follow here +// +typedef struct { + UINT8 DeviceId; + UINT8 DeviceRevision : 4; + UINT8 Reserved : 3; + UINT8 DeviceSdr : 1; + UINT8 MajorFirmwareRev : 7; + UINT8 UpdateMode : 1; + UINT8 MinorFirmwareRev; + UINT8 SpecificationVersion; + UINT8 SensorDeviceSupport : 1; + UINT8 SdrRepositorySupport : 1; + UINT8 SelDeviceSupport : 1; + UINT8 FruInventorySupport : 1; + UINT8 IpmbMessageReceiver : 1; + UINT8 IpmbMessageGenerator : 1; + UINT8 BridgeSupport : 1; + UINT8 ChassisSupport : 1; + UINT8 ManufacturerId[3]; + UINT16 ProductId; + UINT32 AuxFirmwareRevInfo; +} IPMI_MSG_GET_DEVICE_ID_RSP; + + +// +// Definitions for Cold Reset command +// +#define IPMI_APP_COLD_RESET 0x2 + +// +// Constants and Structure definitions for "Cold Reset" command to follow here +// + +// +// Definitions for Warm Reset command +// +#define IPMI_APP_WARM_RESET 0x3 + +// +// Constants and Structure definitions for "Warm Reset" command to follow here +// + +// +// Definitions for Get Self Results command +// +#define IPMI_APP_GET_SELFTEST_RESULTS 0x4 + +// +// Constants and Structure definitions for "Get Self Results" command to follow here +// +typedef struct { + UINT8 Result; + UINT8 Param; +} IPMI_MSG_SELFTEST_RESULT_RSP; + +#define IPMI_APP_SELFTEST_NO_ERROR 0x55 +#define IPMI_APP_SELFTEST_NOT_IMPLEMENTED 0x56 +#define IPMI_APP_SELFTEST_ERROR 0x57 +#define IPMI_APP_SELFTEST_FATAL_HW_ERROR 0x58 +#define IPMI_APP_SELFTEST_INACCESSIBLE_SEL 0x80 +#define IPMI_APP_SELFTEST_INACCESSIBLE_SDR 0x40 +#define IPMI_APP_SELFTEST_INACCESSIBLE_FRU 0x20 +#define IPMI_APP_SELFTEST_IPMB_SIGNAL_FAIL 0x10 +#define IPMI_APP_SELFTEST_SDR_REPOSITORY_EMPTY 0x08 +#define IPMI_APP_SELFTEST_FRU_CORRUPT 0x04 +#define IPMI_APP_SELFTEST_FW_BOOTBLOCK_CORRUPT 0x02 +#define IPMI_APP_SELFTEST_FW_CORRUPT 0x01 + +// +// Definitions for Manufacturing Test ON command +// +#define IPMI_APP_MANUFACTURING_TEST_ON 0x5 + +// +// Constants and Structure definitions for "Manufacturing Test ON" command to follow here +// + +// +// Definitions for Set ACPI Power State command +// +#define IPMI_APP_SET_ACPI_POWERSTATE 0x6 + +// +// Constants and Structure definitions for "Set ACPI Power State" command to follow here +// +typedef struct { + UINT8 SystemPowerState : 7; + UINT8 SystemStateChange : 1; + UINT8 DevicePowerState : 7; + UINT8 DeviceStateChange : 1; +} IPMI_ACPI_POWER_STATE; + +// +// Definitions for Get ACPI Power State command +// +#define IPMI_APP_GET_ACPI_POWERSTATE 0x7 + +// +// Constants and Structure definitions for "Get ACPI Power State" command to follow here +// + +// +// Definitions for Get Device GUID command +// +#define IPMI_APP_GET_DEVICE_GUID 0x8 + +// +// Constants and Structure definitions for "Get Device GUID" command to follow here +// +// +// Message structure definition for "Get Device Guid" IPMI command +// +typedef struct { + UINT8 Guid[16]; +} IPMI_MSG_GET_DEVICE_GUID_RSP; + + +// +// Definitions for Reset WatchDog Timer command +// +#define IPMI_APP_RESET_WATCHDOG_TIMER 0x22 + +// +// Constants and Structure definitions for "Reset WatchDog Timer" command to follow here +// +typedef struct { + UINT8 TimerUse : 3; + UINT8 Reserved : 3; + UINT8 TimerRunning : 1; + UINT8 TimerUseExpirationFlagLog : 1; +} IPMI_WATCHDOG_TIMER_USE; + +// +// Definitions for Set WatchDog Timer command +// +#define IPMI_APP_SET_WATCHDOG_TIMER 0x24 + +// +// Constants and Structure definitions for "Set WatchDog Timer" command to follow here +// +typedef struct { + IPMI_WATCHDOG_TIMER_USE TimerUse; + UINT8 TimerActions; + UINT8 PretimeoutInterval; + UINT8 TimerUseExpirationFlagsClear; + UINT16 InitialCountdownValue; +} IPMI_SET_WATCHDOG_TIMER; + +// +// Definitions for Get WatchDog Timer command +// +#define IPMI_APP_GET_WATCHDOG_TIMER 0x25 + +// +// Constants and Structure definitions for "Get WatchDog Timer" command to follow here +// +typedef struct { + IPMI_WATCHDOG_TIMER_USE TimerUse; + UINT8 TimerActions; + UINT8 PretimeoutInterval; + UINT8 TimerUseExpirationFlagsClear; + UINT16 InitialCountdownValue; + UINT16 PresentCountdownValue; +} IPMI_WATCHDOG_TIMER; + +// +// The following srucure is temporary, need to be removed later +// +typedef struct { + UINT8 TimerUse : 3; + UINT8 Reserved1 : 3; + UINT8 StartTimer : 1; + UINT8 DontLog : 1; + union { + struct { + UINT8 TimeoutAction : 3; + UINT8 Reserved2 : 1; + UINT8 PreTimeoutIntr : 3; + UINT8 Reserved3 : 1; + } Byte2Bmp; + UINT8 Data8; + } Byte2; + + UINT8 PreTimeoutInterval; + UINT8 ExpirationReserved1 : 1; + UINT8 BiosFrb2TimerExpirationFlag : 1; + UINT8 BiosPostTimerExpirationFlag : 1; + UINT8 OsLoadTimerExpirationFlag : 1; + UINT8 ExpirationReserved2 : 4; + UINT16 Timeout; + UINT16 CurrCountdown; + UINT16 Reserved4; +} IPMI_FRB_TIMER; + +// +// Definitions for Set BMC Global Enables command +// +#define IPMI_APP_SET_BMC_GLOBAL_ENABLES 0x2E + +// +// Constants and Structure definitions for "Set BMC Global Enables " command to follow here +// + +// +// Definitions for Get BMC Global Enables command +// +#define IPMI_APP_GET_BMC_GLOBAL_ENABLES 0x2F + +// +// Constants and Structure definitions for "Get BMC Global Enables " command to follow here +// + +// +// Definitions for Clear Message Flags command +// +#define IPMI_APP_CLEAR_MESSAGE_FLAGS 0x30 + +// +// Constants and Structure definitions for "Clear Message Flags" command to follow here +// + +// +// Definitions for Get Message Flags command +// +#define IPMI_APP_GET_MESSAGE_FLAGS 0x31 + +// +// Constants and Structure definitions for "Get Message Flags" command to follow here +// + +// +// Definitions for Enable Message Channel Receive command +// +#define IPMI_APP_ENABLE_MESSAGE_CHANNEL_RECEIVE 0x32 + +// +// Constants and Structure definitions for "Enable Message Channel Receive" command to follow here +// + +// +// Definitions for Get Message command +// +#define IPMI_APP_GET_MESSAGE 0x33 + +// +// Constants and Structure definitions for "Get Message" command to follow here +// + +// +// Definitions for Send Message command +// +#define IPMI_APP_SEND_MESSAGE 0x34 + +// +// Constants and Structure definitions for "Send Message" command to follow here +// + +// +// Definitions for Read Event Message Buffer command +// +#define IPMI_APP_READ_EVENT_MSG_BUFFER 0x35 + +// +// Constants and Structure definitions for "Read Event Message Buffer" command to follow here +// + +// +// Definitions for Get BT Interface Capabilities command +// +#define IPMI_APP_GET_BT_INTERFACE_CAPABILITY 0x36 + +// +// Constants and Structure definitions for "Get BT Interface Capabilities" command to follow here +// + +// +// Definitions for Get System GUID command +// +#define IPMI_APP_GET_SYSTEM_GUID 0x37 + +// +// Constants and Structure definitions for "Get System GUID" command to follow here +// + +// +// Definitions for Get Channel Authentication Capabilities command +// +#define IPMI_APP_GET_CHANNEL_AUTHENTICATION_CAPABILITIES 0x38 + +// +// Constants and Structure definitions for "Get Channel Authentication Capabilities" command to follow here +// + +// +// Definitions for Get Session Challenge command +// +#define IPMI_APP_GET_SESSION_CHALLENGE 0x39 + +// +// Constants and Structure definitions for "Get Session Challenge" command to follow here +// + +// +// Definitions for Activate Session command +// +#define IPMI_APP_ACTIVATE_SESSION 0x3A + +// +// Constants and Structure definitions for "Activate Session" command to follow here +// + +// +// Definitions for Set Session Privelege Level command +// +#define IPMI_APP_SET_SESSION_PRIVELEGE_LEVEL 0x3B + +// +// Constants and Structure definitions for "Set Session Privelege Level" command to follow here +// + +// +// Definitions for Close Session command +// +#define IPMI_APP_CLOSE_SESSION 0x3C + +// +// Constants and Structure definitions for "Close Session" command to follow here +// + +// +// Definitions for Get Session Info command +// +#define IPMI_APP_GET_SESSION_INFO 0x3D + +// +// Constants and Structure definitions for "Get Session Info" command to follow here +// + +// +// Definitions for Get Auth Code command +// +#define IPMI_APP_GET_AUTHCODE 0x3F + +// +// Constants and Structure definitions for "Get AuthCode" command to follow here +// + +// +// Definitions for Set Channel Access command +// +#define IPMI_APP_SET_CHANNEL_ACCESS 0x40 + +// +// Constants and Structure definitions for "Set Channel Access" command to follow here +// + +// +// Definitions for Get Channel Access command +// +#define IPMI_APP_GET_CHANNEL_ACCESS 0x41 + +// +// Constants and Structure definitions for "Get Channel Access" command to follow here +// +typedef struct { + UINT8 ChannelNo : 4; + UINT8 Reserve1 : 4; + UINT8 Reserve2 : 6; + UINT8 MemoryType : 2; +} IPMI_GET_CHANNEL_ACCESS_COMMAND; + +typedef struct { + UINT8 AccessMode : 3; + UINT8 UserLevelAuthEnabled : 1; + UINT8 MessageAuthEnable : 1; + UINT8 Alert : 1; + UINT8 Reserve1 : 2; + UINT8 ChannelPriviledgeLimit : 4; + UINT8 Reserve2 : 4; +} IPMI_GET_CHANNEL_ACCESS_RESPONSE; + +// +// Definitions for Get Channel Info command +// +#define IPMI_APP_GET_CHANNEL_INFO 0x42 + +// +// Constants and Structure definitions for "Get Channel Info" command to follow here +// +typedef struct { + UINT8 ChannelNo : 4; + UINT8 Reserve1 : 4; + UINT8 ChannelMediumType : 7; + UINT8 Reserve2 : 1; + UINT8 ChannelProtocolType : 5; + UINT8 Reserve3 : 3; + UINT8 ActiveSessionCount : 6; + UINT8 SessionSupport : 2; + UINT32 VendorId : 24; + UINT16 AuxChannelInfo : 16; + UINT8 Dummy; +} IPMI_CHANNEL_INFO; + +// +// Definitions for Get Channel Info command +// +#define IPMI_APP_GET_CHANNEL_INFO 0x42 + +// +// Constants and Structure definitions for "Get Channel Info" command to follow here +// + +// +// Definitions for Set User Access command +// +#define IPMI_APP_SET_USER_ACCESS 0x43 + +// +// Constants and Structure definitions for "Set User Access" command to follow here +// + +// +// Definitions for Get User Access command +// +#define IPMI_APP_GET_USER_ACCESS 0x44 + +// +// Constants and Structure definitions for "Get User Access" command to follow here +// + +// +// Definitions for Set User Name command +// +#define IPMI_APP_SET_USER_NAME 0x45 + +// +// Constants and Structure definitions for "Set User Name" command to follow here +// + +// +// Definitions for Get User Name command +// +#define IPMI_APP_GET_USER_NAME 0x46 + +// +// Constants and Structure definitions for "Get User Name" command to follow here +// + +// +// Definitions for Set User Password command +// +#define IPMI_APP_SET_USER_PASSWORD 0x47 + +// +// Constants and Structure definitions for "Set User Password" command to follow here +// + +// +// Definitions for Activate Payload command +// +#define IPMI_APP_ACTIVATE_PAYLOAD 0x48 + +// +// Constants and Structure definitions for "Activate Payload" command to follow here +// + +// +// Definitions for De-Activate Payload command +// +#define IPMI_APP_DEACTIVATE_PAYLOAD 0x49 + +// +// Constants and Structure definitions for "DeActivate Payload" command to follow here +// + +// +// Definitions for Get Payload activation Status command +// +#define IPMI_APP_GET_PAYLOAD_ACTIVATION_STATUS 0x4a + +// +// Constants and Structure definitions for "Get Payload activation Status" command to follow here +// + +// +// Definitions for Get Payload Instance Info command +// +#define IPMI_APP_GET_PAYLOAD_INSTANCE_INFO 0x4b + +// +// Constants and Structure definitions for "Get Payload Instance Info" command to follow here +// + +// +// Definitions for Set User Payload Access command +// +#define IPMI_APP_SET_USER_PAYLOAD_ACCESS 0x4C + +// +// Constants and Structure definitions for "Set User Payload Access" command to follow here +// + +// +// Definitions for Get User Payload Access command +// +#define IPMI_APP_GET_USER_PAYLOAD_ACCESS 0x4D + +// +// Constants and Structure definitions for "Get User Payload Access" command to follow here +// + +// +// Definitions for Get Channel Payload Support command +// +#define IPMI_APP_GET_CHANNEL_PAYLOAD_SUPPORT 0x4E + +// +// Constants and Structure definitions for "Get Channel Payload Support" command to follow here +// + +// +// Definitions for Get Channel Payload Version command +// +#define IPMI_APP_GET_CHANNEL_PAYLOAD_VERSION 0x4F + +// +// Constants and Structure definitions for "Get Channel Payload Version" command to follow here +// + +// +// Definitions for Get Channel OEM Payload Info command +// +#define IPMI_APP_GET_CHANNEL_OEM_PAYLOAD_INFO 0x50 + +// +// Constants and Structure definitions for "Get Channel OEM Payload Info" command to follow here +// + +// +// Definitions for Master Write-Read command +// +#define IPMI_APP_MASTER_WRITE_READ 0x52 + +// +// Constants and Structure definitions for "Master Write Read" command to follow here +// + +// +// Definitions for Get Channel Cipher Suites command +// +#define IPMI_APP_GET_CHANNEL_CIPHER_SUITES 0x54 + +// +// Constants and Structure definitions for "Get Channel Cipher Suites" command to follow here +// + +// +// Definitions for Suspend-Resume Payload Encryption command +// +#define IPMI_APP_SUSPEND_RESUME_PAYLOAD_ENCRYPTION 0x55 + +// +// Constants and Structure definitions for "Suspend-Resume Payload Encryption" command to follow here +// + +// +// Definitions for Set Channel Security Keys command +// +#define IPMI_APP_SET_CHANNEL_SECURITY_KEYS 0x56 + +// +// Constants and Structure definitions for "Set Channel Security Keys" command to follow here +// + +// +// Definitions for Get System Interface Capabilities command +// +#define IPMI_APP_GET_SYSTEM_INTERFACE_CAPABILITIES 0x57 + +// +// Constants and Structure definitions for "Get System Interface Capabilities" command to follow here +// + +#pragma pack() +#endif diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnBridgeDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnBridgeDefinitions.h new file mode 100644 index 0000000..f9c03ec --- /dev/null +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnBridgeDefinitions.h @@ -0,0 +1,238 @@ +/** @file + IPMI 2.0 definitions from the IPMI Specification, revision 2.0 + + Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ + +#ifndef _IPMINETFNBRIDGEDEFINITIONS_H_ +#define _IPMINETFNBRIDGEDEFINITIONS_H_ + +// +// Net function definition for Bridge command +// +#define IPMI_NETFN_BRIDGE 0x02 + +// +// Definitions for Get Bridge State command +// +#define IPMI_BRIDGE_GET_STATE 0x00 + +// +// Constants and Structure definitions for "Get Bridge State" command to follow here +// + +// +// Definitions for Set Bridge State command +// +#define IPMI_BRIDGE_SET_STATE 0x01 + +// +// Constants and Structure definitions for "Set Bridge State" command to follow here +// + +// +// Definitions for Get ICMB Address command +// +#define IPMI_BRIDGE_GET_ICMB_ADDRESS 0x02 + +// +// Constants and Structure definitions for "Get ICMB Address" command to follow here +// + +// +// Definitions for Set ICMB Address command +// +#define IPMI_BRIDGE_SET_ICMB_ADDRESS 0x03 + +// +// Constants and Structure definitions for "Set ICMB Address" command to follow here +// + +// +// Definitions for Set Bridge Proxy Address command +// +#define IPMI_BRIDGE_SET_PROXY_ADDRESS 0x04 + +// +// Constants and Structure definitions for "Set Bridge Proxy Address" command to follow here +// + +// +// Definitions for Get Bridge Statistics command +// +#define IPMI_BRIDGE_GET_BRIDGE_STATISTICS 0x05 + +// +// Constants and Structure definitions for "Get Bridge Statistics" command to follow here +// + +// +// Definitions for Get ICMB Capabilities command +// +#define IPMI_BRIDGE_GET_ICMB_CAPABILITIES 0x06 + +// +// Constants and Structure definitions for "Get ICMB Capabilities" command to follow here +// + +// +// Definitions for Clear Bridge Statistics command +// +#define IPMI_BRIDGE_CLEAR_STATISTICS 0x08 + +// +// Constants and Structure definitions for "Clear Bridge Statistics" command to follow here +// + +// +// Definitions for Get Bridge Proxy Address command +// +#define IPMI_BRIDGE_GET_PROXY_ADDRESS 0x09 + +// +// Constants and Structure definitions for "Get Bridge Proxy Address" command to follow here +// + +// +// Definitions for Get ICMB Connector Info command +// +#define IPMI_BRIDGE_GET_ICMB_CONNECTOR_INFO 0x0A + +// +// Constants and Structure definitions for "Get ICMB Connector Info " command to follow here +// + +// +// Definitions for Get ICMB Connection ID command +// +#define IPMI_BRIDGE_GET_ICMB_CONNECTION_ID 0x0B + +// +// Constants and Structure definitions for "Get ICMB Connection ID" command to follow here +// + +// +// Definitions for Get ICMB Connection ID command +// +#define IPMI_BRIDGE_SEND_ICMB_CONNECTION_ID 0x0C + +// +// Constants and Structure definitions for "Send ICMB Connection ID" command to follow here +// + +// +// Definitions for Prepare for Discoveery command +// +#define IPMI_BRIDGE_PREPARE_FOR_DISCOVERY 0x10 + +// +// Constants and Structure definitions for "Prepare for Discoveery" command to follow here +// + +// +// Definitions for Get Addresses command +// +#define IPMI_BRIDGE_GET_ADDRESSES 0x11 + +// +// Constants and Structure definitions for "Get Addresses" command to follow here +// + +// +// Definitions for Set Discovered command +// +#define IPMI_BRIDGE_SET_DISCOVERED 0x12 + +// +// Constants and Structure definitions for "Set Discovered" command to follow here +// + +// +// Definitions for Get Chassis Device ID command +// +#define IPMI_BRIDGE_GET_CHASSIS_DEVICEID 0x13 + +// +// Constants and Structure definitions for "Get Chassis Device ID" command to follow here +// + +// +// Definitions for Set Chassis Device ID command +// +#define IPMI_BRIDGE_SET_CHASSIS_DEVICEID 0x14 + +// +// Constants and Structure definitions for "Set Chassis Device ID" command to follow here +// + +// +// Definitions for Bridge Request command +// +#define IPMI_BRIDGE_REQUEST 0x20 + +// +// Constants and Structure definitions for "Bridge Request" command to follow here +// + +// +// Definitions for Bridge Message command +// +#define IPMI_BRIDGE_MESSAGE 0x21 + +// +// Constants and Structure definitions for "Bridge Message" command to follow here +// + +// +// Definitions for Get Event Count command +// +#define IPMI_BRIDGE_GET_EVENT_COUNT 0x30 + +// +// Constants and Structure definitions for "Get Event Count" command to follow here +// + +// +// Definitions for Set Event Destination command +// +#define IPMI_BRIDGE_SET_EVENT_DESTINATION 0x31 + +// +// Constants and Structure definitions for "Set Event Destination" command to follow here +// + +// +// Definitions for Set Event Reception State command +// +#define IPMI_BRIDGE_SET_EVENT_RECEPTION_STATE 0x32 + +// +// Constants and Structure definitions for "Set Event Reception State" command to follow here +// + +// +// Definitions for Set Event Reception State command +// +#define IPMI_BRIDGE_SET_EVENT_RECEPTION_STATE 0x32 + +// +// Constants and Structure definitions for "Set Event Reception State" command to follow here +// + +// +// Definitions for Send ICMB Event Message command +// +#define IPMI_BRIDGE_SEND_ICMB_EVENT_MESSAGE 0x33 + +// +// Constants and Structure definitions for "Send ICMB Event Message" command to follow here +// + +#endif diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnChassisDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnChassisDefinitions.h new file mode 100644 index 0000000..b418b56 --- /dev/null +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnChassisDefinitions.h @@ -0,0 +1,294 @@ +/** @file + IPMI 2.0 definitions from the IPMI Specification, revision 2.0 + + Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ + +#ifndef _IPMINETFNCHASSISDEFINITIONS_H_ +#define _IPMINETFNCHASSISDEFINITIONS_H_ + +#pragma pack (1) +// +// Net function definition for Chassis command +// +#define IPMI_NETFN_CHASSIS 0x00 + +// +// Definitions for Get Chassis Capabilities command +// +#define IPMI_CHASSIS_GET_CAPABILITIES 0x00 + +// +// Constants and Structure definitions for "Get Chassis Capabilities" command to follow here +// + +// +// Definitions for Get Chassis Status command +// +#define IPMI_CHASSIS_GET_STATUS 0x01 + +// +// Constants and Structure definitions for "Get Chassis Status" command to follow here +// + +// +// Definitions for Chassis Control command +// +#define IPMI_CHASSIS_CONTROL 0x02 + +// +// Constants and Structure definitions for "Chassis Control" command to follow here +// + +// +// Definitions for Chassis Reset command +// +#define IPMI_CHASSIS_RESET 0x03 + +// +// Constants and Structure definitions for "Chassis Reset" command to follow here +// + +// +// Definitions for Chassis Identify command +// +#define IPMI_CHASSIS_IDENTIFY 0x04 + +// +// Constants and Structure definitions for "Chassis Identify" command to follow here +// + +// +// Definitions for Set Chassis Capabilities command +// +#define IPMI_CHASSIS_SET_CAPABILITIES 0x05 + +// +// Constants and Structure definitions for "Set Chassis Capabilities" command to follow here +// + +// +// Definitions for Set Power Restore Policy command +// +#define IPMI_CHASSIS_SET_POWER_RESTORE_POLICY 0x06 + +// +// Constants and Structure definitions for "Set Power Restore Policy" command to follow here +// + +// +// Definitions for Get System Restart Cause command +// +#define IPMI_CHASSIS_GET_SYSTEM_RESTART_CAUSE 0x07 + +// +// Constants and Structure definitions for "Get System Restart Cause" command to follow here +// +typedef enum { + Unknown, + ChassisControlCommand, + ResetViaPushButton, + PowerupViaPowerButton, + WatchdogExpiration, + Oem, + AutoPowerOnAlwaysRestore, + AutoPowerOnRestorePrevious, + ResetViaPef, + PowerCycleViaPef, + SoftReset, + PowerUpViaRtc +} IPMI_SYSTEM_RESTART_CAUSE; + +typedef struct { + UINT8 Cause:4; + UINT8 Reserved:4; + UINT8 ChannelNumber; +} GET_SYSTEM_RESTART_CAUSE_RESPONSE; + +// +// Definitions for Set System BOOT options command +// +#define IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS 0x08 + +// +// Constants and Structure definitions for "Set System boot options" command to follow here +// +typedef struct { + UINT8 ParameterSelector:7; + UINT8 MarkParameterInvalid:1; + UINT8 ParameterData[1]; +} IPMI_SET_BOOT_OPTIONS_REQUEST; + +typedef struct { + UINT8 CompletionCode:8; +} IPMI_SET_BOOT_OPTIONS_RESPONSE; + +// +// Definitions for Get System BOOT options command +// +#define IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS 0x09 + +// +// Constants and Structure definitions for "Get System boot options" command to follow here +// +typedef struct { + UINT8 Parameter; + UINT8 Valid; + UINT8 Data1; + UINT8 Data2; + UINT8 Data3; + UINT8 Data4; + UINT8 Data5; +} IPMI_GET_THE_SYSTEM_BOOT_OPTIONS; + +typedef struct { + UINT8 ParameterVersion; + UINT8 ParameterValid; + UINT8 ChannelNumber; + UINT32 SessionId; + UINT32 TimeStamp; + UINT8 Reserved[3]; +} IPMI_BOOT_INITIATOR; + +typedef struct { + UINT8 ParameterSelector; + UINT8 SetSelector; + UINT8 BlockSelector; +} IPMI_GET_BOOT_OPTIONS_REQUEST; + +// +// Response Parameters for IPMI Get Boot Options +// +typedef struct { + UINT8 SetInProgress: 2; + UINT8 Reserved: 6; +} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0; + +typedef struct { + UINT8 ServicePartitionSelector; +} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1; + +typedef struct { + UINT8 ServicePartitionDiscovered:1; + UINT8 ServicePartitionScanRequest:1; + UINT8 Reserved: 5; +} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2; + +typedef struct { + UINT8 BmcBootFlagValid: 5; + UINT8 Reserved: 3; +} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3; + +typedef struct { + UINT8 WriteMask; + UINT8 BootInitiatorAcknowledgeData; +} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4; + +#define BOOT_OPTION_HANDLED_BY_BIOS 0x01 + +typedef struct { + // + // Data 1 + // + UINT8 Reserved0:6; + UINT8 PersistentOptions:1; + UINT8 BootFlagValid:1; + // + // Data 2 + // + UINT8 LockReset:1; + UINT8 ScreenBlank:1; + UINT8 BootDeviceSelector:4; + UINT8 LockKeyboard:1; + UINT8 CmosClear:1; + // + // + // Data 3 + UINT8 ConsoleRedirection:2; + UINT8 LockSleep:1; + UINT8 UserPasswordBypass:1; + UINT8 ForceProgressEventTrap:1; + UINT8 BiosVerbosity:2; + UINT8 LockPower:1; + // + // Data 4 + // + UINT8 BiosMuxControlOverride:2; + UINT8 BiosSharedModeOverride:1; + UINT8 Reserved1:4; +} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5; + +typedef struct { + UINT8 ChannelNumber:4; + UINT8 Reserved:4; + UINT8 SessionId[4]; + UINT8 BootInfoTimeStamp[4]; +} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6; + +typedef struct { + UINT8 SetSelector; + UINT8 BlockData[16]; +} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7; + +typedef union { + IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0 Parm0; + IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1 Parm1; + IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2 Parm2; + IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3 Parm3; + IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4 Parm4; + IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5 Parm5; + IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6 Parm6; + IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7 Parm7; +} IPMI_BOOT_OPTIONS_PARAMETERS; + +typedef struct { + UINT8 ParameterVersion:4; + UINT8 Reserved:4; + UINT8 ParameterSelector:7; + UINT8 ParameterValid:1; + UINT8 ParameterData[1]; +} IPMI_GET_BOOT_OPTIONS_RESPONSE; + +// +// Definitions for Set front panel button enables command +// +#define IPMI_CHASSIS_SET_FP_BUTTON_ENABLES 0x0A + +typedef struct { + UINT8 DisablePoweroffButton:1; + UINT8 DisableResetButton:1; + UINT8 DisableDiagnosticInterruptButton:1; + UINT8 DisableStandbyButton:1; + UINT8 Reserved:4; +} IPMI_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST; + +// +// Constants and Structure definitions for "Set front panel button enables" command to follow here +// + +// +// Definitions for Set Power Cycle Interval command +// +#define IPMI_CHASSIS_SET_POWER_CYCLE_INTERVALS 0x0B + +// +// Constants and Structure definitions for "Set Power Cycle Interval" command to follow here +// + +// +// Definitions for Get POH Counter command +// +#define IPMI_CHASSIS_GET_POH_COUNTER 0x0F + +// +// Constants and Structure definitions for "Get POH Counter" command to follow here +// +#pragma pack() +#endif diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnFirmwareDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnFirmwareDefinitions.h new file mode 100644 index 0000000..5340975 --- /dev/null +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnFirmwareDefinitions.h @@ -0,0 +1,26 @@ +/** @file + IPMI 2.0 definitions from the IPMI Specification, revision 2.0 + + Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ + +#ifndef _IPMINETFNFIRMWAREDEFINITIONS_H_ +#define _IPMINETFNFIRMWAREDEFINITIONS_H_ + +// +// Net function definition for Firmware command +// +#define IPMI_NETFN_FIRMWARE 0x08 + +// +// All Firmware commands and their structure definitions to follow here +// + +#endif diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnGroupExtDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnGroupExtDefinitions.h new file mode 100644 index 0000000..913a31c --- /dev/null +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnGroupExtDefinitions.h @@ -0,0 +1,26 @@ +/** @file + IPMI 2.0 definitions from the IPMI Specification, revision 2.0 + + Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ + +#ifndef _IPMINETFNGROUPEXTDEFINITIONS_H_ +#define _IPMINETFNGROUPEXTDEFINITIONS_H_ + +// +// Net function definition for Group Extension command +// +#define IPMI_NETFN_GROUP_EXT 0x2C + +// +// All Group Extension commands and their structure definitions to follow here +// + +#endif diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnSensorEventDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnSensorEventDefinitions.h new file mode 100644 index 0000000..c2c529b --- /dev/null +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnSensorEventDefinitions.h @@ -0,0 +1,44 @@ +/** @file + IPMI 2.0 definitions from the IPMI Specification, revision 2.0 + + Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ + +#ifndef _IPMINETFNSENSORDEFINITIONS_H_ +#define _IPMINETFNSENSORDEFINITIONS_H_ + +#pragma pack(1) +// +// Net function definition for Sensor command +// +#define IPMI_NETFN_SENSOR_EVENT 0x04 + +// +// All Sensor commands and their structure definitions to follow here +// + +// +// Definitions for Send Platform Event Message command +// +#define IPMI_SENSOR_PLATFORM_EVENT_MESSAGE 0x02 + +typedef struct { + UINT8 GeneratorId; + UINT8 EvMRevision; + UINT8 SensorType; + UINT8 SensorNumber; + UINT8 EventDirType; + UINT8 OEMEvData1; + UINT8 OEMEvData2; + UINT8 OEMEvData3; +} IPMI_PLATFORM_EVENT_MESSAGE_DATA; + +#pragma pack() +#endif diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnStorageDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnStorageDefinitions.h new file mode 100644 index 0000000..49fb5ce --- /dev/null +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnStorageDefinitions.h @@ -0,0 +1,514 @@ +/** @file + IPMI 2.0 definitions from the IPMI Specification, revision 2.0 + + Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ + +#ifndef _IPMINETFNSTORAGEDEFINITIONS_H_ +#define _IPMINETFNSTORAGEDEFINITIONS_H_ + +#pragma pack(1) +// +// Net function definition for Storage command +// +#define IPMI_NETFN_STORAGE 0x0A + +// +// All Storage commands and their structure definitions to follow here +// + +// +// Definitions for Get Fru Inventory Area Info command +// +#define IPMI_STORAGE_GET_FRU_INVENTORY_AREAINFO 0x10 + +// +// Constants and Structure definitions for "Get Fru Inventory Area Info" command to follow here +// + +// +// Definitions for Get Fru Data command +// +#define IPMI_STORAGE_READ_FRU_DATA 0x11 + +// +// Constants and Structure definitions for "Get Fru Data" command to follow here +// +typedef struct { + UINT8 FruDeviceId; + UINT16 FruOffset; +} IPMI_FRU_COMMON_DATA; + +typedef struct { + IPMI_FRU_COMMON_DATA Data; + UINT8 Count; +} IPMI_FRU_READ_COMMAND; + +// +// Definitions for Write Fru Data command +// +#define IPMI_STORAGE_WRITE_FRU_DATA 0x12 + +// +// Constants and Structure definitions for "Write Fru Data" command to follow here +// +typedef struct { + IPMI_FRU_COMMON_DATA Data; + UINT8 FruData[16]; +} IPMI_FRU_WRITE_COMMAND; + +// +// Definitions for Get SDR Repository Info command +// +#define IPMI_STORAGE_GET_SDR_REPOSITORY_INFO 0x20 + +// +// Constants and Structure definitions for "Get SDR Repository Info" command to follow here +// +typedef struct { + UINT8 Version; + UINT16 RecordCount; + UINT16 FreeSpace; + UINT32 RecentAdditionTimeStamp; + UINT32 RecentEraseTimeStamp; + UINT8 SdrRepAllocInfoCmd : 1; + UINT8 SdrRepReserveCmd : 1; + UINT8 PartialAddSdrCmd : 1; + UINT8 DeleteSdrRepCmd : 1; + UINT8 Reserved : 1; + UINT8 SdrRepUpdateOp : 2; + UINT8 Overflow : 1; +} IPMI_SDR_REPOSITORY_INFO; + +// +// Definitions for Get SDR Repository Allocateion Info command +// +#define IPMI_STORAGE_GET_SDR_REPOSITORY_ALLOCATION_INFO 0x21 + +// +// Constants and Structure definitions for "Get SDR Repository Allocateion Info" command to follow here +// + +// +// Definitions for Reserve SDR Repository command +// +#define IPMI_STORAGE_RESERVE_SDR_REPOSITORY 0x22 + +// +// Constants and Structure definitions for "Reserve SDR Repository" command to follow here +// + +// +// Definitions for Get SDR command +// +#define IPMI_STORAGE_GET_SDR 0x23 + +// +// Constants and Structure definitions for "Get SDR" command to follow here +// + +typedef struct { + UINT16 RecordId; // 1 + UINT8 Version; // 3 + UINT8 RecordType; // 4 + UINT8 RecordLength; // 5 + UINT8 OwnerId; // 6 + UINT8 OwnerLun; // 7 + UINT8 SensorNumber; // 8 + UINT8 EntityId; // 9 + UINT8 EntityInstance; // 10 + UINT8 EventScanningEnabled : 1; // 11 + UINT8 EventScanningDisabled : 1; // 11 + UINT8 InitSensorType : 1; // 11 + UINT8 InitHysteresis : 1; // 11 + UINT8 InitThresholds : 1; // 11 + UINT8 InitEvent : 1; // 11 + UINT8 InitScanning : 1; // 11 + UINT8 Reserved : 1; // 11 + UINT8 EventMessageControl : 2; // 12 + UINT8 ThresholdAccessSupport : 2; // 12 + UINT8 HysteresisSupport : 2; // 12 + UINT8 ReArmSupport : 1; // 12 + UINT8 IgnoreSensor : 1; // 12 + UINT8 SensorType; // 13 + UINT8 EventType; // 14 + UINT8 Reserved1[7]; // 15 + UINT8 UnitType; // 22 + UINT8 Reserved2; // 23 + UINT8 Linearization : 7; // 24 + UINT8 Reserved3 : 1; // 24 + UINT8 MLo; // 25 + UINT8 Toleremce : 6; // 26 + UINT8 MHi : 2; // 26 + UINT8 BLo; // 27 + UINT8 AccuracyLow : 6; // 28 + UINT8 BHi : 2; // 28 + UINT8 Reserved4 : 2; // 29 + UINT8 AccuracyExp : 2; // 29 + UINT8 AccuracyHi : 4; // 29 + UINT8 BExp : 4; // 30 + UINT8 RExp : 4; // 30 + UINT8 NominalReadingSpscified : 1; // 31 + UINT8 NominalMaxSpscified : 1; // 31 + UINT8 NominalMinSpscified : 1; // 31 + UINT8 Reserved5 : 5; // 31 + UINT8 NominalReading; // 32 + UINT8 Reserved6[4]; // 33 + UINT8 UpperNonRecoverThreshold; // 37 + UINT8 UpperCriticalThreshold; // 38 + UINT8 UpperNonCriticalThreshold; // 39 + UINT8 LowerNonRecoverThreshold; // 40 + UINT8 LowerCriticalThreshold; // 41 + UINT8 LowerNonCriticalThreshold; // 42 + UINT8 Reserved7[5]; // 43 + UINT8 IdStringLength; // 48 + UINT8 AsciiIdString[16]; // 49 - 64 +} IPMI_SDR_RECORD_STRUCT_1; + +typedef struct { + UINT16 RecordId; // 1 + UINT8 Version; // 3 + UINT8 RecordType; // 4 + UINT8 RecordLength; // 5 + UINT8 OwnerId; // 6 + UINT8 OwnerLun; // 7 + UINT8 SensorNumber; // 8 + UINT8 EntityId; // 9 + UINT8 EntityInstance; // 10 + UINT8 SensorScanning : 1; // 11 + UINT8 EventScanning : 1; // 11 + UINT8 InitSensorType : 1; // 11 + UINT8 InitHysteresis : 1; // 11 + UINT8 InitThresholds : 1; // 11 + UINT8 InitEvent : 1; // 11 + UINT8 InitScanning : 1; // 11 + UINT8 Reserved : 1; // 11 + UINT8 EventMessageControl : 2; // 12 + UINT8 ThresholdAccessSupport : 2; // 12 + UINT8 HysteresisSupport : 2; // 12 + UINT8 ReArmSupport : 1; // 12 + UINT8 IgnoreSensor : 1; // 12 + UINT8 SensorType; // 13 + UINT8 EventType; // 14 + UINT8 Reserved1[7]; // 15 + UINT8 UnitType; // 22 + UINT8 Reserved2[9]; // 23 + UINT8 IdStringLength; // 32 + UINT8 AsciiIdString[16]; // 33 - 48 +} IPMI_SDR_RECORD_STRUCT_2; + +typedef struct { + UINT8 Reserved1 : 1; + UINT8 ControllerSlaveAddress : 7; + UINT8 FruDeviceId; + UINT8 BusId : 3; + UINT8 Lun : 2; + UINT8 Reserved : 2; + UINT8 LogicalFruDevice : 1; + UINT8 Reserved3 : 4; + UINT8 ChannelNumber : 4; +} IPMI_FRU_DATA_INFO; + +typedef struct { + UINT16 RecordId; // 1 + UINT8 Version; // 3 + UINT8 RecordType; // 4 + UINT8 RecordLength; // 5 + IPMI_FRU_DATA_INFO FruDeviceData; // 6 + UINT8 Reserved1; // 10 + UINT8 DeviceType; // 11 + UINT8 DeviceTypeModifier; // 12 + UINT8 FruEntityId; // 13 + UINT8 FruEntityInstance; // 14 + UINT8 OemReserved; // 15 + UINT8 Length : 4; // 16 + UINT8 Reserved2 : 1; // 16 + UINT8 StringType : 3; // 16 + UINT8 String[16]; // 17 +} IPMI_SDR_RECORD_STRUCT_11; + +typedef struct { + UINT16 NextRecordId; //1 + UINT16 RecordId; //3 + UINT8 Version; //5 + UINT8 RecordType; //6 + UINT8 RecordLength; //7 + UINT8 ManufacturerId[3]; //8 + UINT8 StringChars[20]; +} IPMI_SDR_RECORD_STRUCT_C0; + +typedef struct { + UINT16 NextRecordId; //1 + UINT16 RecordId; //3 + UINT8 Version; //5 + UINT8 RecordType; //6 + UINT8 RecordLength; //7 +} IPMI_SDR_RECORD_STRUCT_HEADER; + +typedef union { + IPMI_SDR_RECORD_STRUCT_1 SensorType1; + IPMI_SDR_RECORD_STRUCT_2 SensorType2; + IPMI_SDR_RECORD_STRUCT_11 SensorType11; + IPMI_SDR_RECORD_STRUCT_C0 SensorTypeC0; + IPMI_SDR_RECORD_STRUCT_HEADER SensorHeader; +} IPMI_SENSOR_RECORD_STRUCT; + +typedef struct { + UINT16 ReservationId; + UINT16 RecordId; + UINT8 RecordOffset; + UINT8 BytesToRead; +} IPMI_GET_SDR; + +// +// Definitions for Add SDR command +// +#define IPMI_STORAGE_ADD_SDR 0x24 + +// +// Constants and Structure definitions for "Add SDR" command to follow here +// + +// +// Definitions for Partial Add SDR command +// +#define IPMI_STORAGE_PARTIAL_ADD_SDR 0x25 + +// +// Constants and Structure definitions for "Partial Add SDR" command to follow here +// + +// +// Definitions for Delete SDR command +// +#define IPMI_STORAGE_DELETE_SDR 0x26 + +// +// Constants and Structure definitions for "Delete SDR" command to follow here +// + +// +// Definitions for Clear SDR Repository command +// +#define IPMI_STORAGE_CLEAR_SDR 0x27 + +// +// Constants and Structure definitions for "Clear SDR Repository" command to follow here +// + +// +// Definitions for Get SDR Repository Time command +// +#define IPMI_STORAGE_GET_SDR_REPOSITORY_TIME 0x28 + +// +// Constants and Structure definitions for "Get SDR Repository Time" command to follow here +// + +// +// Definitions for Set SDR Repository Time command +// +#define IPMI_STORAGE_SET_SDR_REPOSITORY_TIME 0x29 + +// +// Constants and Structure definitions for "Set SDR Repository Time" command to follow here +// + +// +// Definitions for Enter SDR Repository Update Mode command +// +#define IPMI_STORAGE_ENTER_SDR_UPDATE_MODE 0x2A + +// +// Constants and Structure definitions for "Enter SDR Repository Update Mode" command to follow here +// + +// +// Definitions for Exit SDR Repository Update Mode command +// +#define IPMI_STORAGE_EXIT_SDR_UPDATE_MODE 0x2B + +// +// Constants and Structure definitions for "Exit SDR Repository Update Mode" command to follow here +// + +// +// Definitions for Run Initialize Agent command +// +#define IPMI_STORAGE_RUN_INIT_AGENT 0x2C + +// +// Constants and Structure definitions for "Run Initialize Agent" command to follow here +// + +// +// Definitions for Get SEL Info command +// +#define IPMI_STORAGE_GET_SEL_INFO 0x40 + +// +// Constants and Structure definitions for "Get SEL Info" command to follow here +// +typedef struct { + UINT8 Version; // Version of SEL + UINT16 NoOfEntries; // No of Entries in the SEL + UINT16 FreeSpace; // Free space in Bytes + UINT32 RecentAddTimeStamp; // Most Recent Addition of Time Stamp + UINT32 RecentEraseTimeStamp; // Most Recent Erasure of Time Stamp + UINT8 OperationSupport; // Operation Support +} IPMI_SEL_INFO; + +// +// Definitions for Get SEL Allocation Info command +// +#define IPMI_STORAGE_GET_SEL_ALLOCATION_INFO 0x41 + +// +// Constants and Structure definitions for "Get SEL Allocation Info" command to follow here +// + +// +// Definitions for Reserve SEL command +// +#define IPMI_STORAGE_RESERVE_SEL 0x42 + +// +// Constants and Structure definitions for "Reserve SEL" command to follow here +// + +// +// Definitions for Get SEL Entry command +// +#define IPMI_STORAGE_GET_SEL_ENTRY 0x43 + +// +// Constants and Structure definitions for "Get SEL Entry" command to follow here +// +#define IPMI_COMPLETE_SEL_RECORD 0xFF + +typedef struct { + UINT8 ReserveId[2]; // Reservation ID, LS Byte First + UINT8 SelRecID[2]; // Sel Record ID, LS Byte First + UINT8 Offset; // Offset Into Record + UINT8 BytesToRead; // Bytes to be Read, 0xFF for entire record +} IPMI_GET_SEL_ENTRY; + +// +// Definitions for Add SEL Entry command +// +#define IPMI_STORAGE_ADD_SEL_ENTRY 0x44 + +// +// Constants and Structure definitions for "Add SEL Entry" command to follow here +// +typedef struct { + UINT16 RecordId; + UINT8 RecordType; + UINT32 TimeStamp; + UINT16 GeneratorId; + UINT8 EvMRevision; + UINT8 SensorType; + UINT8 SensorNumber; + UINT8 EventDirType; + UINT8 OEMEvData1; + UINT8 OEMEvData2; + UINT8 OEMEvData3; +} IPMI_SEL_RECORD_DATA; + +#define IPMI_SEL_SYSTEM_RECORD 0x02 + +#define IPMI_EVM_REVISION 0x04 +#define IPMI_BIOS_ID 0x18 +#define IPMI_FORMAT_REV 0x00 +#define IPMI_FORMAT_REV1 0x01 +#define IPMI_SOFTWARE_ID 0x01 +#define IPMI_PLATFORM_VAL_ID 0x01 +#define IPMI_GENERATOR_ID(i,f) ((i << 1) | (f << 1) | IPMI_SOFTWARE_ID) + +#define IPMI_SENSOR_TYPE_EVENT_CODE_DISCRETE 0x6F + +#define IPMI_OEM_SPECIFIC_DATA 0x02 +#define IPMI_SENSOR_SPECIFIC_DATA 0x03 + +// +// Definitions for Partial Add SEL Entry command +// +#define IPMI_STORAGE_PARTIAL_ADD_SEL_ENTRY 0x45 + +// +// Constants and Structure definitions for "Partial Add SEL Entry" command to follow here +// + +// +// Definitions for Delete SEL Entry command +// +#define IPMI_STORAGE_DELETE_SEL_ENTRY 0x46 + +// +// Constants and Structure definitions for "Delete SEL Entry" command to follow here +// +typedef struct { + UINT8 ReserveId[2]; // Reservation ID, LS byte first + UINT8 RecordToDelete[2]; // Record to Delete, LS Byte First +} IPMI_DELETE_SEL; + +// +// Definitions for Clear SEL command +// +#define IPMI_STORAGE_CLEAR_SEL 0x47 + +// +// Constants and Structure definitions for "Clear SEL" command to follow here +// +typedef struct { + UINT8 Reserve[2]; // Reserve ID, LSB first + UINT8 AscC; // Ascii for 'C' (0x43) + UINT8 AscL; // Ascii for 'L' (0x4c) + UINT8 AscR; // Ascii for 'R' (0x52) + UINT8 Erase; // 0xAA, Initiate Erase, 0x00 Get Erase Status +} IPMI_CLEAR_SEL; + +// +// Definitions for Get SEL Time command +// +#define IPMI_STORAGE_GET_SEL_TIME 0x48 + +// +// Constants and Structure definitions for "Get SEL Time" command to follow here +// + +// +// Definitions for Set SEL Time command +// +#define IPMI_STORAGE_SET_SEL_TIME 0x49 + +// +// Constants and Structure definitions for "Set SEL Time" command to follow here +// + +// +// Definitions for Get Auxillary Log Status command +// +#define IPMI_STORAGE_GET_AUXILLARY_LOG_STATUS 0x5A + +// +// Constants and Structure definitions for "Get Auxillary Log Status" command to follow here +// + +// +// Definitions for Set Auxillary Log Status command +// +#define IPMI_STORAGE_SET_AUXILLARY_LOG_STATUS 0x5B + +// +// Constants and Structure definitions for "Set Auxillary Log Status" command to follow here +// +#pragma pack() +#endif diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnTransportDefinitions.h b/MdePkg/Include/IndustryStandard/IpmiNetFnTransportDefinitions.h new file mode 100644 index 0000000..dee1442 --- /dev/null +++ b/MdePkg/Include/IndustryStandard/IpmiNetFnTransportDefinitions.h @@ -0,0 +1,531 @@ +/** @file + IPMI 2.0 definitions from the IPMI Specification, revision 2.0 + + Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ + +#ifndef _IPMINETFNTRANSPORTDEFINITIONS_H_ +#define _IPMINETFNTRANSPORTDEFINITIONS_H_ + +#pragma pack(1) +// +// Net function definition for Transport command +// +#define IPMI_NETFN_TRANSPORT 0x0C + +// +// Definitions for Set Lan Configuration Parameters command +// + + +#define IPMI_TRANSPORT_SET_LAN_CONFIG_PARAMETERS 0x01 + +// +// Constants and Structure definitions for "Set Lan Configuration Parameters" command to follow here +// + +// +// LAN Management Structure +// +typedef enum { + IpmiLanReserved1, + IpmiLanReserved2, + IpmiLanAuthType, + IpmiLanIpAddress, + IpmiLanIpAddressSource, + IpmiLanMacAddress, + IpmiLanSubnetMask, + IpmiLanIpv4HeaderParam, + IpmiLanPrimaryRcmpPort, + IpmiLanSecondaryRcmpPort, + IpmiLanBmcGeneratedArpCtrl, + IpmiLanArpInterval, + IpmiLanDefaultGateway, + IpmiLanDefaultGatewayMac, + IpmiLanBackupGateway, + IpmiLanBackupGatewayMac, + IpmiLanCommunityString, + IpmiLanReserved3, + IpmiLanDestinationType, + IpmiLanDestinationAddress +} IPMI_LAN_OPTION_TYPE; + +typedef enum { + Unspecified, + StaticAddrsss, + DynamicAddressBmcDhcp, + DynamicAddressBiosDhcp, + DynamicAddressBmcNonDhcp +} IPMI_IP_ADDRESS_SRC; + +typedef enum { + PetTrapDestination, + DirectedEventDestination, + Reserved1, + Reserved2, + Reserved3, + Reserved4, + Reserved5, + Oem1, + Oem2 +} IPMI_LAN_DEST_TYPE; + +typedef struct _IPMI_LAN_AUTH_TYPE{ + UINT8 NoAuth : 1; + UINT8 MD2Auth : 1; + UINT8 MD5Auth : 1; + UINT8 Reserved1 : 1; + UINT8 StraightPswd : 1; + UINT8 OemType : 1; + UINT8 Reserved2 : 2; +} IPMI_LAN_AUTH_TYPE; + +typedef struct _IPMI_LAN_IP_ADDRESS{ + UINT8 IpAddress[4]; +} IPMI_LAN_IP_ADDRESS; + +typedef struct _IPMI_LAN_IP_ADDRESS_SRC{ + UINT8 AddressSrc : 4; + UINT8 Reserved : 4; +} IPMI_LAN_IP_ADDRESS_SRC; + +typedef struct _IPMI_LAN_MAC_ADDRESS{ + UINT8 MacAddress[6]; +} IPMI_LAN_MAC_ADDRESS; + +typedef struct _IPMI_LAN_SUBNET_MASK{ + UINT8 IpAddress[4]; +} IPMI_LAN_SUBNET_MASK; + +typedef struct _IPMI_LAN_IPV4_HDR_PARAM{ + UINT8 TimeToLive; + UINT8 IpFlag : 3; + UINT8 Reserved1 : 5; + UINT8 Precedence : 3; + UINT8 Reserved2 : 1; + UINT8 ServiceType : 4; +} IPMI_LAN_IPV4_HDR_PARAM; + +typedef struct _IPMI_LAN_RCMP_PORT{ + UINT8 RcmpPortMsb; + UINT8 RcmpPortLsb; +} IPMI_LAN_RCMP_PORT; + +typedef struct _IPMI_LAN_BMC_GENERATED_ARP_CONTROL{ + UINT8 EnableBmcArpResponse : 1; + UINT8 EnableBmcGratuitousArp : 1; + UINT8 Reserved : 6; +} IPMI_LAN_BMC_GENERATED_ARP_CONTROL; + +typedef struct _IPMI_LAN_ARP_INTERVAL{ + UINT8 ArpInterval; +} IPMI_LAN_ARP_INTERVAL; + +typedef struct _IPMI_LAN_COMMUNITY_STRING{ + UINT8 Data[18]; +} IPMI_LAN_COMMUNITY_STRING; + +typedef struct _IPMI_LAN_DEST_TYPE{ + UINT8 DestinationSelector : 4; + UINT8 Reserved2 : 4; + UINT8 DestinationType : 3; + UINT8 Reserved1 : 4; + UINT8 AlertAcknowledged : 1; +} IPMI_LAN_DEST_TYPE; + +typedef struct _IPMI_LAN_DEST_ADDRESS{ + UINT8 DestinationSelector : 4; + UINT8 Reserved1 : 4; + UINT8 AlertingIpAddressSelector : 4; + UINT8 AddressFormat : 4; + UINT8 UseDefaultGateway : 1; + UINT8 Reserved2 : 7; + IPMI_LAN_IP_ADDRESS AlertingIpAddress; + IPMI_LAN_MAC_ADDRESS AlertingMacAddress; +} IPMI_LAN_DEST_ADDRESS; + +typedef union { + IPMI_LAN_AUTH_TYPE IpmiLanAuthType; + IPMI_LAN_IP_ADDRESS IpmiLanIpAddress; + IPMI_LAN_IP_ADDRESS_SRC IpmiLanIpAddressSrc; + IPMI_LAN_MAC_ADDRESS IpmiLanMacAddress; + IPMI_LAN_SUBNET_MASK IpmiLanSubnetMask; + IPMI_LAN_IPV4_HDR_PARAM IpmiLanIpv4HdrParam; + IPMI_LAN_RCMP_PORT IpmiLanPrimaryRcmpPort; + IPMI_LAN_BMC_GENERATED_ARP_CONTROL IpmiLanArpControl; + IPMI_LAN_ARP_INTERVAL IpmiLanArpInterval; + IPMI_LAN_COMMUNITY_STRING IpmiLanCommunityString; + IPMI_LAN_DEST_TYPE IpmiLanDestType; + IPMI_LAN_DEST_ADDRESS IpmiLanDestAddress; +} IPMI_LAN_OPTIONS; + +// +// Definitions for Get Lan Configuration Parameters command +// +#define IPMI_TRANSPORT_GET_LAN_CONFIG_PARAMETERS 0x02 + +// +// Constants and Structure definitions for "Get Lan Configuration Parameters" command to follow here +// + +// +// Definitions for Suspend BMC ARPs command +// +#define IPMI_TRANSPORT_SUSPEND_BMC_ARPS 0x03 + +// +// Constants and Structure definitions for "Suspend BMC ARPs" command to follow here +// + +// +// Definitions for Get IP-UDP-RMCP Statistics command +// +#define IPMI_TRANSPORT_GET_PACKET_STATISTICS 0x04 + +// +// Constants and Structure definitions for "Get IP-UDP-RMCP Statistics" command to follow here +// + +// +// Definitions for Set Serial/Modem Configuration command +// +#define IPMI_TRANSPORT_SET_SERIAL_CONFIGURATION 0x10 + +// +// Constants and Structure definitions for "Set Serial/Modem Configuration" command to follow here +// + +// +// EMP OPTION DATA +// +typedef struct { + UINT8 NoAuthentication : 1; + UINT8 MD2Authentication : 1; + UINT8 MD5Authentication : 1; + UINT8 Reserved1 : 1; + UINT8 StraightPassword : 1; + UINT8 OemProprietary : 1; + UINT8 Reservd2 : 2; +} IPMI_EMP_AUTH_TYPE; + +typedef struct { + UINT8 EnableBasicMode : 1; + UINT8 EnablePPPMode : 1; + UINT8 EnableTerminalMode : 1; + UINT8 Reserved1 : 2; + UINT8 SnoopOsPPPNegotiation : 1; + UINT8 Reserved2 : 1; + UINT8 DirectConnect : 1; +} IPMI_EMP_CONNECTION_TYPE; + +typedef struct { + UINT8 InactivityTimeout : 4; + UINT8 Reserved : 4; +} IPMI_EMP_INACTIVITY_TIMEOUT; + +typedef struct { + UINT8 IpmiCallback : 1; + UINT8 CBCPCallback : 1; + UINT8 Reserved1 : 6; + UINT8 CbcpEnableNoCallback : 1; + UINT8 CbcpEnablePreSpecifiedNumber : 1; + UINT8 CbcpEnableUserSpecifiedNumber : 1; + UINT8 CbcpEnableCallbackFromList : 1; + UINT8 Reserved : 4; + UINT8 CallbackDestination1; + UINT8 CallbackDestination2; + UINT8 CallbackDestination3; +} IPMI_EMP_CHANNEL_CALLBACK_CONTROL; + +typedef struct { + UINT8 CloseSessionOnDCDLoss : 1; + UINT8 EnableSessionInactivityTimeout : 1; + UINT8 Reserved : 6; +} IPMI_EMP_SESSION_TERMINATION; + +typedef struct { + UINT8 Reserved1 : 5; + UINT8 EnableDtrHangup : 1; + UINT8 FlowControl : 2; + UINT8 BitRate : 4; + UINT8 Reserved2 : 4; + UINT8 SaveSetting : 1; + UINT8 SetComPort : 1; + UINT8 Reserved3 : 6; +} IPMI_EMP_MESSAGING_COM_SETTING; + +typedef struct { + UINT8 RingDurationInterval : 6; + UINT8 Reserved1 : 2; + UINT8 RingDeadTime : 4; + UINT8 Reserved : 4; +} IPMI_EMP_MODEM_RING_TIME; + +typedef struct { + UINT8 Reserved; + UINT8 InitString[48]; +} IPMI_EMP_MODEM_INIT_STRING; + +typedef struct { + UINT8 EscapeSequence[5]; +} IPMI_EMP_MODEM_ESC_SEQUENCE; + +typedef struct { + UINT8 HangupSequence[8]; +} IPMI_EMP_MODEM_HANGUP_SEQUENCE; + +typedef struct { + UINT8 ModelDialCommend[8]; +} IPMI_MODEM_DIALUP_COMMAND; + +typedef struct { + UINT8 PageBlackoutInterval; +} IPMI_PAGE_BLACKOUT_INTERVAL; + +typedef struct { + UINT8 CommunityString[18]; +} IPMI_EMP_COMMUNITY_STRING; + +typedef struct { + UINT8 DestinationSelector : 4; + UINT8 Reserved1 : 4; + UINT8 DestinationType : 4; + UINT8 Reserved2 : 3; + UINT8 AlertAckRequired : 1; + UINT8 AlertAckTimeoutSeconds; + UINT8 NumRetriesCall : 3; + UINT8 Reserved3 : 1; + UINT8 NumRetryAlert : 3; + UINT8 Reserved4 : 1; + union { + struct { + UINT8 Reserved5 : 4; + UINT8 DialStringSelector : 4; + } DIAL_PAGE_DESTINATION; + struct { + UINT8 TapAccountSelector : 4; + UINT8 Reserved : 4; + } TAP_PAGE_DESTINATION; + struct { + UINT8 PPPAccountSetSelector; + UINT8 DialStringSelector; + } PPP_ALERT_DESTINATION; + } DEST_TYPE_SPECIFIC; +} IPMI_EMP_DESTINATION_INFO; + +typedef struct { + UINT8 DestinationSelector : 4; + UINT8 Reserved1 : 4; + UINT8 Parity : 3; + UINT8 CharacterSize : 1; + UINT8 StopBit : 1; + UINT8 DtrHangup : 1; + UINT8 FlowControl : 2; + UINT8 BitRate : 4; + UINT8 Reserved2 : 4; + UINT8 SaveSetting : 1; + UINT8 SetComPort : 1; + UINT8 Reserved3 : 6; +} IPMI_EMP_DESTINATION_COM_SETTING; + +typedef struct { + UINT8 DialStringSelector : 4; + UINT8 Reserved1 : 4; + UINT8 Reserved2; + UINT8 DialString[48]; +} IPMI_DESTINATION_DIAL_STRING; + +typedef struct { + UINT8 IpAddressSelector : 4; + UINT8 Reserved1 : 4; + union { + UINT32 IpAddressLong; + UINT8 IpAddress[4]; + } PPP_IP_ADDRESS; +} DESTINATION_IP_ADDRESS; + +typedef struct { + UINT8 TapSelector; + UINT8 TapServiceSelector : 4; + UINT8 TapDialStringSelector : 4; +} DESTINATION_TAP_ACCOUNT; + +typedef struct { + UINT8 TapSelector; + UINT8 PagerIdString[16]; +} TAP_PAGER_ID_STRING; + +typedef union { + UINT8 OptionData; + EMP_AUTH_TYPE EmpAuthType; + EMP_CONNECTION_TYPE EmpConnectionType; + EMP_INACTIVITY_TIMEOUT EmpInactivityTimeout; + EMP_CHANNEL_CALLBACK_CONTROL EmpCallbackControl; + EMP_SESSION_TERMINATION EmpSessionTermination; + EMP_MESSAGING_COM_SETTING EmpMessagingComSetting; + EMP_MODEM_RING_TIME EmpModemRingTime; + EMP_MODEM_INIT_STRING EmpModemInitString; + EMP_MODEM_ESC_SEQUENCE EmpModemEscSequence; + EMP_MODEM_HANGUP_SEQUENCE EmpModemHangupSequence; + MODEM_DIALUP_COMMAND EmpModemDialupCommand; + PAGE_BLACKOUT_INTERVAL EmpPageBlackoutInterval; + EMP_COMMUNITY_STRING EmpCommunityString; + EMP_DESTINATION_INFO EmpDestinationInfo; + EMP_DESTINATION_COM_SETTING EmpDestinationComSetting; + UINT8 CallRetryBusySignalInterval; + DESTINATION_DIAL_STRING DestinationDialString; + DESTINATION_IP_ADDRESS DestinationIpAddress; + DESTINATION_TAP_ACCOUNT DestinationTapAccount; + TAP_PAGER_ID_STRING TapPagerIdString; +} IPMI_EMP_OPTIONS; + +// +// Definitions for Get Serial/Modem Configuration command +// +#define IPMI_TRANSPORT_GET_SERIAL_CONFIGURATION 0x11 + +// +// Constants and Structure definitions for "Get Serial/Modem Configuration" command to follow here +// + +// +// Definitions for Set Serial/Modem Mux command +// +#define IPMI_TRANSPORT_SET_SERIAL_MUX 0x12 + +// +// Constants and Structure definitions for "Set Serial/Modem Mux" command to follow here +// +typedef struct { + UINT8 ChannelNo : 4; + UINT8 Reserved1 : 4; + UINT8 MuxSetting : 4; + UINT8 Reserved2 : 4; +} IPMI_SET_MUX_COMMAND; + +typedef struct { + UINT8 MuxSetToBmc : 1; + UINT8 CommandStatus : 1; + UINT8 MessagingSessionActive : 1; + UINT8 AlertInProgress : 1; + UINT8 Reserved2 : 2; + UINT8 MuxToBmcAllowed : 1; + UINT8 MuxToSystemBlocked : 1; +} IPMI_MUX_CONFIG; + +// +// Definitions for Get TAP Response Code command +// +#define IPMI_TRANSPORT_GET_TAP_RESPONSE_CODE 0x13 + +// +// Constants and Structure definitions for "Get TAP Response Code" command to follow here +// + +// +// Definitions for Set PPP UDP Proxy Transmit Data command +// +#define IPMI_TRANSPORT_SET_PPP_UDP_PROXY_TXDATA 0x14 + +// +// Constants and Structure definitions for "Set PPP UDP Proxy Transmit Data" command to follow here +// + +// +// Definitions for Get PPP UDP Proxy Transmit Data command +// +#define IPMI_TRANSPORT_GET_PPP_UDP_PROXY_TXDATA 0x15 + +// +// Constants and Structure definitions for "Get PPP UDP Proxy Transmit Data" command to follow here +// + +// +// Definitions for Send PPP UDP Proxy Packet command +// +#define IPMI_TRANSPORT_SEND_PPP_UDP_PROXY_PACKET 0x16 + +// +// Constants and Structure definitions for "Send PPP UDP Proxy Packet" command to follow here +// + +// +// Definitions for Get PPP UDP Proxy Receive Data command +// +#define IPMI_TRANSPORT_GET_PPP_UDP_PROXY_RX 0x17 + +// +// Constants and Structure definitions for "Get PPP UDP Proxy Receive Data" command to follow here +// + +// +// Definitions for Serial/Modem connection active command +// +#define IPMI_TRANSPORT_SERIAL_CONNECTION_ACTIVE 0x18 + +// +// Constants and Structure definitions for "Serial/Modem connection active" command to follow here +// + +// +// Definitions for Callback command +// +#define IPMI_TRANSPORT_CALLBACK 0x19 + +// +// Constants and Structure definitions for "Callback" command to follow here +// + +// +// Definitions for Set user Callback Options command +// +#define IPMI_TRANSPORT_SET_USER_CALLBACK_OPTIONS 0x1A + +// +// Constants and Structure definitions for "Set user Callback Options" command to follow here +// + +// +// Definitions for Get user Callback Options command +// +#define IPMI_TRANSPORT_GET_USER_CALLBACK_OPTIONS 0x1B + +// +// Constants and Structure definitions for "Get user Callback Options" command to follow here +// + +// +// Definitions for SOL activating command +// +#define IPMI_TRANSPORT_SOL_ACTIVATING 0x20 + +// +// Constants and Structure definitions for "SOL activating" command to follow here +// + +// +// Definitions for Set SOL Configuration Parameters command +// +#define IPMI_TRANSPORT_SET_SOL_CONFIG_PARAM 0x21 + +// +// Constants and Structure definitions for "Set SOL Configuration Parameters" command to follow here +// + +// +// Definitions for Get SOL Configuration Parameters command +// +#define IPMI_TRANSPORT_GET_SOL_CONFIG_PARAM 0x22 + +// +// Constants and Structure definitions for "Get SOL Configuration Parameters" command to follow here +// +#pragma pack() +#endif -- 2.5.1.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel