Пример #1
0
VOID
MultiPortFreeCloneRfd(
	PADAPTER	pAdapter
)
{
	PRT_RFD pRfd = NULL;
	PMULTIPORT_COMMON_CONTEXT pMultiPortCommon = MultiPortGetCommonContext(pAdapter);

	RT_TRACE(COMP_INIT, DBG_LOUD, ("\n==== MultiPort Clone RFD Status ====\n"));
	RT_TRACE(COMP_INIT, DBG_LOUD, ("Clone RFD Allocated: %d\n", pMultiPortCommon->uNumberOfCloneRfds));
	RT_TRACE(COMP_INIT, DBG_LOUD, ("Clone RFD Freed: %d\n", pMultiPortCommon->uCloneRfdIdleQueueSize));
	RT_ASSERT(pMultiPortCommon->uCloneRfdBusyQueueSize == 0, ("No Busy Clone RFD when in free status !!"));
	RT_ASSERT(pMultiPortCommon->uNumberOfCloneRfds ==pMultiPortCommon->uCloneRfdIdleQueueSize, ("Freed RFD less than allocated!!\n"));	

	RT_TRACE(COMP_INIT, DBG_LOUD, ("====================================\n\n"));

	PlatformAcquireSpinLock(pAdapter, RT_RFD_SPINLOCK);
	while(!RTIsListEmpty(&pMultiPortCommon->CloneRfdIdleQueue))
	{
		pRfd = (PRT_RFD) RTRemoveHeadListWithCnt(&pMultiPortCommon->CloneRfdIdleQueue, &pMultiPortCommon->uCloneRfdIdleQueueSize);
	}
	PlatformReleaseSpinLock(pAdapter, RT_RFD_SPINLOCK);

	PlatformFreeMemory(
			pMultiPortCommon->CloneRfdMemoryBuffer.Buffer, 
			pMultiPortCommon->CloneRfdMemoryBuffer.Length
		);
}
Пример #2
0
VOID
FrameBuf_Free(
	IN  FRAME_BUF				*pBuf
	)
{
	if(TEST_FLAG(pBuf->flags, FRAME_BUF_FLAG_EXTERNAL_BUF))
	{// we are not responsible for external buf
		return;
	}
	
	PlatformFreeMemory(pBuf, sizeof(FRAME_BUF) + pBuf->cap);

	return;
}
Пример #3
0
//
//	Description:
//		Free memory block for driver log mechansim. 
//
//	Assumption:
//		Target address is NOT NULL pointer if it had been allocated sucessfully. 
//
VOID
FreeDrvLogMemory(
	IN	PADAPTER		pAdapter
	)
{
	u4Byte i;
	PVOID pTmp;
	u4Byte Size;

	if(GET_DRV_LOG_POOLS_HANDLE(pAdapter) == NULL)
	{
		RT_TRACE(COMP_INIT, DBG_LOUD, ("FreeDrvLogMemory(): DRV_LOG_POOLS_HANDLE is NULL!\n"));
		return;
	}

	//
	// Free DRV_LOG_POOL_T objects.
	//
	for(i = 0; i < (u4Byte)LTYPE_TOTAL_COUNT; i++)
	{
		pTmp = (PVOID)GET_DRV_LOG_POOL(pAdapter, i);
		if(pTmp != NULL)
		{
			Size = sizeof(DRV_LOG_POOL_T) + ( sizeof(DRV_LOG_DATA_IMP_T) << g_LogTypes[i].MaxLogCountPwr); 
			RT_TRACE(COMP_INIT, DBG_LOUD, ("FreeDrvLogMemory(): free %p, log pool %d.\n", pTmp, i));
			PlatformFreeMemory(pTmp, Size);
		}
	}

	//
	// Free memory block to store pointers to DRV_LOG_POOL_T objects.
	//
	Size = LTYPE_TOTAL_COUNT * sizeof(PVOID);
	RT_TRACE(COMP_INIT, DBG_LOUD, ("FreeDrvLogMemory(): free DRV_LOG_POOLS_HANDLE: %p\n", GET_DRV_LOG_POOLS_HANDLE(pAdapter)));
	PlatformFreeMemory(GET_DRV_LOG_POOLS_HANDLE(pAdapter), Size);
	SET_DRV_LOG_POOLS_HANDLE(pAdapter, NULL);
}
Пример #4
0
// length could be ignored, used to detect memory leakage.
VOID
ODM_FreeMemory(	
	IN 	PDM_ODM_T	pDM_Odm,
	OUT	PVOID		pPtr,
	IN	u4Byte		length
	)
{
#if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
	kfree(pPtr);
#elif (DM_ODM_SUPPORT_TYPE & ODM_CE )	
	rtw_vmfree(pPtr, length);
#elif(DM_ODM_SUPPORT_TYPE & ODM_MP)
	//PADAPTER    Adapter = pDM_Odm->Adapter;
	PlatformFreeMemory(pPtr, length);
#endif	
}
// length could be ignored, used to detect memory leakage.
void
ODM_FreeMemory(
	PDM_ODM_T	pDM_Odm,
	void *		pPtr,
	u32		length
	)
{
#if(DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
	kfree(pPtr);
#elif (DM_ODM_SUPPORT_TYPE & ODM_CE )
	rtw_vmfree(pPtr, length);
#elif(DM_ODM_SUPPORT_TYPE & ODM_MP)
	//struct rtw_adapter *   Adapter = pDM_Odm->Adapter;
	PlatformFreeMemory(pPtr, length);
#endif
}
Пример #6
0
VOID
MultiPortReleaseCloneRfdBuffer(
	PRT_RFD pRfd
)
{

	// Correctness Checking --------------------------------------
	RT_ASSERT(
			pRfd->mbCloneRfdDataBuffer.Length != 0 && 
			pRfd->mbCloneRfdDataBuffer.Buffer != NULL, 
			("DrvIFDisassociateRFD: Wrong Parameters Observed!\n")
		);

	RT_ASSERT(
			pRfd->bFeedPacketToSingleAdapter == FALSE, 
			("Error: Clone RFD in use should not be returned!\n")
		);

	// Free the non-shared memory --------------------------------
	PlatformFreeMemory(
			pRfd->mbCloneRfdDataBuffer.Buffer, 
			pRfd->mbCloneRfdDataBuffer.Length
		);
}