• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** @file
2   The header file of IScsiImpl.c.
3 
4 Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
5 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/BaseMemoryLib.h>
21 #include <Library/MemoryAllocationLib.h>
22 #include <Library/NetLib.h>
23 #include <Library/PrintLib.h>
24 #include <Library/UefiRuntimeServicesTableLib.h>
25 
26 #include <Guid/EventGroup.h>
27 #include <Guid/Acpi.h>
28 
29 #include "IScsiCommon.h"
30 #include "IScsiDriver.h"
31 #include "IScsiInitiatorName.h"
32 #include "ComponentName.h"
33 #include "IScsiConfigNVDataStruc.h"
34 #include "IScsiExtScsiPassThru.h"
35 #include "IScsiProto.h"
36 #include "IScsiMisc.h"
37 #include "IScsiCHAP.h"
38 #include "IScsiConfig.h"
39 #include "IScsiDhcp.h"
40 #include "IScsiTcp4Io.h"
41 #include "IScsiIbft.h"
42 
43 
44 #define ISCSI_SESSION_SIGNATURE SIGNATURE_32 ('I', 'S', 'S', 'N')
45 
46 struct _ISCSI_SESSION {
47   UINT32                    Signature;
48 
49   ISCSI_SESSION_CONFIG_DATA ConfigData;
50   ISCSI_CHAP_AUTH_DATA      AuthData;
51 
52   CHAR8                     InitiatorName[ISCSI_NAME_MAX_SIZE];
53   UINTN                     InitiatorNameLength;
54   UINT8                     State;
55 
56   UINT8                     Isid[6];
57   UINT16                    Tsih;
58 
59   UINT32                    CmdSN;
60   UINT32                    ExpCmdSN;
61   UINT32                    MaxCmdSN;
62 
63   UINT32                    InitiatorTaskTag;
64   UINT16                    NextCid;
65 
66   LIST_ENTRY                Conns;
67   UINT32                    NumConns;
68 
69   LIST_ENTRY                TcbList;
70 
71   //
72   // session-wide parameters
73   //
74   UINT16                    TargetPortalGroupTag;
75   UINT32                    MaxConnections;
76   BOOLEAN                   InitialR2T;
77   BOOLEAN                   ImmediateData;
78   UINT32                    MaxBurstLength;
79   UINT32                    FirstBurstLength;
80   UINT32                    DefaultTime2Wait;
81   UINT32                    DefaultTime2Retain;
82   UINT16                    MaxOutstandingR2T;
83   BOOLEAN                   DataPDUInOrder;
84   BOOLEAN                   DataSequenceInOrder;
85   UINT8                     ErrorRecoveryLevel;
86 };
87 
88 #define ISCSI_CONNECTION_SIGNATURE  SIGNATURE_32 ('I', 'S', 'C', 'N')
89 
90 struct _ISCSI_CONNECTION {
91   UINT32            Signature;
92   LIST_ENTRY        Link;
93 
94   EFI_EVENT         TimeoutEvent;
95 
96   ISCSI_SESSION     *Session;
97 
98   UINT8             State;
99   UINT8             CurrentStage;
100   UINT8             NextStage;
101 
102   UINT8             CHAPStep;
103 
104   BOOLEAN           PartialReqSent;
105   BOOLEAN           PartialRspRcvd;
106 
107   BOOLEAN           TransitInitiated;
108 
109   UINT16            Cid;
110   UINT32            ExpStatSN;
111 
112   //
113   // queues...
114   //
115   NET_BUF_QUEUE     RspQue;
116 
117   TCP4_IO           Tcp4Io;
118 
119   //
120   // connection-only parameters
121   //
122   UINT32            MaxRecvDataSegmentLength;
123   ISCSI_DIGEST_TYPE HeaderDigest;
124   ISCSI_DIGEST_TYPE DataDigest;
125 };
126 
127 #define ISCSI_DRIVER_DATA_SIGNATURE SIGNATURE_32 ('I', 'S', 'D', 'A')
128 
129 #define ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU(PassThru) \
130   CR ( \
131   PassThru, \
132   ISCSI_DRIVER_DATA, \
133   IScsiExtScsiPassThru, \
134   ISCSI_DRIVER_DATA_SIGNATURE \
135   )
136 #define ISCSI_DRIVER_DATA_FROM_IDENTIFIER(Identifier) \
137   CR ( \
138   Identifier, \
139   ISCSI_DRIVER_DATA, \
140   IScsiIdentifier, \
141   ISCSI_DRIVER_DATA_SIGNATURE \
142   )
143 #define ISCSI_DRIVER_DATA_FROM_SESSION(s) \
144   CR ( \
145   s, \
146   ISCSI_DRIVER_DATA, \
147   Session, \
148   ISCSI_DRIVER_DATA_SIGNATURE \
149   )
150 
151 struct _ISCSI_DRIVER_DATA {
152   UINT32                          Signature;
153   EFI_HANDLE                      Image;
154   EFI_HANDLE                      Controller;
155   ISCSI_PRIVATE_PROTOCOL          IScsiIdentifier;
156   EFI_HANDLE                      ChildHandle;
157   EFI_EVENT                       ExitBootServiceEvent;
158 
159   EFI_EXT_SCSI_PASS_THRU_PROTOCOL IScsiExtScsiPassThru;
160   EFI_EXT_SCSI_PASS_THRU_MODE     ExtScsiPassThruMode;
161   EFI_HANDLE                      ExtScsiPassThruHandle;
162   EFI_DEVICE_PATH_PROTOCOL        *DevicePath;
163 
164   ISCSI_SESSION                   Session;
165 };
166 
167 #endif
168