123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- /** @file
- The shared head file for iSCSI driver.
- Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef _ISCSI_IMPL_H_
- #define _ISCSI_IMPL_H_
- #include <Uefi.h>
- #include <IndustryStandard/Dhcp.h>
- #include <Protocol/ComponentName.h>
- #include <Protocol/ComponentName2.h>
- #include <Protocol/DriverBinding.h>
- #include <Protocol/DevicePath.h>
- #include <Protocol/HiiConfigAccess.h>
- #include <Protocol/Ip6.h>
- #include <Protocol/Dhcp4.h>
- #include <Protocol/Dhcp6.h>
- #include <Protocol/Dns4.h>
- #include <Protocol/Dns6.h>
- #include <Protocol/Tcp4.h>
- #include <Protocol/Tcp6.h>
- #include <Protocol/Ip4Config2.h>
- #include <Protocol/Ip6Config.h>
- #include <Protocol/AuthenticationInfo.h>
- #include <Protocol/IScsiInitiatorName.h>
- #include <Protocol/ScsiPassThruExt.h>
- #include <Protocol/AdapterInformation.h>
- #include <Protocol/NetworkInterfaceIdentifier.h>
- #include <Library/BaseCryptLib.h>
- #include <Library/BaseLib.h>
- #include <Library/BaseMemoryLib.h>
- #include <Library/DebugLib.h>
- #include <Library/DevicePathLib.h>
- #include <Library/HiiLib.h>
- #include <Library/MemoryAllocationLib.h>
- #include <Library/NetLib.h>
- #include <Library/PrintLib.h>
- #include <Library/SafeIntLib.h>
- #include <Library/TcpIoLib.h>
- #include <Library/UefiBootServicesTableLib.h>
- #include <Library/UefiHiiServicesLib.h>
- #include <Library/UefiLib.h>
- #include <Library/UefiRuntimeServicesTableLib.h>
- #include <Guid/MdeModuleHii.h>
- #include <Guid/EventGroup.h>
- #include <Guid/Acpi.h>
- #include "IScsiConfigNVDataStruc.h"
- #include "IScsiDriver.h"
- #include "IScsiProto.h"
- #include "IScsiCHAP.h"
- #include "IScsiDhcp.h"
- #include "IScsiDhcp6.h"
- #include "IScsiIbft.h"
- #include "IScsiMisc.h"
- #include "IScsiDns.h"
- #include "IScsiConfig.h"
- #define ISCSI_AUTH_INITIAL 0
- #define ISCSI_SESSION_SIGNATURE SIGNATURE_32 ('I', 'S', 'S', 'N')
- ///
- /// 10 seconds
- ///
- #define ISCSI_GET_MAPPING_TIMEOUT 100000000U
- ///
- /// 3 seconds
- ///
- #define ISCSI_WAIT_IPSEC_TIMEOUT 30000000U
- struct _ISCSI_SESSION {
- UINT32 Signature;
- ISCSI_DRIVER_DATA *Private;
- ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData;
- UINT8 AuthType;
- union {
- ISCSI_CHAP_AUTH_DATA CHAP;
- } AuthData;
- UINT8 State;
- UINT8 Isid[6];
- UINT16 Tsih;
- UINT32 CmdSN;
- UINT32 ExpCmdSN;
- UINT32 MaxCmdSN;
- UINT32 InitiatorTaskTag;
- UINT16 NextCid;
- LIST_ENTRY Conns;
- UINT32 NumConns;
- LIST_ENTRY TcbList;
- //
- // Session-wide parameters
- //
- UINT16 TargetPortalGroupTag;
- UINT32 MaxConnections;
- BOOLEAN InitialR2T;
- BOOLEAN ImmediateData;
- UINT32 MaxBurstLength;
- UINT32 FirstBurstLength;
- UINT32 DefaultTime2Wait;
- UINT32 DefaultTime2Retain;
- UINT16 MaxOutstandingR2T;
- BOOLEAN DataPDUInOrder;
- BOOLEAN DataSequenceInOrder;
- UINT8 ErrorRecoveryLevel;
- };
- #define ISCSI_CONNECTION_SIGNATURE SIGNATURE_32 ('I', 'S', 'C', 'N')
- struct _ISCSI_CONNECTION {
- UINT32 Signature;
- LIST_ENTRY Link;
- EFI_EVENT TimeoutEvent;
- ISCSI_SESSION *Session;
- UINT8 State;
- UINT8 CurrentStage;
- UINT8 NextStage;
- UINT8 AuthStep;
- BOOLEAN PartialReqSent;
- BOOLEAN PartialRspRcvd;
- BOOLEAN TransitInitiated;
- BOOLEAN ParamNegotiated;
- UINT16 Cid;
- UINT32 ExpStatSN;
- //
- // Queues...
- //
- NET_BUF_QUEUE RspQue;
- BOOLEAN Ipv6Flag;
- TCP_IO TcpIo;
- //
- // Connection-only parameters.
- //
- UINT32 MaxRecvDataSegmentLength;
- ISCSI_DIGEST_TYPE HeaderDigest;
- ISCSI_DIGEST_TYPE DataDigest;
- };
- #define ISCSI_DRIVER_DATA_SIGNATURE SIGNATURE_32 ('I', 'S', 'D', 'A')
- #define ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU(PassThru) \
- CR ( \
- PassThru, \
- ISCSI_DRIVER_DATA, \
- IScsiExtScsiPassThru, \
- ISCSI_DRIVER_DATA_SIGNATURE \
- )
- #define ISCSI_DRIVER_DATA_FROM_IDENTIFIER(Identifier) \
- CR ( \
- Identifier, \
- ISCSI_DRIVER_DATA, \
- IScsiIdentifier, \
- ISCSI_DRIVER_DATA_SIGNATURE \
- )
- struct _ISCSI_DRIVER_DATA {
- UINT32 Signature;
- EFI_HANDLE Image;
- EFI_HANDLE Controller;
- ISCSI_PRIVATE_PROTOCOL IScsiIdentifier;
- EFI_EVENT ExitBootServiceEvent;
- EFI_EXT_SCSI_PASS_THRU_PROTOCOL IScsiExtScsiPassThru;
- EFI_EXT_SCSI_PASS_THRU_MODE ExtScsiPassThruMode;
- EFI_HANDLE ExtScsiPassThruHandle;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- EFI_HANDLE ChildHandle;
- ISCSI_SESSION *Session;
- };
- #endif
|