| /** @file | |
| IPMI Command - NetFnTransport. | |
| Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.<BR> | |
| Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #include <PiPei.h> | |
| #include <Library/BaseMemoryLib.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/IpmiLib.h> | |
| #include <IndustryStandard/Ipmi.h> | |
| /** | |
| This function sends command to BMC to notify a remote application | |
| that a SOL payload is activating on another channel. | |
| @param [in] SolActivatingRequest The get channel information request. | |
| @param [out] CompletionCode IPMI completetion code, refer to Ipmi.h. | |
| @retval EFI_STATUS See the return values of IpmiSubmitCommand () function. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| IpmiSolActivating ( | |
| IN IPMI_SOL_ACTIVATING_REQUEST *SolActivatingRequest, | |
| OUT UINT8 *CompletionCode | |
| ) | |
| { | |
| EFI_STATUS Status; | |
| UINT32 DataSize; | |
| DataSize = sizeof (*CompletionCode); | |
| Status = IpmiSubmitCommand ( | |
| IPMI_NETFN_TRANSPORT, | |
| IPMI_TRANSPORT_SOL_ACTIVATING, | |
| (VOID *)SolActivatingRequest, | |
| sizeof (*SolActivatingRequest), | |
| (VOID *)CompletionCode, | |
| &DataSize | |
| ); | |
| return Status; | |
| } | |
| /** | |
| This function is used to set parameters such as the network addressing | |
| information required for SOL payload operation. | |
| @param [in] SetConfigurationParametersRequest Pointer to IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST. | |
| @param [in] SetConfigurationParametersRequestSize Size of entire SetConfigurationParametersRequestSize. | |
| @param [out] CompletionCode IPMI completetion code, refer to Ipmi.h. | |
| @retval EFI_STATUS See the return values of IpmiSubmitCommand () function. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| IpmiSetSolConfigurationParameters ( | |
| IN IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST *SetConfigurationParametersRequest, | |
| IN UINT32 SetConfigurationParametersRequestSize, | |
| OUT UINT8 *CompletionCode | |
| ) | |
| { | |
| EFI_STATUS Status; | |
| UINT32 DataSize; | |
| DataSize = sizeof (*CompletionCode); | |
| Status = IpmiSubmitCommand ( | |
| IPMI_NETFN_TRANSPORT, | |
| IPMI_TRANSPORT_SET_SOL_CONFIG_PARAM, | |
| (VOID *)SetConfigurationParametersRequest, | |
| SetConfigurationParametersRequestSize, | |
| (VOID *)CompletionCode, | |
| &DataSize | |
| ); | |
| return Status; | |
| } | |
| /** | |
| This function is used to retrieve the configuration parameters from the | |
| Set SOL Configuration Parameters. | |
| @param [in] GetConfigurationParametersRequest Pointer to IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST. | |
| @param [out] GetConfigurationParametersResponse Pointer to receive IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE | |
| @param [in, out] GetConfigurationParametersResponseSize When in, which is the expected size of | |
| response. When out, which is the actual | |
| size returned. | |
| @retval EFI_STATUS See the return values of IpmiSubmitCommand () function. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| IpmiGetSolConfigurationParameters ( | |
| IN IPMI_GET_SOL_CONFIGURATION_PARAMETERS_REQUEST *GetConfigurationParametersRequest, | |
| OUT IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE *GetConfigurationParametersResponse, | |
| IN OUT UINT32 *GetConfigurationParametersResponseSize | |
| ) | |
| { | |
| EFI_STATUS Status; | |
| Status = IpmiSubmitCommand ( | |
| IPMI_NETFN_TRANSPORT, | |
| IPMI_TRANSPORT_GET_SOL_CONFIG_PARAM, | |
| (VOID *)GetConfigurationParametersRequest, | |
| sizeof (*GetConfigurationParametersRequest), | |
| (VOID *)GetConfigurationParametersResponse, | |
| GetConfigurationParametersResponseSize | |
| ); | |
| return Status; | |
| } | |
| /** | |
| This function gets the LAN configuration parameter. | |
| @param[in] GetLanConfigurationParametersRequest Request data | |
| @param[out] GetLanConfigurationParametersResponse Response data | |
| @param[in,out] GetLanConfigurationParametersSize When input, the expected size of response data. | |
| When out, the exact size of response data. | |
| @retval EFI_SUCCESS Lan configuration parameter is returned in the response. | |
| @retval EFI_INVALID_PARAMETER One of the given input parameters is invalid. | |
| @retval Others Other errors. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| IpmiGetLanConfigurationParameters ( | |
| IN IPMI_GET_LAN_CONFIGURATION_PARAMETERS_REQUEST *GetLanConfigurationParametersRequest, | |
| OUT IPMI_GET_LAN_CONFIGURATION_PARAMETERS_RESPONSE *GetLanConfigurationParametersResponse, | |
| IN OUT UINT32 *GetLanConfigurationParametersSize | |
| ) | |
| { | |
| EFI_STATUS Status; | |
| if ((GetLanConfigurationParametersRequest == NULL) || | |
| (GetLanConfigurationParametersResponse == NULL) || | |
| (GetLanConfigurationParametersSize == NULL)) | |
| { | |
| return EFI_INVALID_PARAMETER; | |
| } | |
| Status = IpmiSubmitCommand ( | |
| IPMI_NETFN_TRANSPORT, | |
| IPMI_TRANSPORT_GET_LAN_CONFIG_PARAMETERS, | |
| (UINT8 *)GetLanConfigurationParametersRequest, | |
| sizeof (*GetLanConfigurationParametersRequest), | |
| (UINT8 *)GetLanConfigurationParametersResponse, | |
| GetLanConfigurationParametersSize | |
| ); | |
| return Status; | |
| } |