Revision: 18049
          http://sourceforge.net/p/edk2/code/18049
Author:   jljusten
Date:     2015-07-26 08:03:25 +0000 (Sun, 26 Jul 2015)
Log Message:
-----------
NetworkPkg: Fix the issue EfiPxeBcDhcp() may return wrong status.

if the instance of the EFI DHCP4 protocol driver is in the Dhcp4Bound status
that is DHCP configuration has completed, so the Dhcp4->Start FUNC in
the PxeBcDhcpDora() will return EFI_ALREADY_STARTED status which lead to
EfiPxeBcDhcp FUNC not in correspondence with UEFI spec.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zhang Lubo <[email protected]>
Reviewed-by: Jiaxin Wu <[email protected]>
Reviewed-by: Fu Siyuan <[email protected]>
Reviewed-by: Ye Ting <[email protected]>
[[email protected]: updated copyright year as requested by Siyuan]
Signed-off-by: Laszlo Ersek <[email protected]>

Modified Paths:
--------------
    trunk/edk2/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c

Modified: trunk/edk2/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c
===================================================================
--- trunk/edk2/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c     2015-07-26 08:03:20 UTC 
(rev 18048)
+++ trunk/edk2/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c     2015-07-26 08:03:25 UTC 
(rev 18049)
@@ -1,7 +1,7 @@
 /** @file
   Functions implementation related with DHCPv4 for UefiPxeBc Driver.
 
-  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2009 - 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
@@ -1569,10 +1569,12 @@
   ZeroMem (Private->OfferIndex, sizeof (Private->OfferIndex));
 
   //
-  // Start DHCPv4 D.O.R.A. process to acquire IPv4 address.
+  // Start DHCPv4 D.O.R.A. process to acquire IPv4 address. This may 
+  // have already been done, thus do not leave in error if the return
+  // code is EFI_ALREADY_STARTED.
   //
   Status = Dhcp4->Start (Dhcp4, NULL);
-  if (EFI_ERROR (Status)) {
+  if (EFI_ERROR (Status) && Status != EFI_ALREADY_STARTED) {
     if (Status == EFI_ICMP_ERROR) {
       PxeMode->IcmpErrorReceived = TRUE;
     }


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to