summaryrefslogtreecommitdiffstats
path: root/NetworkPkg/UefiPxeBcDxe
diff options
context:
space:
mode:
authorZhang Lubo <lubo.zhang@intel.com>2015-07-26 08:03:25 +0000
committerjljusten <jljusten@Edk2>2015-07-26 08:03:25 +0000
commit61047329990eb414657ab85c38d028b37eb576c4 (patch)
tree1ad051a2a297a2a2f6efc38f74cff01c3b7e1ebe /NetworkPkg/UefiPxeBcDxe
parent48bd653033b44046ff022047f2bb153adf080dea (diff)
downloadedk2-61047329990eb414657ab85c38d028b37eb576c4.tar.gz
edk2-61047329990eb414657ab85c38d028b37eb576c4.tar.bz2
edk2-61047329990eb414657ab85c38d028b37eb576c4.zip
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 <lubo.zhang@intel.com> Reviewed-by: Jiaxin Wu <jiaxin.wu@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> [lersek@redhat.com: updated copyright year as requested by Siyuan] Signed-off-by: Laszlo Ersek <lersek@redhat.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18049 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'NetworkPkg/UefiPxeBcDxe')
-rw-r--r--NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c
index df171598b1..c0277706f2 100644
--- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c
+++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c
@@ -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 @@ PxeBcDhcp4Dora (
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;
}