]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/Network/IScsiDxe/IScsiImpl.h
update file header
[mirror_edk2.git] / MdeModulePkg / Universal / Network / IScsiDxe / IScsiImpl.h
1 /** @file
2 The header file of IScsiImpl.c.
3
4 Copyright (c) 2004 - 2008, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _ISCSI_IMPL_H_
16 #define _ISCSI_IMPL_H_
17
18 #include <Uefi.h>
19
20 #include <Library/NetLib.h>
21 #include <Library/PrintLib.h>
22 #include <Library/UefiRuntimeServicesTableLib.h>
23 #include "IScsiCommon.h"
24 #include "IScsiDriver.h"
25 #include "IScsiConfigNVDataStruc.h"
26 #include "IScsiExtScsiPassThru.h"
27 #include "IScsiProto.h"
28 #include "IScsiMisc.h"
29 #include "IScsiCHAP.h"
30 #include "IScsiConfig.h"
31 #include "IScsiDhcp.h"
32 #include "IScsiTcp4Io.h"
33 #include "IScsiIbft.h"
34
35
36
37 #define ISCSI_SESSION_SIGNATURE EFI_SIGNATURE_32 ('I', 'S', 'S', 'N')
38
39 struct _ISCSI_SESSION {
40 UINT32 Signature;
41
42 ISCSI_SESSION_CONFIG_DATA ConfigData;
43 ISCSI_CHAP_AUTH_DATA AuthData;
44
45 CHAR8 InitiatorName[ISCSI_NAME_MAX_SIZE];
46 UINTN InitiatorNameLength;
47 UINT8 State;
48
49 UINT8 ISID[6];
50 UINT16 TSIH;
51
52 UINT32 CmdSN;
53 UINT32 ExpCmdSN;
54 UINT32 MaxCmdSN;
55
56 UINT32 InitiatorTaskTag;
57 UINT16 NextCID;
58
59 LIST_ENTRY Conns;
60 UINT32 NumConns;
61
62 LIST_ENTRY TcbList;
63
64 //
65 // session-wide parameters
66 //
67 UINT16 TargetPortalGroupTag;
68 UINT32 MaxConnections;
69 BOOLEAN InitialR2T;
70 BOOLEAN ImmediateData;
71 UINT32 MaxBurstLength;
72 UINT32 FirstBurstLength;
73 UINT32 DefaultTime2Wait;
74 UINT32 DefaultTime2Retain;
75 UINT16 MaxOutstandingR2T;
76 BOOLEAN DataPDUInOrder;
77 BOOLEAN DataSequenceInOrder;
78 UINT8 ErrorRecoveryLevel;
79 };
80
81 #define ISCSI_CONNECTION_SIGNATURE EFI_SIGNATURE_32 ('I', 'S', 'C', 'N')
82
83 struct _ISCSI_CONNECTION {
84 UINT32 Signature;
85 LIST_ENTRY Link;
86
87 EFI_EVENT TimeoutEvent;
88
89 ISCSI_SESSION *Session;
90
91 UINT8 State;
92 UINT8 CurrentStage;
93 UINT8 NextStage;
94
95 UINT8 CHAPStep;
96
97 BOOLEAN PartialReqSent;
98 BOOLEAN PartialRspRcvd;
99
100 BOOLEAN TransitInitiated;
101
102 UINT16 CID;
103 UINT32 ExpStatSN;
104
105 //
106 // queues...
107 //
108 NET_BUF_QUEUE RspQue;
109
110 TCP4_IO Tcp4Io;
111
112 //
113 // connection-only parameters
114 //
115 UINT32 MaxRecvDataSegmentLength;
116 ISCSI_DIGEST_TYPE HeaderDigest;
117 ISCSI_DIGEST_TYPE DataDigest;
118 };
119
120 #define ISCSI_DRIVER_DATA_SIGNATURE EFI_SIGNATURE_32 ('I', 'S', 'D', 'A')
121
122 #define ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU(PassThru) \
123 CR ( \
124 PassThru, \
125 ISCSI_DRIVER_DATA, \
126 IScsiExtScsiPassThru, \
127 ISCSI_DRIVER_DATA_SIGNATURE \
128 )
129 #define ISCSI_DRIVER_DATA_FROM_IDENTIFIER(Identifier) \
130 CR ( \
131 Identifier, \
132 ISCSI_DRIVER_DATA, \
133 IScsiIdentifier, \
134 ISCSI_DRIVER_DATA_SIGNATURE \
135 )
136 #define ISCSI_DRIVER_DATA_FROM_SESSION(s) \
137 CR ( \
138 s, \
139 ISCSI_DRIVER_DATA, \
140 Session, \
141 ISCSI_DRIVER_DATA_SIGNATURE \
142 )
143
144 struct _ISCSI_DRIVER_DATA {
145 UINT32 Signature;
146 EFI_HANDLE Image;
147 EFI_HANDLE Controller;
148 ISCSI_PRIVATE_PROTOCOL IScsiIdentifier;
149
150 EFI_EVENT ExitBootServiceEvent;
151
152 EFI_EXT_SCSI_PASS_THRU_PROTOCOL IScsiExtScsiPassThru;
153 EFI_EXT_SCSI_PASS_THRU_MODE ExtScsiPassThruMode;
154 EFI_HANDLE ExtScsiPassThruHandle;
155 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
156
157 ISCSI_SESSION Session;
158 };
159
160 #endif