]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/IScsiDxe/IScsiConfig.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiConfig.h
CommitLineData
4c5a5e0c 1/** @file\r
2 The header file of functions for configuring or getting the parameters\r
3 relating to iSCSI.\r
4\r
8d1f5e04 5Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
ecf98fbc 6SPDX-License-Identifier: BSD-2-Clause-Patent\r
4c5a5e0c 7\r
8**/\r
9\r
10#ifndef _ISCSI_CONFIG_H_\r
11#define _ISCSI_CONFIG_H_\r
12\r
13#include "IScsiConfigNVDataStruc.h"\r
14\r
15typedef struct _ISCSI_FORM_CALLBACK_INFO ISCSI_FORM_CALLBACK_INFO;\r
16\r
d1050b9d
MK
17extern UINT8 IScsiConfigVfrBin[];\r
18extern UINT8 IScsiDxeStrings[];\r
19extern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo;\r
4c5a5e0c 20\r
21#define VAR_OFFSET(Field) \\r
22 ((UINT16) ((UINTN) &(((ISCSI_CONFIG_IFR_NVDATA *) 0)->Field)))\r
23\r
24#define QUESTION_ID(Field) \\r
25 ((UINT16) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET))\r
26\r
d1050b9d
MK
27#define DYNAMIC_ONE_OF_VAR_OFFSET VAR_OFFSET (Enabled)\r
28#define DYNAMIC_ORDERED_LIST_QUESTION_ID QUESTION_ID (DynamicOrderedList)\r
29#define DYNAMIC_ORDERED_LIST_VAR_OFFSET VAR_OFFSET (DynamicOrderedList)\r
30#define ATTEMPT_DEL_QUESTION_ID QUESTION_ID (DeleteAttemptList)\r
31#define ATTEMPT_DEL_VAR_OFFSET VAR_OFFSET (DeleteAttemptList)\r
32#define ATTEMPT_ADD_QUESTION_ID QUESTION_ID (AddAttemptList)\r
33#define ATTEMPT_ADD_VAR_OFFSET VAR_OFFSET (AddAttemptList)\r
4c5a5e0c 34\r
35//\r
8d1f5e04 36// Define QuestionId and OffSet for Keywords.\r
4c5a5e0c 37//\r
d1050b9d
MK
38#define ATTEMPT_MAC_ADDR_VAR_OFFSET VAR_OFFSET (ISCSIMacAddr)\r
39#define ATTEMPT_ATTEMPT_NAME_QUESTION_ID QUESTION_ID (ISCSIAttemptName)\r
40#define ATTEMPT_ATTEMPT_NAME_VAR_OFFSET VAR_OFFSET (ISCSIAttemptName)\r
41#define ATTEMPT_BOOTENABLE_QUESTION_ID QUESTION_ID (ISCSIBootEnableList)\r
42#define ATTEMPT_BOOTENABLE_VAR_OFFSET VAR_OFFSET (ISCSIBootEnableList)\r
43#define ATTEMPT_ADDRESS_TYPE_QUESTION_ID QUESTION_ID (ISCSIIpAddressTypeList)\r
44#define ATTEMPT_ADDRESS_TYPE_VAR_OFFSET VAR_OFFSET (ISCSIIpAddressTypeList)\r
45#define ATTEMPT_CONNECT_RETRY_QUESTION_ID QUESTION_ID (ISCSIConnectRetry)\r
46#define ATTEMPT_CONNECT_RETRY_VAR_OFFSET VAR_OFFSET (ISCSIConnectRetry)\r
47#define ATTEMPT_CONNECT_TIMEOUT_QUESTION_ID QUESTION_ID (ISCSIConnectTimeout)\r
48#define ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET VAR_OFFSET (ISCSIConnectTimeout)\r
49#define ATTEMPT_ISID_QUESTION_ID QUESTION_ID (Keyword->ISCSIIsId)\r
50#define ATTEMPT_ISID_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIIsId)\r
51#define ATTEMPT_INITIATOR_VIA_DHCP_QUESTION_ID QUESTION_ID (ISCSIInitiatorInfoViaDHCP)\r
52#define ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET VAR_OFFSET (ISCSIInitiatorInfoViaDHCP)\r
53#define ATTEMPT_INITIATOR_IP_ADDRESS_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorIpAddress)\r
54#define ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorIpAddress)\r
55#define ATTEMPT_INITIATOR_NET_MASK_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorNetmask)\r
56#define ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorNetmask)\r
57#define ATTEMPT_INITIATOR_GATE_WAY_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorGateway)\r
58#define ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorGateway)\r
59#define ATTEMPT_TARGET_VIA_DHCP_QUESTION_ID QUESTION_ID (ISCSITargetInfoViaDHCP)\r
60#define ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET VAR_OFFSET (ISCSITargetInfoViaDHCP)\r
61#define ATTEMPT_TARGET_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSITargetName)\r
62#define ATTEMPT_TARGET_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSITargetName)\r
63#define ATTEMPT_TARGET_IP_ADDRESS_QUESTION_ID QUESTION_ID (Keyword->ISCSITargetIpAddress)\r
64#define ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET VAR_OFFSET (Keyword->ISCSITargetIpAddress)\r
65#define ATTEMPT_TARGET_TCP_PORT_QUESTION_ID QUESTION_ID (ISCSITargetTcpPort)\r
66#define ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET VAR_OFFSET (ISCSITargetTcpPort)\r
67#define ATTEMPT_LUN_QUESTION_ID QUESTION_ID (Keyword->ISCSILun)\r
68#define ATTEMPT_LUN_VAR_OFFSET VAR_OFFSET (Keyword->ISCSILun)\r
69#define ATTEMPT_AUTHENTICATION_METHOD_QUESTION_ID QUESTION_ID (ISCSIAuthenticationMethod)\r
70#define ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET VAR_OFFSET (ISCSIAuthenticationMethod)\r
71#define ATTEMPT_CHARTYPE_QUESTION_ID QUESTION_ID (ISCSIChapType)\r
72#define ATTEMPT_CHARTYPE_VAR_OFFSET VAR_OFFSET (ISCSIChapType)\r
73#define ATTEMPT_CHAR_USER_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSIChapUsername)\r
74#define ATTEMPT_CHAR_USER_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIChapUsername)\r
75#define ATTEMPT_CHAR_SECRET_QUESTION_ID QUESTION_ID (Keyword->ISCSIChapSecret)\r
76#define ATTEMPT_CHAR_SECRET_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIChapSecret)\r
77#define ATTEMPT_CHAR_REVERSE_USER_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSIReverseChapUsername)\r
78#define ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIReverseChapUsername)\r
79#define ATTEMPT_CHAR_REVERSE_SECRET_QUESTION_ID QUESTION_ID (Keyword->ISCSIReverseChapSecret)\r
80#define ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIReverseChapSecret)\r
81\r
82#define ISCSI_INITATOR_NAME_VAR_NAME L"I_NAME"\r
83\r
84#define ISCSI_CONFIG_VAR_ATTR (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE)\r
4c5a5e0c 85\r
86#define ISCSI_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'f', 'c', 'i')\r
87\r
88#define ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \\r
89 CR ( \\r
90 Callback, \\r
91 ISCSI_FORM_CALLBACK_INFO, \\r
92 ConfigAccess, \\r
93 ISCSI_FORM_CALLBACK_INFO_SIGNATURE \\r
94 )\r
95\r
96#pragma pack(1)\r
97struct _ISCSI_ATTEMPT_CONFIG_NVDATA {\r
d1050b9d
MK
98 LIST_ENTRY Link;\r
99 UINT8 NicIndex;\r
100 UINT8 AttemptConfigIndex;\r
101 BOOLEAN DhcpSuccess;\r
102 BOOLEAN ValidiBFTPath;\r
103 BOOLEAN ValidPath;\r
104 UINT8 AutoConfigureMode;\r
105 EFI_STRING_ID AttemptTitleToken;\r
106 EFI_STRING_ID AttemptTitleHelpToken;\r
107 CHAR8 AttemptName[ATTEMPT_NAME_SIZE];\r
108 CHAR8 MacString[ISCSI_MAX_MAC_STRING_LEN];\r
109 EFI_IP_ADDRESS PrimaryDns;\r
110 EFI_IP_ADDRESS SecondaryDns;\r
111 EFI_IP_ADDRESS DhcpServer;\r
112 ISCSI_SESSION_CONFIG_NVDATA SessionConfigData;\r
113 UINT8 AuthenticationType;\r
4c5a5e0c 114 union {\r
d1050b9d 115 ISCSI_CHAP_AUTH_CONFIG_NVDATA CHAP;\r
4c5a5e0c 116 } AuthConfigData;\r
d1050b9d
MK
117 BOOLEAN AutoConfigureSuccess;\r
118 UINT8 Actived;\r
4c5a5e0c 119};\r
120\r
121///\r
122/// HII specific Vendor Device Path definition.\r
123///\r
124typedef struct {\r
d1050b9d
MK
125 VENDOR_DEVICE_PATH VendorDevicePath;\r
126 EFI_DEVICE_PATH_PROTOCOL End;\r
4c5a5e0c 127} HII_VENDOR_DEVICE_PATH;\r
128\r
129#pragma pack()\r
130\r
131struct _ISCSI_FORM_CALLBACK_INFO {\r
d1050b9d
MK
132 UINT32 Signature;\r
133 EFI_HANDLE DriverHandle;\r
134 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;\r
135 UINT16 *KeyList;\r
136 VOID *FormBuffer;\r
137 EFI_HII_HANDLE RegisteredHandle;\r
138 ISCSI_ATTEMPT_CONFIG_NVDATA *Current;\r
4c5a5e0c 139};\r
140\r
8d1f5e04
ZL
141/**\r
142 Create Hii Extend Label OpCode as the start opcode and end opcode. It is\r
143 a help function.\r
144\r
145 @param[in] StartLabelNumber The number of start label.\r
146 @param[out] StartOpCodeHandle Points to the start opcode handle.\r
147 @param[out] StartLabel Points to the created start opcode.\r
148 @param[out] EndOpCodeHandle Points to the end opcode handle.\r
149 @param[out] EndLabel Points to the created end opcode.\r
150\r
151 @retval EFI_OUT_OF_RESOURCES Do not have sufficient resource to finish this\r
152 operation.\r
153 @retval EFI_INVALID_PARAMETER Any input parameter is invalid.\r
154 @retval EFI_SUCCESS The operation is completed successfully.\r
155\r
156**/\r
157EFI_STATUS\r
158IScsiCreateOpCode (\r
d1050b9d
MK
159 IN UINT16 StartLabelNumber,\r
160 OUT VOID **StartOpCodeHandle,\r
161 OUT EFI_IFR_GUID_LABEL **StartLabel,\r
162 OUT VOID **EndOpCodeHandle,\r
163 OUT EFI_IFR_GUID_LABEL **EndLabel\r
8d1f5e04
ZL
164 );\r
165\r
4c5a5e0c 166/**\r
167 Initialize the iSCSI configuration form.\r
168\r
169 @param[in] DriverBindingHandle The iSCSI driverbinding handle.\r
170\r
171 @retval EFI_SUCCESS The iSCSI configuration form is initialized.\r
172 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.\r
173\r
174**/\r
175EFI_STATUS\r
176IScsiConfigFormInit (\r
177 IN EFI_HANDLE DriverBindingHandle\r
178 );\r
179\r
180/**\r
181 Unload the iSCSI configuration form, this includes: delete all the iSCSI\r
182 configuration entries, uninstall the form callback protocol, and\r
183 free the resources used.\r
184\r
185 @param[in] DriverBindingHandle The iSCSI driverbinding handle.\r
186\r
187 @retval EFI_SUCCESS The iSCSI configuration form is unloaded.\r
188 @retval Others Failed to unload the form.\r
189\r
190**/\r
191EFI_STATUS\r
192IScsiConfigFormUnload (\r
193 IN EFI_HANDLE DriverBindingHandle\r
194 );\r
195\r
196/**\r
197 Update the MAIN form to display the configured attempts.\r
198\r
199**/\r
200VOID\r
201IScsiConfigUpdateAttempt (\r
202 VOID\r
203 );\r
204\r
205/**\r
206 Get the attempt config data from global structure by the ConfigIndex.\r
207\r
208 @param[in] AttemptConfigIndex The unique index indicates the attempt.\r
209\r
210 @return Pointer to the attempt config data.\r
211 @retval NULL The attempt configuration data can not be found.\r
212\r
213**/\r
214ISCSI_ATTEMPT_CONFIG_NVDATA *\r
215IScsiConfigGetAttemptByConfigIndex (\r
d1050b9d 216 IN UINT8 AttemptConfigIndex\r
4c5a5e0c 217 );\r
218\r
219#endif\r