]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/IScsiDxe/IScsiImpl.h
MdePkg/SmmMemLib: Check for untested memory in GCD
[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
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
6b08dd6e 42#include <Protocol/NetworkInterfaceIdentifier.h>\r
4c5a5e0c 43\r
44#include <Library/HiiLib.h>\r
45#include <Library/UefiHiiServicesLib.h>\r
46#include <Library/DevicePathLib.h>\r
47#include <Library/DebugLib.h>\r
48#include <Library/BaseLib.h>\r
49#include <Library/BaseMemoryLib.h>\r
50#include <Library/MemoryAllocationLib.h>\r
51#include <Library/PrintLib.h>\r
52#include <Library/UefiBootServicesTableLib.h>\r
53#include <Library/UefiRuntimeServicesTableLib.h>\r
54#include <Library/UefiLib.h>\r
55#include <Library/DpcLib.h>\r
56#include <Library/NetLib.h>\r
57#include <Library/TcpIoLib.h>\r
58#include <Library/BaseCryptLib.h>\r
59\r
60#include <Guid/MdeModuleHii.h>\r
61#include <Guid/EventGroup.h>\r
62#include <Guid/Acpi.h>\r
63\r
64#include "IScsiConfigNVDataStruc.h"\r
65#include "IScsiDriver.h"\r
66#include "IScsiProto.h"\r
67#include "IScsiCHAP.h"\r
68#include "IScsiDhcp.h"\r
69#include "IScsiDhcp6.h"\r
eabc6e59 70\r
4c5a5e0c 71#include "IScsiIbft.h"\r
72#include "IScsiMisc.h"\r
eabc6e59 73#include "IScsiDns.h"\r
4c5a5e0c 74#include "IScsiConfig.h"\r
75\r
76#define ISCSI_AUTH_INITIAL 0\r
77\r
78#define ISCSI_SESSION_SIGNATURE SIGNATURE_32 ('I', 'S', 'S', 'N')\r
79///\r
80/// 10 seconds\r
81///\r
82#define ISCSI_GET_MAPPING_TIMEOUT 100000000U\r
83///\r
84/// 3 seconds\r
85///\r
86#define ISCSI_WAIT_IPSEC_TIMEOUT 30000000U\r
87\r
88struct _ISCSI_SESSION {\r
89 UINT32 Signature;\r
90\r
91 ISCSI_DRIVER_DATA *Private;\r
92 ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData;\r
93\r
94 UINT8 AuthType;\r
95 union {\r
96 ISCSI_CHAP_AUTH_DATA CHAP;\r
97 } AuthData;\r
98\r
99 UINT8 State;\r
100\r
101 UINT8 Isid[6];\r
102 UINT16 Tsih;\r
103\r
104 UINT32 CmdSN;\r
105 UINT32 ExpCmdSN;\r
106 UINT32 MaxCmdSN;\r
107\r
108 UINT32 InitiatorTaskTag;\r
109 UINT16 NextCid;\r
110\r
111 LIST_ENTRY Conns;\r
112 UINT32 NumConns;\r
113\r
114 LIST_ENTRY TcbList;\r
115\r
116 //\r
117 // Session-wide parameters\r
118 //\r
119 UINT16 TargetPortalGroupTag;\r
120 UINT32 MaxConnections;\r
121 BOOLEAN InitialR2T;\r
122 BOOLEAN ImmediateData;\r
123 UINT32 MaxBurstLength;\r
124 UINT32 FirstBurstLength;\r
125 UINT32 DefaultTime2Wait;\r
126 UINT32 DefaultTime2Retain;\r
127 UINT16 MaxOutstandingR2T;\r
128 BOOLEAN DataPDUInOrder;\r
129 BOOLEAN DataSequenceInOrder;\r
130 UINT8 ErrorRecoveryLevel;\r
131};\r
132\r
133#define ISCSI_CONNECTION_SIGNATURE SIGNATURE_32 ('I', 'S', 'C', 'N')\r
134\r
135struct _ISCSI_CONNECTION {\r
136 UINT32 Signature;\r
137 LIST_ENTRY Link;\r
138\r
139 EFI_EVENT TimeoutEvent;\r
140\r
141 ISCSI_SESSION *Session;\r
142\r
143 UINT8 State;\r
144 UINT8 CurrentStage;\r
145 UINT8 NextStage;\r
146\r
147 UINT8 AuthStep;\r
148\r
149 BOOLEAN PartialReqSent;\r
150 BOOLEAN PartialRspRcvd;\r
151\r
152 BOOLEAN TransitInitiated;\r
153 BOOLEAN ParamNegotiated;\r
154\r
155 UINT16 Cid;\r
156 UINT32 ExpStatSN;\r
157\r
158 //\r
159 // Queues...\r
160 //\r
161 NET_BUF_QUEUE RspQue;\r
162\r
163 BOOLEAN Ipv6Flag;\r
164 TCP_IO TcpIo;\r
165\r
166 //\r
167 // Connection-only parameters.\r
168 //\r
169 UINT32 MaxRecvDataSegmentLength;\r
170 ISCSI_DIGEST_TYPE HeaderDigest;\r
171 ISCSI_DIGEST_TYPE DataDigest;\r
172};\r
173\r
174#define ISCSI_DRIVER_DATA_SIGNATURE SIGNATURE_32 ('I', 'S', 'D', 'A')\r
175\r
176#define ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU(PassThru) \\r
177 CR ( \\r
178 PassThru, \\r
179 ISCSI_DRIVER_DATA, \\r
180 IScsiExtScsiPassThru, \\r
181 ISCSI_DRIVER_DATA_SIGNATURE \\r
182 )\r
183\r
184#define ISCSI_DRIVER_DATA_FROM_IDENTIFIER(Identifier) \\r
185 CR ( \\r
186 Identifier, \\r
187 ISCSI_DRIVER_DATA, \\r
188 IScsiIdentifier, \\r
189 ISCSI_DRIVER_DATA_SIGNATURE \\r
190 )\r
191\r
192struct _ISCSI_DRIVER_DATA {\r
193 UINT32 Signature;\r
194 EFI_HANDLE Image;\r
195 EFI_HANDLE Controller;\r
196 ISCSI_PRIVATE_PROTOCOL IScsiIdentifier;\r
197\r
198 EFI_EVENT ExitBootServiceEvent;\r
199\r
200 EFI_EXT_SCSI_PASS_THRU_PROTOCOL IScsiExtScsiPassThru;\r
201 EFI_EXT_SCSI_PASS_THRU_MODE ExtScsiPassThruMode;\r
202 EFI_HANDLE ExtScsiPassThruHandle;\r
203 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
f75a7f56 204 EFI_HANDLE ChildHandle;\r
4c5a5e0c 205 ISCSI_SESSION *Session;\r
206};\r
207\r
208#endif\r