- MiniSendComplete acquires the adapter lock so release the lock before calling it

svn path=/trunk/; revision=40447
This commit is contained in:
Cameron Gutman 2009-04-10 20:04:08 +00:00
parent ba9ee79954
commit 81edca312f

View file

@ -349,15 +349,15 @@ ProSendPackets(
else else
{ {
/* Send is called at DISPATCH_LEVEL for all serialized miniports */ /* Send is called at DISPATCH_LEVEL for all serialized miniports */
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &RaiseOldIrql);
for (i = 0; i < NumberOfPackets; i++) for (i = 0; i < NumberOfPackets; i++)
{ {
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &RaiseOldIrql);
NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)( NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)(
Adapter->NdisMiniportBlock.MiniportAdapterContext, PacketArray[i], PacketArray[i]->Private.Flags); Adapter->NdisMiniportBlock.MiniportAdapterContext, PacketArray[i], PacketArray[i]->Private.Flags);
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, RaiseOldIrql);
if (NdisStatus != NDIS_STATUS_PENDING) if (NdisStatus != NDIS_STATUS_PENDING)
MiniSendComplete(Adapter, PacketArray[i], NdisStatus); MiniSendComplete(Adapter, PacketArray[i], NdisStatus);
} }
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, RaiseOldIrql);
} }
} }
} }