Thanks. Reviewed-by: jiewen....@intel.com

-----Original Message-----
From: Bu, Daocheng 
Sent: Wednesday, December 02, 2015 4:01 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             |  29 +
 .../IndustryStandard/IpmiNetFnAppDefinitions.h     | 647 +++++++++++++++++++++
 .../IndustryStandard/IpmiNetFnBridgeDefinitions.h  | 243 ++++++++
 .../IndustryStandard/IpmiNetFnChassisDefinitions.h | 304 ++++++++++
 .../IpmiNetFnFirmwareDefinitions.h                 |  26 +
 .../IpmiNetFnGroupExtensionDefinitions.h           |  26 +
 .../IpmiNetFnSensorEventDefinitions.h              |  52 ++
 .../IndustryStandard/IpmiNetFnStorageDefinitions.h | 534 +++++++++++++++++
 .../IpmiNetFnTransportDefinitions.h                | 556 ++++++++++++++++++
 9 files changed, 2417 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/IpmiNetFnGroupExtensionDefinitions.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..04e6807
--- /dev/null
+++ b/MdePkg/Include/IndustryStandard/Ipmi.h
@@ -0,0 +1,29 @@
+/** @file   
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
+
+  See IPMI specification, Appendix G, Command Assignments
+  and Appendix H, Sub-function Assignments.
+
+  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/IpmiNetFnGroupExtensionDefinitions.h>
+
+#endif
diff --git a/MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h 
b/MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h
new file mode 100644
index 0000000..3e31b10
--- /dev/null
+++ b/MdePkg/Include/IndustryStandard/IpmiNetFnAppDefinitions.h
@@ -0,0 +1,647 @@
+/** @file   
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
+
+  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)
+    IPMI Messaging Support 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>
+  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
+
+//
+//  Below is Definitions for IPM Device "Global" Commands  (Chapter 20)
+//
+
+//
+//  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;
+
+//
+//  Below is Definitions for BMC Watchdog Timer Commands (Chapter 27)
+//
+
+//
+//  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;
+
+//
+//  Below is Definitions for IPMI Messaging Support Commands (Chapter 22)
+//
+
+//
+//  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
+//
+
+//
+//  Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24)
+//
+
+//
+//  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
+//
+
+//
+//  Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24, 
Section 3)
+//
+
+//
+//  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
+//
+
+//
+//  Below is Definitions for IPMI Messaging Support Commands (Chapter 22, 
Section 25 and 9)
+//
+
+//
+//  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..4c0ecdd
--- /dev/null
+++ b/MdePkg/Include/IndustryStandard/IpmiNetFnBridgeDefinitions.h
@@ -0,0 +1,243 @@
+/** @file   
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
+  IPMI Intelligent Chassis Management Bus Bridge Specification Version 1.0, 
+  Revision 1.3.
+
+  See IPMI specification, Appendix G, Command Assignments
+  and Appendix H, Sub-function Assignments.
+
+  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..815b402
--- /dev/null
+++ b/MdePkg/Include/IndustryStandard/IpmiNetFnChassisDefinitions.h
@@ -0,0 +1,304 @@
+/** @file   
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
+
+  This file contains all NetFn Chassis commands, including:
+    Chassis Commands (Chapter 28)
+
+  See IPMI specification, Appendix G, Command Assignments
+  and Appendix H, Sub-function Assignments.
+
+  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
+
+//
+//  Below is Definitions for Chassis commands (Chapter 28)
+//
+
+//
+//  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..993e22c
--- /dev/null
+++ b/MdePkg/Include/IndustryStandard/IpmiNetFnFirmwareDefinitions.h
@@ -0,0 +1,26 @@
+/** @file   
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
+
+  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/IpmiNetFnGroupExtensionDefinitions.h 
b/MdePkg/Include/IndustryStandard/IpmiNetFnGroupExtensionDefinitions.h
new file mode 100644
index 0000000..3f0968e
--- /dev/null
+++ b/MdePkg/Include/IndustryStandard/IpmiNetFnGroupExtensionDefinitions.h
@@ -0,0 +1,26 @@
+/** @file   
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
+
+  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..d63fd5d
--- /dev/null
+++ b/MdePkg/Include/IndustryStandard/IpmiNetFnSensorEventDefinitions.h
@@ -0,0 +1,52 @@
+/** @file   
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
+
+  This file contains all NetFn Sensor/Event commands, including:
+    Event Commands (Chapter 29)
+    PEF and Alerting Commands (Chapter 30)
+    Sensor Device Commands (Chapter 35)
+
+  See IPMI specification, Appendix G, Command Assignments
+  and Appendix H, Sub-function Assignments.
+
+  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..60c9f7b
--- /dev/null
+++ b/MdePkg/Include/IndustryStandard/IpmiNetFnStorageDefinitions.h
@@ -0,0 +1,534 @@
+/** @file   
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
+
+  This file contains all NetFn Storage commands, including:
+    FRU Inventory Commands (Chapter 34)
+    SDR Repository (Chapter 33)
+    System Event Log(SEL) Commands (Chapter 31)
+
+  See IPMI specification, Appendix G, Command Assignments
+  and Appendix H, Sub-function Assignments.
+
+  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
+//
+
+//
+//  Below is Definitions for FRU Inventory Commands (Chapter 34)
+//
+
+//
+//  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;
+
+//
+//  Below is Definitions for SDR Repository (Chapter 33)
+//
+
+//
+//  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
+//
+
+//
+//  Below is Definitions for System Event Log(SEL) Commands (Chapter 31)
+//
+
+//
+//  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..57f869c
--- /dev/null
+++ b/MdePkg/Include/IndustryStandard/IpmiNetFnTransportDefinitions.h
@@ -0,0 +1,556 @@
+/** @file   
+  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
+
+  This file contains all NetFn Transport commands, including:
+    IPM LAN Commands (Chapter 23)
+    IPMI Serial/Modem Commands (Chapter 25)
+    SOL Commands (Chapter 26)
+    Command Forwarding Commands (Chapter 35b)
+
+  See IPMI specification, Appendix G, Command Assignments
+  and Appendix H, Sub-function Assignments.
+
+  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
+
+//
+//  Below is Definitions for IPM LAN Commands (Chapter 23)
+//
+
+//
+//  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;
+
+//
+// IP Address Source 
+//
+typedef enum {
+  IpmiUnspecified,
+  IpmiStaticAddrsss,
+  IpmiDynamicAddressBmcDhcp,
+  IpmiDynamicAddressBiosDhcp,
+  IpmiDynamicAddressBmcNonDhcp
+} IPMI_IP_ADDRESS_SRC;
+
+//
+// Destination Type
+//
+typedef enum {
+  IpmiPetTrapDestination,
+  IpmiDirectedEventDestination,
+  IpmiReserved1,
+  IpmiReserved2,
+  IpmiReserved3,
+  IpmiReserved4,
+  IpmiReserved5,
+  IpmiOem1,
+  IpmiOem2
+} 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
+//
+
+//
+//  Below is Definitions for IPMI Serial/Modem Commands (Chapter 25)
+//
+
+//
+//  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;
+} IPMI_DESTINATION_IP_ADDRESS;
+
+typedef struct {
+  UINT8 TapSelector;
+  UINT8 TapServiceSelector : 4;
+  UINT8 TapDialStringSelector : 4;
+} IPMI_DESTINATION_TAP_ACCOUNT;
+
+typedef struct {
+  UINT8 TapSelector;
+  UINT8 PagerIdString[16];
+} IPMI_TAP_PAGER_ID_STRING;
+
+typedef union {
+  UINT8                              OptionData;
+  IPMI_EMP_AUTH_TYPE                 EmpAuthType;
+  IPMI_EMP_CONNECTION_TYPE           EmpConnectionType;
+  IPMI_EMP_INACTIVITY_TIMEOUT        EmpInactivityTimeout;
+  IPMI_EMP_CHANNEL_CALLBACK_CONTROL  EmpCallbackControl;
+  IPMI_EMP_SESSION_TERMINATION       EmpSessionTermination;
+  IPMI_EMP_MESSAGING_COM_SETTING     EmpMessagingComSetting;
+  IPMI_EMP_MODEM_RING_TIME           EmpModemRingTime;
+  IPMI_EMP_MODEM_INIT_STRING         EmpModemInitString;
+  IPMI_EMP_MODEM_ESC_SEQUENCE        EmpModemEscSequence;
+  IPMI_EMP_MODEM_HANGUP_SEQUENCE     EmpModemHangupSequence;
+  IPMI_MODEM_DIALUP_COMMAND          EmpModemDialupCommand;
+  IPMI_PAGE_BLACKOUT_INTERVAL        EmpPageBlackoutInterval;
+  IPMI_EMP_COMMUNITY_STRING          EmpCommunityString;
+  IPMI_EMP_DESTINATION_INFO          EmpDestinationInfo;
+  IPMI_EMP_DESTINATION_COM_SETTING   EmpDestinationComSetting;
+  UINT8                              CallRetryBusySignalInterval;
+  IPMI_DESTINATION_DIAL_STRING       DestinationDialString;
+  IPMI_DESTINATION_IP_ADDRESS        DestinationIpAddress;
+  IPMI_DESTINATION_TAP_ACCOUNT       DestinationTapAccount;
+  IPMI_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
+//
+
+//
+//  Below is Definitions for SOL Commands (Chapter 26)
+//
+
+//
+//  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

Reply via email to