diff --git a/drivers/network/ndis/ndis/efilter.c b/drivers/network/ndis/ndis/efilter.c index 0cb5cd16f06..e05b3d36b3e 100644 --- a/drivers/network/ndis/ndis/efilter.c +++ b/drivers/network/ndis/ndis/efilter.c @@ -112,7 +112,6 @@ EthFilterDprIndicateReceiveComplete( * Filter = Pointer to Ethernet filter */ { - KIRQL OldIrql; PLIST_ENTRY CurrentEntry; PLOGICAL_ADAPTER Adapter; PADAPTER_BINDING AdapterBinding; @@ -124,7 +123,7 @@ EthFilterDprIndicateReceiveComplete( Adapter = (PLOGICAL_ADAPTER)((PETHI_FILTER)Filter)->Miniport; NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n")); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); { CurrentEntry = Adapter->ProtocolListHead.Flink; @@ -138,7 +137,7 @@ EthFilterDprIndicateReceiveComplete( CurrentEntry = CurrentEntry->Flink; } } - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); } /* EOF */ diff --git a/drivers/network/ndis/ndis/miniport.c b/drivers/network/ndis/ndis/miniport.c index 7c7c942a955..f6449aecf22 100644 --- a/drivers/network/ndis/ndis/miniport.c +++ b/drivers/network/ndis/ndis/miniport.c @@ -767,16 +767,17 @@ VOID NTAPI MiniportDpc( PVOID WorkItemContext; NDIS_WORK_ITEM_TYPE WorkItemType; PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(DeferredContext); - KIRQL OldIrql; NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); NdisStatus = MiniDequeueWorkItem (Adapter, &WorkItemType, &WorkItemContext); + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); + if (NdisStatus == NDIS_STATUS_SUCCESS) { switch (WorkItemType) @@ -869,8 +870,6 @@ VOID NTAPI MiniportDpc( break; } } - - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); } diff --git a/drivers/network/ndis/ndis/protocol.c b/drivers/network/ndis/ndis/protocol.c index 818c5d2a8e8..50c7728dab7 100644 --- a/drivers/network/ndis/ndis/protocol.c +++ b/drivers/network/ndis/ndis/protocol.c @@ -63,7 +63,6 @@ ProIndicatePacket( * - XXX ATM, this only handles loopback packets - is that its designed function? */ { - KIRQL OldIrql; UINT BufferedLength; UINT PacketLength; @@ -76,12 +75,12 @@ ProIndicatePacket( NdisQueryPacket(Packet, NULL, NULL, NULL, &PacketLength); NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n")); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); { Adapter->NdisMiniportBlock.IndicatedPacket[KeGetCurrentProcessorNumber()] = Packet; BufferedLength = CopyPacketToBuffer(Adapter->LookaheadBuffer, Packet, 0, Adapter->NdisMiniportBlock.CurrentLookahead); } - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); if (BufferedLength > Adapter->MediumHeaderSize) { @@ -96,11 +95,11 @@ ProIndicatePacket( } NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n")); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); { Adapter->NdisMiniportBlock.IndicatedPacket[KeGetCurrentProcessorNumber()] = NULL; } - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); return STATUS_SUCCESS; }