X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FNetwork%2FMnpDxe%2FMnpIo.c;h=ed8bf78282d6d5f0ae49cdc2dcb5999aa5dd849a;hp=3d26ec2a4c8f763c7ec64281c02ffcf1f32ebfce;hb=36ee91ca3661d3d020a7841aacbf858d885c4728;hpb=04e12c21476db29e8f92030ed00122fa4e1e56cc diff --git a/MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c b/MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c index 3d26ec2a4c..ed8bf78282 100644 --- a/MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c +++ b/MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c @@ -294,6 +294,11 @@ SIGNAL_TOKEN: Token->Status = Status; gBS->SignalEvent (Token->Event); + // + // Dispatch the DPC queued by the NotifyFunction of Token->Event. + // + NetLibDispatchDpc (); + return EFI_SUCCESS; } @@ -562,12 +567,6 @@ MnpMatchPacket ( ConfigData = &Instance->ConfigData; - if (ConfigData->EnablePromiscuousReceive) { - // - // Always match if this instance is configured to be promiscuous. - // - return TRUE; - } // // Check the protocol type. // @@ -575,6 +574,13 @@ MnpMatchPacket ( return FALSE; } + if (ConfigData->EnablePromiscuousReceive) { + // + // Always match if this instance is configured to be promiscuous. + // + return TRUE; + } + // // The protocol type is matched, check receive filter, include unicast and broadcast. // @@ -987,6 +993,11 @@ MnpReceivePacket ( // MnpDeliverPacket (MnpServiceData); + // + // Dispatch the DPC queued by the NotifyFunction of rx token's events. + // + NetLibDispatchDpc (); + EXIT: ASSERT (Nbuf->TotalSize == MnpServiceData->BufferLength); @@ -1087,4 +1098,6 @@ MnpSystemPoll ( // Try to receive packets from Snp. // MnpReceivePacket (MnpServiceData); + + NetLibDispatchDpc (); }