From 6b949b43eaa4fbe630a9520246e5897ac1b23da0 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Tue, 23 Aug 2005 23:02:35 +0000 Subject: [PATCH] Remove buffer pool implementation and replace buffer allocation with binary compatible functions (since some of them are macroized in DDK headers), other cosmetic changes. svn path=/trunk/; revision=17491 --- reactos/drivers/net/ndis/ndis/50gone.c | 4 +- reactos/drivers/net/ndis/ndis/buffer.c | 103 +++-------------------- reactos/drivers/net/ndis/ndis/miniport.c | 2 +- 3 files changed, 16 insertions(+), 93 deletions(-) diff --git a/reactos/drivers/net/ndis/ndis/50gone.c b/reactos/drivers/net/ndis/ndis/50gone.c index e8e3eaec2a6..9d041f769a4 100644 --- a/reactos/drivers/net/ndis/ndis/50gone.c +++ b/reactos/drivers/net/ndis/ndis/50gone.c @@ -385,7 +385,7 @@ NdisSetupDmaTransfer( /* - * @unimplemented + * @implemented */ #undef NdisUpdateSharedMemory VOID @@ -402,7 +402,7 @@ NdisUpdateSharedMemory( * NDIS 4.0 */ { - UNIMPLEMENTED + /* No-op. */ } /* EOF */ diff --git a/reactos/drivers/net/ndis/ndis/buffer.c b/reactos/drivers/net/ndis/ndis/buffer.c index d3f5ffdec3c..6a616be4a61 100644 --- a/reactos/drivers/net/ndis/ndis/buffer.c +++ b/reactos/drivers/net/ndis/ndis/buffer.c @@ -348,49 +348,16 @@ NdisAllocateBuffer( * 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 @@ NdisAllocateBufferPool( * 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 @@ NdisBufferLength( * Length of NDIS buffer */ { - return Buffer->ByteCount; + return MmGetMdlByteCount(Buffer); } /* - * @unimplemented + * @implemented */ #undef NdisBufferVirtualAddress PVOID @@ -635,9 +572,7 @@ NdisBufferVirtualAddress( * NDIS 5.0 */ { - UNIMPLEMENTED - - return NULL; + return MmGetSystemAddressForMdl(Buffer); } @@ -839,7 +774,6 @@ NdisFreeBufferPool( * PoolHandle = Handle returned by NdisAllocateBufferPool */ { - ExFreePool((PVOID)PoolHandle); } @@ -874,18 +808,7 @@ NdisFreeBuffer( * 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); } diff --git a/reactos/drivers/net/ndis/ndis/miniport.c b/reactos/drivers/net/ndis/ndis/miniport.c index 5ab7bfafc28..278bd145ef4 100644 --- a/reactos/drivers/net/ndis/ndis/miniport.c +++ b/reactos/drivers/net/ndis/ndis/miniport.c @@ -789,10 +789,10 @@ MiniDoRequest( } -#undef NdisMQueryInformationComplete /* * @implemented */ +#undef NdisMQueryInformationComplete VOID EXPORT NdisMQueryInformationComplete( -- 2.17.1