[ros-diffs] [navaraf] 17491: Remove buffer pool implementation and replace buffer allocation with binary compatible functions (since some of them are macroized in DDK headers), other cosmetic changes.

navaraf at svn.reactos.com navaraf at svn.reactos.com
Wed Aug 24 01:02:39 CEST 2005


Remove buffer pool implementation and replace buffer allocation with
binary compatible functions (since some of them are macroized in DDK
headers), other cosmetic changes.
Modified: trunk/reactos/drivers/net/ndis/ndis/50gone.c
Modified: trunk/reactos/drivers/net/ndis/ndis/buffer.c
Modified: trunk/reactos/drivers/net/ndis/ndis/miniport.c
  _____  

Modified: trunk/reactos/drivers/net/ndis/ndis/50gone.c
--- trunk/reactos/drivers/net/ndis/ndis/50gone.c	2005-08-23
22:25:35 UTC (rev 17490)
+++ trunk/reactos/drivers/net/ndis/ndis/50gone.c	2005-08-23
23:02:35 UTC (rev 17491)
@@ -385,7 +385,7 @@

 
 
 /*
- * @unimplemented
+ * @implemented
  */
 #undef NdisUpdateSharedMemory
 VOID
@@ -402,7 +402,7 @@
  *    NDIS 4.0
  */
 {
-    UNIMPLEMENTED
+    /* No-op. */
 }
 
 /* EOF */
  _____  

