diff --git a/drivers/network/tcpip/datalink/lan.c b/drivers/network/tcpip/datalink/lan.c index 32a69ff1009..c82ad0440d0 100644 --- a/drivers/network/tcpip/datalink/lan.c +++ b/drivers/network/tcpip/datalink/lan.c @@ -596,6 +596,7 @@ VOID LANTransmit( PCHAR Data; UINT Size; PLAN_ADAPTER Adapter = (PLAN_ADAPTER)Context; + KIRQL OldIrql; TI_DbgPrint(DEBUG_DATALINK, ("Called( NdisPacket %x, Offset %d, Adapter %x )\n", @@ -672,11 +673,13 @@ VOID LANTransmit( ((PCHAR)LinkAddress)[5] & 0xff)); } + TcpipAcquireSpinLock( &Adapter->Lock, &OldIrql ); TI_DbgPrint(MID_TRACE, ("NdisSend\n")); - NdisSend(&NdisStatus, Adapter->NdisHandle, NdisPacket); + NdisSend(&NdisStatus, Adapter->NdisHandle, NdisPacket); TI_DbgPrint(MID_TRACE, ("NdisSend %s\n", NdisStatus == NDIS_STATUS_PENDING ? "Pending" : "Complete")); + TcpipReleaseSpinLock( &Adapter->Lock, OldIrql ); /* I had a talk with vizzini: these really ought to be here. * we're supposed to see these completed by ndis *only* when diff --git a/lib/drivers/ip/network/neighbor.c b/lib/drivers/ip/network/neighbor.c index cdb9ce02568..0e56c4ce3de 100644 --- a/lib/drivers/ip/network/neighbor.c +++ b/lib/drivers/ip/network/neighbor.c @@ -157,9 +157,7 @@ VOID NBTimeout(VOID) NCE->EventTimer--; if (NCE->EventTimer == 0) { /* Call timeout handler for NCE */ - TcpipReleaseSpinLock(&NeighborCache[i].Lock, OldIrql); NCETimeout(NCE); - TcpipAcquireSpinLock(&NeighborCache[i].Lock, &OldIrql); } } }