Signed-off-by: tye1 Reviewed-by: hhuan13 Reviewed-by: eric_tian git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12149 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			198 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			198 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  The shared head file for iSCSI driver.
 | 
						|
 | 
						|
Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
 | 
						|
This program and the accompanying materials
 | 
						|
are licensed and made available under the terms and conditions of the BSD License
 | 
						|
which accompanies this distribution.  The full text of the license may be found at
 | 
						|
http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _ISCSI_IMPL_H_
 | 
						|
#define _ISCSI_IMPL_H_
 | 
						|
 | 
						|
#include <Uefi.h>
 | 
						|
 | 
						|
#include <Protocol/ComponentName.h>
 | 
						|
#include <Protocol/ComponentName2.h>
 | 
						|
#include <Protocol/DriverBinding.h>
 | 
						|
#include <Protocol/DevicePath.h>
 | 
						|
#include <Protocol/HiiConfigAccess.h>
 | 
						|
 | 
						|
#include <Protocol/Dhcp4.h>
 | 
						|
#include <Protocol/Dhcp6.h>
 | 
						|
#include <Protocol/Tcp4.h>
 | 
						|
#include <Protocol/Tcp6.h>
 | 
						|
 | 
						|
#include <Protocol/AuthenticationInfo.h>
 | 
						|
#include <Protocol/IScsiInitiatorName.h>
 | 
						|
#include <Protocol/ScsiPassThruExt.h>
 | 
						|
 | 
						|
#include <Library/HiiLib.h>
 | 
						|
#include <Library/UefiHiiServicesLib.h>
 | 
						|
#include <Library/DevicePathLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/BaseLib.h>
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/MemoryAllocationLib.h>
 | 
						|
#include <Library/PrintLib.h>
 | 
						|
#include <Library/UefiBootServicesTableLib.h>
 | 
						|
#include <Library/UefiRuntimeServicesTableLib.h>
 | 
						|
#include <Library/UefiLib.h>
 | 
						|
#include <Library/DpcLib.h>
 | 
						|
#include <Library/NetLib.h>
 | 
						|
#include <Library/TcpIoLib.h>
 | 
						|
#include <Library/BaseCryptLib.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 "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
 |