Ye Ting 8873b174c7 NetworkPkg: Update iSCSI driver to check existing AIP instances
According to UEFI spec, iSCSI HBA must install an AIP instance
with network boot information block. This patch updates UEFI
iSCSI driver to check whether there are AIP instances installed
by iSCSI HBA adapter and if yes, the UEFI iSCSI driver will return
EFI_ABORTED in its driver binding Start(). Also the patch
introduces a PCD PcdIScsiAIPNetworkBootPolicy for
platform owner to define particular policy when the iSCSI HBA
will survive and UEFI iSCSI will fail. The default policy is
STOP_UEFI_ISCSI_IF_AIP_SUPPORT_OFFLOAD which means that when ISCSI HBA
adapter installs an AIP and claims it supports an offload engine
for iSCSI boot, the UEFI iSCSI driver will return EFI_ABORTED.

The patch V2 adds a new value ALWAYS_USE_UEFI_ISCSI_AND_IGNORE_AIP
to PCD PcdIScsiAIPNetworkBootPolicy. This allows the platform to
avoid running into buggy IHV drivers that have issue with AIP.
It is suggested by El-Haj-Mahmoud,Samer <samer.el-haj-mahmoud@hpe.com>.

Cc: El-Haj-Mahmoud Samer <samer.el-haj-mahmoud@hpe.com>

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Fu siyuan <siyuan.fu@intel.com>
Reviewed-by: Wu Jiaxin <jiaxin.wu@intel.com>
Reviewed-by: El-Haj-Mahmoud Samer <samer.el-haj-mahmoud@hpe.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19367 6f19259b-4bc3-4df7-8a09-765794883524
2015-12-18 06:31:31 +00:00

135 lines
4.5 KiB
INI

## @file
# Client-side iSCSI service.
#
# The iSCSI driver provides iSCSI service in the preboot environment and supports
# booting over iSCSI.
#
# Copyright (c) 2004 - 2015, 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.
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = IScsiDxe
FILE_GUID = 86CDDF93-4872-4597-8AF9-A35AE4D3725F
MODULE_TYPE = UEFI_DRIVER
VERSION_STRING = 1.0
ENTRY_POINT = IScsiDriverEntryPoint
UNLOAD_IMAGE = IScsiUnload
MODULE_UNI_FILE = IScsiDxe.uni
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32 X64 IPF
#
# DRIVER_BINDING = gIScsiDriverBinding
# COMPONENT_NAME = gIScsiComponentName
# COMPONENT_NAME2 = gIScsiComponentName2
#
[Sources]
ComponentName.c
IScsiAuthenticationInfo.c
IScsiCHAP.h
IScsiCHAP.c
IScsiConfig.c
IScsiConfig.h
IScsiConfigNVDataStruc.h
IScsiConfigStrings.uni
IScsiConfigVfr.vfr
IScsiDhcp.c
IScsiDhcp.h
IScsiDhcp6.c
IScsiDhcp6.h
IScsiDriver.c
IScsiDriver.h
IScsiExtScsiPassThru.c
IScsiIbft.c
IScsiIbft.h
IScsiInitiatorName.c
IScsiImpl.h
IScsiMisc.c
IScsiMisc.h
IScsiProto.c
IScsiProto.h
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
CryptoPkg/CryptoPkg.dec
NetworkPkg/NetworkPkg.dec
[LibraryClasses]
BaseLib
BaseMemoryLib
DebugLib
DevicePathLib
HiiLib
MemoryAllocationLib
NetLib
TcpIoLib
PrintLib
UefiBootServicesTableLib
UefiDriverEntryPoint
UefiLib
UefiRuntimeServicesTableLib
UefiHiiServicesLib
BaseCryptLib
[Protocols]
gEfiAcpiTableProtocolGuid ## SOMETIMES_CONSUMES ## SystemTable
gEfiDriverBindingProtocolGuid ## SOMETIMES_PRODUCES
gEfiPciIoProtocolGuid ## SOMETIMES_CONSUMES
gEfiDhcp4ProtocolGuid ## TO_START
gEfiDhcp6ProtocolGuid ## TO_START
gEfiDhcp4ServiceBindingProtocolGuid ## TO_START
gEfiDhcp6ServiceBindingProtocolGuid ## TO_START
gEfiTcp4ProtocolGuid ## TO_START
gEfiTcp6ProtocolGuid ## TO_START
gEfiTcp4ServiceBindingProtocolGuid ## TO_START
gEfiTcp6ServiceBindingProtocolGuid ## TO_START
gEfiExtScsiPassThruProtocolGuid ## BY_START
gEfiHiiConfigAccessProtocolGuid ## PRODUCES
## TO_START
## PRODUCES
gEfiDevicePathProtocolGuid
## PRODUCES
## UNDEFINED # Variable
gEfiIScsiInitiatorNameProtocolGuid
## PRODUCES
gEfiAuthenticationInfoProtocolGuid
## CONSUMES
gEfiAdapterInformationProtocolGuid
[Guids]
gEfiEventExitBootServicesGuid ## SOMETIMES_CONSUMES ## Event
gEfiIfrTianoGuid ## SOMETIMES_PRODUCES ## UNDEFINED
gEfiAcpiTableGuid ## SOMETIMES_CONSUMES ## SystemTable
gEfiAcpi10TableGuid ## SOMETIMES_CONSUMES ## SystemTable
gEfiAcpi20TableGuid ## SOMETIMES_CONSUMES ## SystemTable
gEfiAdapterInfoNetworkBootGuid ## SOMETIMES_CONSUMES ## UNDEFINED
## SOMETIMES_PRODUCES ## Variable:L"AttemptOrder"
## SOMETIMES_CONSUMES ## Variable:L"AttemptOrder"
## SOMETIMES_CONSUMES ## UNDEFINED # HiiIsConfigHdrMatch mVendorStorageName
## SOMETIMES_PRODUCES ## UNDEFINED # HiiConstructConfigHdr mVendorStorageName
## SOMETIMES_PRODUCES ## UNDEFINED # HiiGetBrowserData mVendorStorageName
## SOMETIMES_CONSUMES ## UNDEFINED # HiiSetBrowserData mVendorStorageName
## SOMETIMES_CONSUMES ## HII
gIScsiConfigGuid
[Pcd]
gEfiNetworkPkgTokenSpaceGuid.PcdIScsiAIPNetworkBootPolicy ## CONSUMES
[UserExtensions.TianoCore."ExtraFiles"]
IScsiDxeExtra.uni