mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
MdeModulePkg: Remove TransmitReceive() and ActiveChild dependency
Fix git 59a8cfd4 (SVN r17869) removes DHCP4.TransmitReceive()and DORA process dependency, but it updated TransmitReceive() to take the ownership of DhcpSb->ActiveChild but never release it. This will break the retransmit and lease time out counter of DORA. To fix that, TransmitReceive() doesn't need to be the ActiveChild, and the timer routine should be updated to handle the TransmitReceive specially. Cc: Fu Siyuan <siyuan.fu@intel.com> Cc: Ye Ting <ting.ye@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18048 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
2cec9ccde7
commit
48bd653033
@ -1494,7 +1494,6 @@ EfiDhcp4TransmitReceive (
|
||||
|
||||
Instance = DHCP_INSTANCE_FROM_THIS (This);
|
||||
DhcpSb = Instance->Service;
|
||||
DhcpSb->ActiveChild = Instance;
|
||||
|
||||
if (Instance->Token != NULL) {
|
||||
//
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user