diff options
Diffstat (limited to 'MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c')
-rw-r--r-- | MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c | 25 |
1 files changed, 19 insertions, 6 deletions
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 ();
}
|