Author: cgutman
Date: Sun Mar 1 08:11:53 2015
New Revision: 66512
URL:
http://svn.reactos.org/svn/reactos?rev=66512&view=rev
Log:
[NDIS]
- Always call MiniportISR if the interrupt is shared
- Call MiniportHandleInterrupt even if MiniportInitialize is running
- This commit and r66511 fix the Broadcom 57XX NIC (CORE-9295)
Modified:
trunk/reactos/drivers/network/ndis/ndis/io.c
Modified: trunk/reactos/drivers/network/ndis/ndis/io.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/…
==============================================================================
--- trunk/reactos/drivers/network/ndis/ndis/io.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/ndis/ndis/io.c [iso-8859-1] Sun Mar 1 08:11:53 2015
@@ -71,7 +71,7 @@
NDIS_DbgPrint(MAX_TRACE, ("MiniportInitialize executing: %s\n", (Initializing
? "yes" : "no")));
/* MiniportISR is always called for interrupts during MiniportInitialize */
- if ((Initializing) || (NdisInterrupt->IsrRequested)) {
+ if ((Initializing) || (NdisInterrupt->IsrRequested) ||
(NdisInterrupt->SharedInterrupt)) {
NDIS_DbgPrint(MAX_TRACE, ("Calling MiniportISR\n"));
(*NdisMiniportBlock->DriverHandle->MiniportCharacteristics.ISRHandler)(
&InterruptRecognized,
@@ -86,8 +86,9 @@
InterruptRecognized = TRUE;
}
- /* MiniportHandleInterrupt is never called for an interrupt during MiniportInitialize
*/
- if ((QueueMiniportHandleInterrupt) && (!Initializing))
+ /* TODO: Figure out if we should call this or not if Initializing is true. It appears
+ * that calling it fixes some NICs, but documentation is contradictory on it. */
+ if (QueueMiniportHandleInterrupt)
{
NDIS_DbgPrint(MAX_TRACE, ("Queuing DPC.\n"));
KeInsertQueueDpc(&NdisInterrupt->InterruptDpc, NULL, NULL);