summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.c1
-rw-r--r--MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c17
2 files changed, 13 insertions, 5 deletions
diff --git a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.c b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.c
index 821dfbb450..4f491b4bba 100644
--- a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.c
+++ b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.c
@@ -1494,7 +1494,6 @@ EfiDhcp4TransmitReceive (
Instance = DHCP_INSTANCE_FROM_THIS (This);
DhcpSb = Instance->Service;
- DhcpSb->ActiveChild = Instance;
if (Instance->Token != NULL) {
//
diff --git a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c
index 995bbcf840..4bc991557a 100644
--- a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c
+++ b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Io.c
@@ -1518,6 +1518,8 @@ DhcpOnTimerTick (
IN VOID *Context
)
{
+ LIST_ENTRY *Entry;
+ LIST_ENTRY *Next;
DHCP_SERVICE *DhcpSb;
DHCP_PROTOCOL *Instance;
EFI_STATUS Status;
@@ -1665,10 +1667,17 @@ DhcpOnTimerTick (
}
ON_EXIT:
- if ((Instance != NULL) && (Instance->Token != NULL)) {
- Instance->Timeout--;
- if (Instance->Timeout == 0) {
- PxeDhcpDone (Instance);
+ //
+ // Iterate through all the DhcpSb Children.
+ //
+ NET_LIST_FOR_EACH_SAFE (Entry, Next, &DhcpSb->Children) {
+ Instance = NET_LIST_USER_STRUCT (Entry, DHCP_PROTOCOL, Link);
+
+ if ((Instance != NULL) && (Instance->Token != NULL)) {
+ Instance->Timeout--;
+ if (Instance->Timeout == 0) {
+ PxeDhcpDone (Instance);
+ }
}
}