- MiniSendComplete acquires the adapter lock so release the lock before calling it
authorCameron Gutman <aicommander@gmail.com>
Fri, 10 Apr 2009 20:04:08 +0000 (20:04 +0000)
committerCameron Gutman <aicommander@gmail.com>
Fri, 10 Apr 2009 20:04:08 +0000 (20:04 +0000)
svn path=/trunk/; revision=40447

reactos/drivers/network/ndis/ndis/protocol.c

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