]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/IScsiDxe/IScsiDriver.c
SourceLevelDebugPkg DebugUsb3: Fix GCC build failures
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiDriver.c
index 78c93ba66ca9dad6ca18d5712e8eced27908abbd..a0ece3ae1fa876ca40108e61526ad2b832354c4c 100644 (file)
@@ -2,6 +2,8 @@
   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
@@ -85,6 +87,7 @@ IScsiIsDevicePathSupported (
 **/\r
 EFI_STATUS\r
 IScsiCheckAip (\r
+  VOID\r
   )\r
 {\r
   UINTN                            AipHandleCount;\r
@@ -371,7 +374,6 @@ IScsiStart (
   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
@@ -419,7 +421,11 @@ IScsiStart (
   }\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
@@ -435,7 +441,7 @@ IScsiStart (
   //\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
@@ -691,12 +697,10 @@ IScsiStart (
     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
@@ -1797,6 +1801,22 @@ IScsiDriverEntryPoint (
     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
@@ -1814,17 +1834,23 @@ IScsiDriverEntryPoint (
                     &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