]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/IScsiDxe/IScsiDriver.c
MdeModulePkg/AtaAtapiPassThru: Ensure GHC.AE bit is always set in Ahci
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiDriver.c
index c3ab2c92881d6041aceac0329732f3cfee2a6c0c..ac10fa26d1b94d5a142eee72841115f08007585b 100644 (file)
@@ -358,6 +358,7 @@ IScsiStart (
   VOID                            *Interface;\r
   EFI_GUID                        *ProtocolGuid;\r
   UINT8                           NetworkBootPolicy;\r
+  ISCSI_SESSION_CONFIG_NVDATA     *NvData;\r
 \r
   //\r
   // Test to see if iSCSI driver supports the given controller.\r
@@ -672,7 +673,7 @@ IScsiStart (
     Session->ConfigData = AttemptConfigData;\r
     Session->AuthType   = AttemptConfigData->AuthenticationType;\r
 \r
-    AsciiStrToUnicodeStrS (AttemptConfigData->MacString, MacString, sizeof (MacString) / sizeof (MacString[0]));\r
+    AsciiStrToUnicodeStrS (AttemptConfigData->MacString, MacString, ARRAY_SIZE (MacString));\r
     UnicodeSPrint (\r
       mPrivate->PortString,\r
       (UINTN) ISCSI_NAME_IFR_MAX_SIZE,\r
@@ -701,6 +702,24 @@ IScsiStart (
       Status = IScsiSessionReLogin (Session);\r
     }\r
 \r
+    //\r
+    // Restore the origial user setting which specifies the proxy/virtual iSCSI target to NV region.\r
+    //\r
+    NvData = &AttemptConfigData->SessionConfigData;\r
+    if (NvData->RedirectFlag) {\r
+      NvData->TargetPort = NvData->OriginalTargetPort;\r
+      CopyMem (&NvData->TargetIp, &NvData->OriginalTargetIp, sizeof (EFI_IP_ADDRESS));\r
+      NvData->RedirectFlag = FALSE;\r
+\r
+      gRT->SetVariable (\r
+             mPrivate->PortString,\r
+             &gEfiIScsiInitiatorNameProtocolGuid,\r
+             ISCSI_CONFIG_VAR_ATTR,\r
+             sizeof (ISCSI_ATTEMPT_CONFIG_NVDATA),\r
+             AttemptConfigData\r
+             );\r
+    }\r
+\r
     if (EFI_ERROR (Status)) {\r
       //\r
       // In Single path mode, only the successful attempt will be recorded in iBFT;\r