- Don't attempt to store packets and buffers in the same place

svn path=/trunk/; revision=40643
This commit is contained in:
Cameron Gutman 2009-04-22 03:27:33 +00:00
parent 6964f7b809
commit c218692561
3 changed files with 11 additions and 11 deletions

View file

@ -420,7 +420,7 @@ NdisAllocatePacket(
if (Pool->FreeList) { if (Pool->FreeList) {
Temp = Pool->FreeList; Temp = Pool->FreeList;
Pool->FreeList = (PNDIS_PACKET)Temp->Private.Head; Pool->FreeList = (PNDIS_PACKET)Temp->Reserved[0];
KeReleaseSpinLock(&Pool->SpinLock.SpinLock, OldIrql); KeReleaseSpinLock(&Pool->SpinLock.SpinLock, OldIrql);
@ -521,11 +521,11 @@ NdisAllocatePacketPoolEx(
NextPacket = (PNDIS_PACKET)((ULONG_PTR)Packet + Length); NextPacket = (PNDIS_PACKET)((ULONG_PTR)Packet + Length);
for (i = 1; i < NumberOfDescriptors; i++) for (i = 1; i < NumberOfDescriptors; i++)
{ {
Packet->Private.Head = (PNDIS_BUFFER)NextPacket; Packet->Reserved[0] = (ULONG_PTR)NextPacket;
Packet = NextPacket; Packet = NextPacket;
NextPacket = (PNDIS_PACKET)((ULONG_PTR)Packet + Length); NextPacket = (PNDIS_PACKET)((ULONG_PTR)Packet + Length);
} }
Packet->Private.Head = NULL; Packet->Reserved[0] = 0;
} }
else else
Pool->FreeList = NULL; Pool->FreeList = NULL;
@ -701,7 +701,7 @@ NdisDprAllocatePacket(
if (Pool->FreeList) { if (Pool->FreeList) {
Temp = Pool->FreeList; Temp = Pool->FreeList;
Pool->FreeList = (PNDIS_PACKET)Temp->Private.Head; Pool->FreeList = (PNDIS_PACKET)Temp->Reserved[0];
KeReleaseSpinLockFromDpcLevel(&Pool->SpinLock.SpinLock); KeReleaseSpinLockFromDpcLevel(&Pool->SpinLock.SpinLock);
@ -750,7 +750,7 @@ NdisDprAllocatePacketNonInterlocked(
if (Pool->FreeList) { if (Pool->FreeList) {
Temp = Pool->FreeList; Temp = Pool->FreeList;
Pool->FreeList = (PNDIS_PACKET)Temp->Private.Head; Pool->FreeList = (PNDIS_PACKET)Temp->Reserved[0];
RtlZeroMemory(&Temp->Private, sizeof(NDIS_PACKET_PRIVATE)); RtlZeroMemory(&Temp->Private, sizeof(NDIS_PACKET_PRIVATE));
Temp->Private.Pool = Pool; Temp->Private.Pool = Pool;
@ -779,7 +779,7 @@ NdisDprFreePacket(
NDIS_DbgPrint(MAX_TRACE, ("Packet (0x%X).\n", Packet)); NDIS_DbgPrint(MAX_TRACE, ("Packet (0x%X).\n", Packet));
KeAcquireSpinLockAtDpcLevel(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock); KeAcquireSpinLockAtDpcLevel(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock);
Packet->Private.Head = (PNDIS_BUFFER)((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList; Packet->Reserved[0] = (ULONG_PTR)((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList;
((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList = Packet; ((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList = Packet;
KeReleaseSpinLockFromDpcLevel(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock); KeReleaseSpinLockFromDpcLevel(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock);
} }
@ -800,7 +800,7 @@ NdisDprFreePacketNonInterlocked(
{ {
NDIS_DbgPrint(MAX_TRACE, ("Packet (0x%X).\n", Packet)); NDIS_DbgPrint(MAX_TRACE, ("Packet (0x%X).\n", Packet));
Packet->Private.Head = (PNDIS_BUFFER)((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList; Packet->Reserved[0] = (ULONG_PTR)((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList;
((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList = Packet; ((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList = Packet;
} }
@ -874,7 +874,7 @@ NdisFreePacket(
NDIS_DbgPrint(MAX_TRACE, ("Packet (0x%X).\n", Packet)); NDIS_DbgPrint(MAX_TRACE, ("Packet (0x%X).\n", Packet));
KeAcquireSpinLock(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock, &OldIrql); KeAcquireSpinLock(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock, &OldIrql);
Packet->Private.Head = (PNDIS_BUFFER)((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList; Packet->Reserved[0] = (ULONG_PTR)((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList;
((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList = Packet; ((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList = Packet;
KeReleaseSpinLock(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock, OldIrql); KeReleaseSpinLock(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock, OldIrql);
} }

View file

@ -457,7 +457,7 @@ MiniSendComplete(
NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n"));
AdapterBinding = (PADAPTER_BINDING)Packet->Reserved[0]; AdapterBinding = (PADAPTER_BINDING)Packet->Reserved[1];
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
(*AdapterBinding->ProtocolBinding->Chars.SendCompleteHandler)( (*AdapterBinding->ProtocolBinding->Chars.SendCompleteHandler)(
@ -490,7 +490,7 @@ MiniTransferDataComplete(
NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n"));
AdapterBinding = (PADAPTER_BINDING)Packet->Reserved[0]; AdapterBinding = (PADAPTER_BINDING)Packet->Reserved[1];
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
(*AdapterBinding->ProtocolBinding->Chars.TransferDataCompleteHandler)( (*AdapterBinding->ProtocolBinding->Chars.TransferDataCompleteHandler)(

View file

@ -279,7 +279,7 @@ ProSend(
ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL); ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
/* XXX what is this crazy black magic? */ /* XXX what is this crazy black magic? */
Packet->Reserved[0] = (ULONG_PTR)MacBindingHandle; Packet->Reserved[1] = (ULONG_PTR)MacBindingHandle;
/* /*
* Test the packet to see if it is a MAC loopback. * Test the packet to see if it is a MAC loopback.