]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/IScsiDxe/IScsiDhcp.c
StandaloneMmPkg/FvLib: Add a common FV Library for management mode.
[mirror_edk2.git] / NetworkPkg / IScsiDxe / IScsiDhcp.c
index 6587a05993535ba6391d82ca91919db6d2aba019..2a0da0ccf3987860a8dfaa9259777d650900ab60 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   iSCSI DHCP4 related configuration routines.\r
 \r
-Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\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
@@ -134,6 +134,7 @@ IScsiDhcpExtractRootPath (
     CopyMem (&ConfigNvData->TargetUrl, Field->Str, Field->Len);\r
     ConfigNvData->TargetUrl[Field->Len + 1] = '\0';\r
   } else {\r
+    ConfigNvData->DnsMode = FALSE;\r
     ZeroMem(ConfigNvData->TargetUrl, sizeof (ConfigNvData->TargetUrl));\r
     Status = IScsiAsciiStrToIp (Field->Str, IpMode, &Ip);\r
     CopyMem (&ConfigNvData->TargetIp, &Ip, sizeof (EFI_IP_ADDRESS));\r
@@ -200,14 +201,14 @@ ON_EXIT:
 /**\r
   The callback function registerd to the DHCP4 instance that is used to select\r
   the qualified DHCP OFFER.\r
-  \r
+\r
   @param[in]  This         The DHCP4 protocol.\r
   @param[in]  Context      The context set when configuring the DHCP4 protocol.\r
   @param[in]  CurrentState The current state of the DHCP4 protocol.\r
   @param[in]  Dhcp4Event   The event occurs in the current state.\r
-  @param[in]  Packet       The DHCP packet that is to be sent or was already received. \r
+  @param[in]  Packet       The DHCP packet that is to be sent or was already received.\r
   @param[out] NewPacket    The packet used to replace the above Packet.\r
-  \r
+\r
   @retval EFI_SUCCESS      Either the DHCP OFFER is qualified or we're not intereseted\r
                            in the Dhcp4Event.\r
   @retval EFI_NOT_READY    The DHCP OFFER packet doesn't match our requirements.\r
@@ -266,7 +267,7 @@ IScsiDhcpSelectOffer (
     break;\r
   }\r
 \r
-  if ((Index == OptionCount)) {\r
+  if (Index == OptionCount) {\r
     Status = EFI_NOT_READY;\r
   }\r
 \r
@@ -410,7 +411,7 @@ IScsiSetIp4Policy (
                           );\r
     if (EFI_ERROR (Status)) {\r
       return Status;\r
-    } \r
+    }\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -443,7 +444,7 @@ IScsiDoDhcp (
   EFI_DHCP4_PACKET_OPTION       *ParaList;\r
   EFI_DHCP4_CONFIG_DATA         Dhcp4ConfigData;\r
   ISCSI_SESSION_CONFIG_NVDATA   *NvData;\r
-  BOOLEAN                       MediaPresent;\r
+  EFI_STATUS                    MediaStatus;\r
 \r
   Dhcp4Handle = NULL;\r
   Ip4Config2  = NULL;\r
@@ -453,17 +454,18 @@ IScsiDoDhcp (
   //\r
   // Check media status before doing DHCP.\r
   //\r
-  MediaPresent = TRUE;\r
-  NetLibDetectMedia (Controller, &MediaPresent);\r
-  if (!MediaPresent) {\r
+  MediaStatus = EFI_SUCCESS;\r
+  NetLibDetectMediaWaitTimeout (Controller, ISCSI_CHECK_MEDIA_GET_DHCP_WAITING_TIME, &MediaStatus);\r
+  if (MediaStatus!= EFI_SUCCESS) {\r
+    AsciiPrint ("\n  Error: Could not detect network connection.\n");\r
     return EFI_NO_MEDIA;\r
   }\r
 \r
   //\r
-  // DHCP4 service allows only one of its children to be configured in  \r
-  // the active state, If the DHCP4 D.O.R.A started by IP4 auto  \r
-  // configuration and has not been completed, the Dhcp4 state machine \r
-  // will not be in the right state for the iSCSI to start a new round D.O.R.A. \r
+  // DHCP4 service allows only one of its children to be configured in\r
+  // the active state, If the DHCP4 D.O.R.A started by IP4 auto\r
+  // configuration and has not been completed, the Dhcp4 state machine\r
+  // will not be in the right state for the iSCSI to start a new round D.O.R.A.\r
   // So, we need to switch it's policy to static.\r
   //\r
   Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **) &Ip4Config2);\r