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/i... ============================================================================== --- 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);