The entry point of IScsi driver.\r
\r
Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
+(C) Copyright 2017 Hewlett Packard Enterprise Development LP<BR>\r
+\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
**/\r
EFI_STATUS\r
IScsiCheckAip (\r
+ VOID\r
)\r
{\r
UINTN AipHandleCount;\r
EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
EFI_GUID *IScsiPrivateGuid;\r
EFI_GUID *TcpServiceBindingGuid;\r
- CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN];\r
BOOLEAN NeedUpdate;\r
VOID *Interface;\r
EFI_GUID *ProtocolGuid;\r
}\r
\r
NetworkBootPolicy = PcdGet8 (PcdIScsiAIPNetworkBootPolicy);\r
- if (NetworkBootPolicy != ALWAYS_USE_UEFI_ISCSI_AND_IGNORE_AIP) {\r
+ if (NetworkBootPolicy == ALWAYS_USE_ISCSI_HBA_AND_IGNORE_UEFI_ISCSI) {\r
+ return EFI_ABORTED;\r
+ }\r
+\r
+ if (NetworkBootPolicy != ALWAYS_USE_UEFI_ISCSI_AND_IGNORE_ISCSI_HBA) {\r
//\r
// Check existing iSCSI AIP.\r
//\r
//\r
// Record the incoming NIC info.\r
//\r
- Status = IScsiAddNic (ControllerHandle);\r
+ Status = IScsiAddNic (ControllerHandle, Image);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
Session->ConfigData = AttemptConfigData;\r
Session->AuthType = AttemptConfigData->AuthenticationType;\r
\r
- AsciiStrToUnicodeStrS (AttemptConfigData->MacString, MacString, ARRAY_SIZE (MacString));\r
UnicodeSPrint (\r
mPrivate->PortString,\r
(UINTN) ISCSI_NAME_IFR_MAX_SIZE,\r
- L"%s%d",\r
- MacString,\r
+ L"Attempt %d",\r
(UINTN) AttemptConfigData->AttemptConfigIndex\r
);\r
\r
goto Error4;\r
}\r
\r
+ //\r
+ // Create the Maximum Attempts.\r
+ //\r
+ Status = IScsiCreateAttempts (PcdGet8 (PcdMaxIScsiAttemptNumber));\r
+ if (EFI_ERROR (Status)) {\r
+ goto Error5;\r
+ }\r
+\r
+ //\r
+ // Create Keywords for all the Attempts.\r
+ //\r
+ Status = IScsiCreateKeywords (PcdGet8 (PcdMaxIScsiAttemptNumber));\r
+ if (EFI_ERROR (Status)) {\r
+ goto Error6;\r
+ }\r
+\r
//\r
// There should be only one EFI_AUTHENTICATION_INFO_PROTOCOL. If already exists,\r
// do not produce the protocol instance.\r
&gIScsiAuthenticationInfo\r
);\r
if (EFI_ERROR (Status)) {\r
- goto Error5;\r
+ goto Error6;\r
} \r
}\r
\r
return EFI_SUCCESS;\r
\r
+Error6:\r
+ IScsiCleanAttemptVariable ();\r
+\r
Error5:\r
IScsiConfigFormUnload (gIScsiIp4DriverBinding.DriverBindingHandle);\r
\r
Error4:\r
- FreePool (mPrivate);\r
+ if (mPrivate != NULL) {\r
+ FreePool (mPrivate);\r
+ mPrivate = NULL;\r
+ }\r
\r
Error3:\r
gBS->UninstallMultipleProtocolInterfaces (\r