From cfaf89f84927ad2beb96c0449bb14248229c88a0 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 23 Apr 2009 20:00:36 +0000 Subject: [PATCH] - Allocate memory for the OOB area also - Set the NdisPacketOobOffset in each packet - Fixes the mysterious packet corruption - Fixes Realtek 8139 and Intel PRO/1000 svn path=/trunk/; revision=40673 --- reactos/drivers/network/ndis/ndis/buffer.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/reactos/drivers/network/ndis/ndis/buffer.c b/reactos/drivers/network/ndis/ndis/buffer.c index dc0ae02b86c..e9775acd311 100644 --- a/reactos/drivers/network/ndis/ndis/buffer.c +++ b/reactos/drivers/network/ndis/ndis/buffer.c @@ -428,6 +428,7 @@ NdisAllocatePacket( Temp->Private.Pool = Pool; Temp->Private.ValidCounts = TRUE; Temp->Private.NdisPacketFlags = fPACKET_ALLOCATED_BY_NDIS; + Temp->Private.NdisPacketOobOffset = Pool->PacketLength - sizeof(NDIS_PACKET_OOB_DATA); *Packet = Temp; *Status = NDIS_STATUS_SUCCESS; @@ -506,7 +507,7 @@ NdisAllocatePacketPoolEx( NumberOfDescriptors = 0xffff; } - Length = sizeof(NDIS_PACKET) + ProtocolReservedLength; + Length = sizeof(NDIS_PACKET) + sizeof(NDIS_PACKET_OOB_DATA) + ProtocolReservedLength; Size = sizeof(NDISI_PACKET_POOL) + Length * NumberOfDescriptors; Pool = ExAllocatePool(NonPagedPool, Size); @@ -711,6 +712,7 @@ NdisDprAllocatePacket( Temp->Private.Pool = Pool; Temp->Private.ValidCounts = TRUE; Temp->Private.NdisPacketFlags = fPACKET_ALLOCATED_BY_NDIS; + Temp->Private.NdisPacketOobOffset = Pool->PacketLength - sizeof(NDIS_PACKET_OOB_DATA); *Packet = Temp; *Status = NDIS_STATUS_SUCCESS; @@ -760,6 +762,7 @@ NdisDprAllocatePacketNonInterlocked( Temp->Private.Pool = Pool; Temp->Private.ValidCounts = TRUE; Temp->Private.NdisPacketFlags = fPACKET_ALLOCATED_BY_NDIS; + Temp->Private.NdisPacketOobOffset = Pool->PacketLength - sizeof(NDIS_PACKET_OOB_DATA); *Packet = Temp; *Status = NDIS_STATUS_SUCCESS;