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