Modified: trunk/reactos/drivers/net/ndis/ndis/buffer.c
--- trunk/reactos/drivers/net/ndis/ndis/buffer.c	2005-08-23
22:25:35 UTC (rev 17490)
+++ trunk/reactos/drivers/net/ndis/ndis/buffer.c	2005-08-23
23:02:35 UTC (rev 17491)
@@ -348,49 +348,16 @@

  *     Length         = Number of bytes in data buffer
  */
 {
-    KIRQL OldIrql;
-    PNETWORK_HEADER Temp;
-    PNDIS_BUFFER_POOL Pool = (PNDIS_BUFFER_POOL)PoolHandle;
-
-    NDIS_DbgPrint(MAX_TRACE, ("Status (0x%X)  Buffer (0x%X)  PoolHandle
(0x%X)  "
-        "VirtualAddress (0x%X)  Length (%d)\n",
-        Status, Buffer, PoolHandle, VirtualAddress, Length));
-
-#if 0
-    Temp = Pool->FreeList;
-    while( Temp ) {
-	NDIS_DbgPrint(MID_TRACE,("Free buffer -> %x\n", Temp));
-	Temp = Temp->Next;
-    }
-
-    NDIS_DbgPrint(MID_TRACE,("|:. <- End free buffers"));
-#endif
-
-    if(!VirtualAddress && !Length) return;
-
-    KeAcquireSpinLock(&Pool->SpinLock, &OldIrql);
-
-    if (Pool->FreeList) {
-        Temp           = Pool->FreeList;
-        Pool->FreeList = Temp->Next;
-
-        KeReleaseSpinLock(&Pool->SpinLock, OldIrql);
-
-        Temp->Next = NULL;
-
-        MmInitializeMdl(&Temp->Mdl, VirtualAddress, Length);
-        Temp->Mdl.MdlFlags      |= (MDL_SOURCE_IS_NONPAGED_POOL |
MDL_ALLOCATED_FIXED_SIZE);
-        Temp->Mdl.MappedSystemVa = VirtualAddress;
-
-        Temp->BufferPool = Pool;
-
-        *Buffer = (PNDIS_BUFFER)Temp;
+    ASSERT(VirtualAddress != NULL);
+    ASSERT(Length > 0);
+    
+    *Buffer = IoAllocateMdl(VirtualAddress, Length, FALSE, FALSE,
NULL);
+    if (*Buffer != NULL) {
+        MmBuildMdlForNonPagedPool(*Buffer);
+        (*Buffer)->Next = NULL;
         *Status = NDIS_STATUS_SUCCESS;
     } else {
-        KeReleaseSpinLock(&Pool->SpinLock, OldIrql);
         *Status = NDIS_STATUS_FAILURE;
-	NDIS_DbgPrint(MID_TRACE, ("Can't get another packet.\n"));
-	KeBugCheck(0);
     }
 }
 
@@ -412,38 +379,8 @@
  *     NumberOfDescriptors = Size of buffer pool in number of
descriptors
  */
 {
-    UINT i;
-    PNDIS_BUFFER_POOL Pool;
-    PNETWORK_HEADER Buffer;
-
-    NDIS_DbgPrint(MAX_TRACE, ("Status (0x%X)  PoolHandle (0x%X)
NumberOfDescriptors (%d).\n",
-        Status, PoolHandle, NumberOfDescriptors));
-
-    Pool = ExAllocatePool(NonPagedPool,
-                          sizeof(NDIS_BUFFER_POOL) +
-                          sizeof(NETWORK_HEADER)   *
-                          NumberOfDescriptors);
-    if (Pool) {
-        KeInitializeSpinLock(&Pool->SpinLock);
-
-        if (NumberOfDescriptors > 0) {
-            Buffer             = &Pool->Buffers[0];
-	    NDIS_DbgPrint(MAX_TRACE, ("NDIS BUFFER ADDRESS << %x >>\n",
Buffer));
-            Pool->FreeList     = Buffer;
-            for (i = 1; i < NumberOfDescriptors; i++) {
-                Buffer->Next = &Pool->Buffers[i];
-                Buffer       = Buffer->Next;
-		NDIS_DbgPrint(MAX_TRACE, ("NDIS BUFFER ADDRESS << %x
>>\n",
-		              Buffer));
-            }
-            Buffer->Next = NULL;
-        } else
-            Pool->FreeList = NULL;
-
-        *Status     = NDIS_STATUS_SUCCESS;
-        *PoolHandle = (PNDIS_HANDLE)Pool;
-    } else
-        *Status = NDIS_STATUS_RESOURCES;
+    *Status = NDIS_STATUS_SUCCESS;
+    *PoolHandle = 0;
 }
 
 
@@ -616,12 +553,12 @@
  *     Length of NDIS buffer
  */
 {
-    return Buffer->ByteCount;
+    return MmGetMdlByteCount(Buffer);
 }
 
 
 /*
- * @unimplemented
+ * @implemented
  */
 #undef NdisBufferVirtualAddress
 PVOID
@@ -635,9 +572,7 @@
  *    NDIS 5.0
  */
 {
-    UNIMPLEMENTED
-
-    return NULL;
+    return MmGetSystemAddressForMdl(Buffer);
 }
 
 
@@ -839,7 +774,6 @@
  *     PoolHandle = Handle returned by NdisAllocateBufferPool
  */
 {
-    ExFreePool((PVOID)PoolHandle);
 }
 
 
@@ -874,18 +808,7 @@
  *     Buffer = Pointer to buffer descriptor
  */
 {
-    KIRQL OldIrql;
-    PNDIS_BUFFER_POOL Pool;
-    PNETWORK_HEADER Temp = (PNETWORK_HEADER)Buffer;
-
-    NDIS_DbgPrint(MAX_TRACE, ("Buffer (0x%X).\n", Buffer));
-
-    Pool = Temp->BufferPool;
-
-    KeAcquireSpinLock(&Pool->SpinLock, &OldIrql);
-    Temp->Next     = (PNETWORK_HEADER)Pool->FreeList;
-    Pool->FreeList = (PNETWORK_HEADER)Temp;
-    KeReleaseSpinLock(&Pool->SpinLock, OldIrql);
+    IoFreeMdl(Buffer);
 }
 
 
  _____  

Modified: trunk/reactos/drivers/net/ndis/ndis/miniport.c
--- trunk/reactos/drivers/net/ndis/ndis/miniport.c	2005-08-23
22:25:35 UTC (rev 17490)
+++ trunk/reactos/drivers/net/ndis/ndis/miniport.c	2005-08-23
23:02:35 UTC (rev 17491)
@@ -789,10 +789,10 @@

 }
 
 
-#undef NdisMQueryInformationComplete
 /*
  * @implemented
  */
+#undef NdisMQueryInformationComplete
 VOID
 EXPORT
 NdisMQueryInformationComplete(
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20050824/54dbfd8c/attachment.html


More information about the Ros-diffs mailing list