]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/IScsiDxe/IScsiImpl.h
UefiCpuPkg: Modify GetProcessorLocationByApicId() to support AMD.
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiImpl.h
CommitLineData
4c5a5e0c 1/** @file\r
2 The shared head file for iSCSI driver.\r
3\r
eabc6e59 4Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
4c5a5e0c 5This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _ISCSI_IMPL_H_\r
16#define _ISCSI_IMPL_H_\r
17\r
18#include <Uefi.h>\r
19\r
142c00c3
ZL
20#include <IndustryStandard/Dhcp.h>\r
21\r
4c5a5e0c 22#include <Protocol/ComponentName.h>\r
23#include <Protocol/ComponentName2.h>\r
24#include <Protocol/DriverBinding.h>\r
25#include <Protocol/DevicePath.h>\r
26#include <Protocol/HiiConfigAccess.h>\r
27\r
75dce340 28#include <Protocol/Ip6.h>\r
4c5a5e0c 29#include <Protocol/Dhcp4.h>\r
30#include <Protocol/Dhcp6.h>\r
eabc6e59
ZL
31#include <Protocol/Dns4.h>\r
32#include <Protocol/Dns6.h>\r
4c5a5e0c 33#include <Protocol/Tcp4.h>\r
34#include <Protocol/Tcp6.h>\r
eabc6e59
ZL
35#include <Protocol/Ip4Config2.h>\r
36#include <Protocol/Ip6Config.h>\r
4c5a5e0c 37\r
38#include <Protocol/AuthenticationInfo.h>\r
39#include <Protocol/IScsiInitiatorName.h>\r
40#include <Protocol/ScsiPassThruExt.h>\r
8873b174 41#include <Protocol/AdapterInformation.h>\r
4c5a5e0c 42\r
43#include <Library/HiiLib.h>\r
44#include <Library/UefiHiiServicesLib.h>\r
45#include <Library/DevicePathLib.h>\r
46#include <Library/DebugLib.h>\r
47#include <Library/BaseLib.h>\r
48#include <Library/BaseMemoryLib.h>\r
49#include <Library/MemoryAllocationLib.h>\r
50#include <Library/PrintLib.h>\r
51#include <Library/UefiBootServicesTableLib.h>\r
52#include <Library/UefiRuntimeServicesTableLib.h>\r
53#include <Library/UefiLib.h>\r
54#include <Library/DpcLib.h>\r
55#include <Library/NetLib.h>\r
56#include <Library/TcpIoLib.h>\r
57#include <Library/BaseCryptLib.h>\r
58\r
59#include <Guid/MdeModuleHii.h>\r
60#include <Guid/EventGroup.h>\r
61#include <Guid/Acpi.h>\r
62\r
63#include "IScsiConfigNVDataStruc.h"\r
64#include "IScsiDriver.h"\r
65#include "IScsiProto.h"\r
66#include "IScsiCHAP.h"\r
67#include "IScsiDhcp.h"\r
68#include "IScsiDhcp6.h"\r
eabc6e59 69\r
4c5a5e0c 70#include "IScsiIbft.h"\r
71#include "IScsiMisc.h"\r
eabc6e59 72#include "IScsiDns.h"\r
4c5a5e0c 73#include "IScsiConfig.h"\r
74\r
75#define ISCSI_AUTH_INITIAL 0\r
76\r
77#define ISCSI_SESSION_SIGNATURE SIGNATURE_32 ('I', 'S', 'S', 'N')\r
78///\r
79/// 10 seconds\r
80///\r
81#define ISCSI_GET_MAPPING_TIMEOUT 100000000U\r
82///\r
83/// 3 seconds\r
84///\r
85#define ISCSI_WAIT_IPSEC_TIMEOUT 30000000U\r
86\r
87struct _ISCSI_SESSION {\r
88 UINT32 Signature;\r
89\r
90 ISCSI_DRIVER_DATA *Private;\r
91 ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData;\r
92\r
93 UINT8 AuthType;\r
94 union {\r
95 ISCSI_CHAP_AUTH_DATA CHAP;\r
96 } AuthData;\r
97\r
98 UINT8 State;\r
99\r
100 UINT8 Isid[6];\r
101 UINT16 Tsih;\r
102\r
103 UINT32 CmdSN;\r
104 UINT32 ExpCmdSN;\r
105 UINT32 MaxCmdSN;\r
106\r
107 UINT32 InitiatorTaskTag;\r
108 UINT16 NextCid;\r
109\r
110 LIST_ENTRY Conns;\r
111 UINT32 NumConns;\r
112\r
113 LIST_ENTRY TcbList;\r
114\r
115 //\r
116 // Session-wide parameters\r
117 //\r
118 UINT16 TargetPortalGroupTag;\r
119 UINT32 MaxConnections;\r
120 BOOLEAN InitialR2T;\r
121 BOOLEAN ImmediateData;\r
122 UINT32 MaxBurstLength;\r
123 UINT32 FirstBurstLength;\r
124 UINT32 DefaultTime2Wait;\r
125 UINT32 DefaultTime2Retain;\r
126 UINT16 MaxOutstandingR2T;\r
127 BOOLEAN DataPDUInOrder;\r
128 BOOLEAN DataSequenceInOrder;\r
129 UINT8 ErrorRecoveryLevel;\r
130};\r
131\r
132#define ISCSI_CONNECTION_SIGNATURE SIGNATURE_32 ('I', 'S', 'C', 'N')\r
133\r
134struct _ISCSI_CONNECTION {\r
135 UINT32 Signature;\r
136 LIST_ENTRY Link;\r
137\r
138 EFI_EVENT TimeoutEvent;\r
139\r
140 ISCSI_SESSION *Session;\r
141\r
142 UINT8 State;\r
143 UINT8 CurrentStage;\r
144 UINT8 NextStage;\r
145\r
146 UINT8 AuthStep;\r
147\r
148 BOOLEAN PartialReqSent;\r
149 BOOLEAN PartialRspRcvd;\r
150\r
151 BOOLEAN TransitInitiated;\r
152 BOOLEAN ParamNegotiated;\r
153\r
154 UINT16 Cid;\r
155 UINT32 ExpStatSN;\r
156\r
157 //\r
158 // Queues...\r
159 //\r
160 NET_BUF_QUEUE RspQue;\r
161\r
162 BOOLEAN Ipv6Flag;\r
163 TCP_IO TcpIo;\r
164\r
165 //\r
166 // Connection-only parameters.\r
167 //\r
168 UINT32 MaxRecvDataSegmentLength;\r
169 ISCSI_DIGEST_TYPE HeaderDigest;\r
170 ISCSI_DIGEST_TYPE DataDigest;\r
171};\r
172\r
173#define ISCSI_DRIVER_DATA_SIGNATURE SIGNATURE_32 ('I', 'S', 'D', 'A')\r
174\r
175#define ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU(PassThru) \\r
176 CR ( \\r
177 PassThru, \\r
178 ISCSI_DRIVER_DATA, \\r
179 IScsiExtScsiPassThru, \\r
180 ISCSI_DRIVER_DATA_SIGNATURE \\r
181 )\r
182\r
183#define ISCSI_DRIVER_DATA_FROM_IDENTIFIER(Identifier) \\r
184 CR ( \\r
185 Identifier, \\r
186 ISCSI_DRIVER_DATA, \\r
187 IScsiIdentifier, \\r
188 ISCSI_DRIVER_DATA_SIGNATURE \\r
189 )\r
190\r
191struct _ISCSI_DRIVER_DATA {\r
192 UINT32 Signature;\r
193 EFI_HANDLE Image;\r
194 EFI_HANDLE Controller;\r
195 ISCSI_PRIVATE_PROTOCOL IScsiIdentifier;\r
196\r
197 EFI_EVENT ExitBootServiceEvent;\r
198\r
199 EFI_EXT_SCSI_PASS_THRU_PROTOCOL IScsiExtScsiPassThru;\r
200 EFI_EXT_SCSI_PASS_THRU_MODE ExtScsiPassThruMode;\r
201 EFI_HANDLE ExtScsiPassThruHandle;\r
202 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
203 EFI_HANDLE ChildHandle; \r
204 ISCSI_SESSION *Session;\r
205};\r
206\r
207#endif\r