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