2 Implementation of Ipmi Library in DXE Phase for SMS.
4 Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #include <Protocol/IpmiProtocol.h>
11 #include <Library/UefiBootServicesTableLib.h>
12 #include <Library/DebugLib.h>
14 IPMI_PROTOCOL
*mIpmiProtocol
= NULL
;
17 This service enables submitting commands via Ipmi.
19 @param[in] NetFunction Net function of the command.
20 @param[in] Command IPMI Command.
21 @param[in] RequestData Command Request Data.
22 @param[in] RequestDataSize Size of Command Request Data.
23 @param[out] ResponseData Command Response Data. The completion code is the first byte of response data.
24 @param[in, out] ResponseDataSize Size of Command Response Data.
26 @retval EFI_SUCCESS The command byte stream was successfully submit to the device and a response was successfully received.
27 @retval EFI_NOT_FOUND The command was not successfully sent to the device or a response was not successfully received from the device.
28 @retval EFI_NOT_READY Ipmi Device is not ready for Ipmi command access.
29 @retval EFI_DEVICE_ERROR Ipmi Device hardware error.
30 @retval EFI_TIMEOUT The command time out.
31 @retval EFI_UNSUPPORTED The command was not successfully sent to the device.
32 @retval EFI_OUT_OF_RESOURCES The resource allcation is out of resource or data size error.
39 IN UINT8
*RequestData
,
40 IN UINT32 RequestDataSize
,
41 OUT UINT8
*ResponseData
,
42 IN OUT UINT32
*ResponseDataSize
47 if (mIpmiProtocol
== NULL
) {
48 Status
= gBS
->LocateProtocol (
51 (VOID
**) &mIpmiProtocol
53 if (EFI_ERROR (Status
)) {
55 // Dxe Ipmi Protocol is not installed. So, IPMI device is not present.
57 DEBUG ((EFI_D_ERROR
, "IpmiSubmitCommand in Dxe Phase under SMS Status - %r\n", Status
));
62 Status
= mIpmiProtocol
->IpmiSubmitCommand (
71 if (EFI_ERROR (Status
)) {