]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/IScsiDxe/IScsiImpl.h
NetworkPkg: Refine codes related to Dhcpv4 and Dhcpv6 configuration.
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiImpl.h
CommitLineData
4c5a5e0c 1/** @file\r
2 The shared head file for iSCSI driver.\r
3\r
142c00c3 4Copyright (c) 2004 - 2016, 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
31#include <Protocol/Tcp4.h>\r
32#include <Protocol/Tcp6.h>\r
33\r
34#include <Protocol/AuthenticationInfo.h>\r
35#include <Protocol/IScsiInitiatorName.h>\r
36#include <Protocol/ScsiPassThruExt.h>\r
8873b174 37#include <Protocol/AdapterInformation.h>\r
4c5a5e0c 38\r
39#include <Library/HiiLib.h>\r
40#include <Library/UefiHiiServicesLib.h>\r
41#include <Library/DevicePathLib.h>\r
42#include <Library/DebugLib.h>\r
43#include <Library/BaseLib.h>\r
44#include <Library/BaseMemoryLib.h>\r
45#include <Library/MemoryAllocationLib.h>\r
46#include <Library/PrintLib.h>\r
47#include <Library/UefiBootServicesTableLib.h>\r
48#include <Library/UefiRuntimeServicesTableLib.h>\r
49#include <Library/UefiLib.h>\r
50#include <Library/DpcLib.h>\r
51#include <Library/NetLib.h>\r
52#include <Library/TcpIoLib.h>\r
53#include <Library/BaseCryptLib.h>\r
54\r
55#include <Guid/MdeModuleHii.h>\r
56#include <Guid/EventGroup.h>\r
57#include <Guid/Acpi.h>\r
58\r
59#include "IScsiConfigNVDataStruc.h"\r
60#include "IScsiDriver.h"\r
61#include "IScsiProto.h"\r
62#include "IScsiCHAP.h"\r
63#include "IScsiDhcp.h"\r
64#include "IScsiDhcp6.h"\r
65#include "IScsiIbft.h"\r
66#include "IScsiMisc.h"\r
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
197 EFI_HANDLE ChildHandle; \r
198 ISCSI_SESSION *Session;\r
199};\r
200\r
201#endif\r