mirror of
https://github.com/reactos/reactos.git
synced 2025-06-15 17:18:31 +00:00
Multiple interrupt status bits can be active at the same time, process them
all instead of just one and ignoring the rest. On an active network card, this would eventually cause all transmit buffers to be marked "in use", blocking all transmits. Sinds no TCP acks would go out, it would block TCP receives too. svn path=/trunk/; revision=20043
This commit is contained in:
parent
22da8ae308
commit
c20dd5efa7
1 changed files with 6 additions and 7 deletions
|
@ -87,11 +87,11 @@ MiniportHandleInterrupt(
|
|||
if (Data & CSR0_CERR)
|
||||
Adapter->Statistics.XmtCollisions++;
|
||||
}
|
||||
else if(Data & CSR0_IDON)
|
||||
if(Data & CSR0_IDON)
|
||||
{
|
||||
DPRINT("IDON\n");
|
||||
}
|
||||
else if(Data & CSR0_RINT)
|
||||
if(Data & CSR0_RINT)
|
||||
{
|
||||
DPRINT("receive interrupt\n");
|
||||
|
||||
|
@ -147,7 +147,7 @@ MiniportHandleInterrupt(
|
|||
Adapter->Statistics.RcvGoodFrames++;
|
||||
}
|
||||
}
|
||||
else if(Data & CSR0_TINT)
|
||||
if(Data & CSR0_TINT)
|
||||
{
|
||||
PTRANSMIT_DESCRIPTOR Descriptor;
|
||||
|
||||
|
@ -201,10 +201,9 @@ MiniportHandleInterrupt(
|
|||
}
|
||||
NdisMSendResourcesAvailable(Adapter->MiniportAdapterHandle);
|
||||
}
|
||||
else
|
||||
if(Data & ~(CSR0_ERR | CSR0_IDON | CSR0_RINT | CSR0_TINT))
|
||||
{
|
||||
DPRINT1("UNHANDLED INTERRUPT\n");
|
||||
ASSERT(FALSE);
|
||||
DPRINT("UNHANDLED INTERRUPT CSR0 0x%x\n", Data);
|
||||
}
|
||||
|
||||
NdisRawReadPortUshort(Adapter->PortOffset + RDP, &Data);
|
||||
|
@ -1081,7 +1080,7 @@ MiniportSend(
|
|||
(Adapter->CurrentTransmitEndIndex == NUMBER_OF_BUFFERS - 1 &&
|
||||
Adapter->CurrentTransmitStartIndex == 0))
|
||||
{
|
||||
DPRINT("No free space in circular buffer\n");
|
||||
DPRINT1("No free space in circular buffer\n");
|
||||
NdisDprReleaseSpinLock(&Adapter->Lock);
|
||||
return NDIS_STATUS_RESOURCES;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue