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

Reply via email to