1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
/** @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;
}
|