Author: cgutman
Date: Fri Apr 24 00:00:36 2009
New Revision: 40673

URL: http://svn.reactos.org/svn/reactos?rev=40673&view=rev
Log:
 - 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

Modified:
    trunk/reactos/drivers/network/ndis/ndis/buffer.c

Modified: trunk/reactos/drivers/network/ndis/ndis/buffer.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/buffer.c?rev=40673&r1=40672&r2=40673&view=diff
==============================================================================
--- trunk/reactos/drivers/network/ndis/ndis/buffer.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/ndis/ndis/buffer.c [iso-8859-1] Fri Apr 24 
00:00:36 2009
@@ -428,6 +428,7 @@
         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 @@
             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 @@
         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 @@
         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;

Reply via email to