VOS_VOID TTF_MemRbShowMntnInfo( VOS_VOID ) { vos_printf("===========================================\n" ); vos_printf("TTF MEM RB 可维可测信息 :\n" ); vos_printf("C2A 核间释放队列中节点个数 : %d \n", (VOS_INT32)LUP_QueCnt(g_pstCcpuIMMMemFreeQue)); vos_printf("A2C 核间释放队列中节点个数 : %d \n", (VOS_INT32)LUP_QueCnt(g_pstCcpuTTFMemFreeQue)); vos_printf("TtfMemRb 出队失败次数 : %d \n", (VOS_INT32)g_stTtfMemRbMntnEntity.ulTtfMemRbDeQFailCnt); vos_printf("TtfMemRb 出队总次数 : %d \n", (VOS_INT32)g_stTtfMemRbMntnEntity.ulTtfMemRbDeQTotalCnt); vos_printf("TtfMemRb 入队失败次数 : %d \n", (VOS_INT32)g_stTtfMemRbMntnEntity.ulTtfMemRbEnQFailCnt); vos_printf("TtfMemRb 入队总次数 : %d \n", (VOS_INT32)g_stTtfMemRbMntnEntity.ulTtfMemRbEnQTotalCnt); vos_printf("TtfMemRb 收到IPF中断次数 : %d \n", (VOS_INT32)g_stTtfMemRbMntnEntity.ulTtfMemRbReceiveIntCnt); vos_printf("TtfMemRb 向IPF发送中断次数 : %d \n", (VOS_INT32)g_stTtfMemRbMntnEntity.ulTtfMemRbSendIntCnt); return; }/* TTF_MemMntnInfo */
VOS_VOID CDS_ShowDlIpfProcStats(VOS_VOID) { vos_printf("下行IPF处理统计\n\n"); vos_printf("下行配置IPF没有BD次数 %d\n",g_stCdsStats.ulDLIpfCfgHaveNoBD); vos_printf("下行配置IPF没有CD次数 %d\n",g_stCdsStats.ulDLIpfCfgHaveNoCD); vos_printf("下行配置IPF CD不够次数 %d\n",g_stCdsStats.ulDLIpfCfgCDNotEnough); vos_printf("下行配置BD成功个数 %d\n",g_stCdsStats.ulDLIpfCfgBDSucc); vos_printf("下行配置BD失败个数 %d\n",g_stCdsStats.ulDLIpfCfgBDFail); vos_printf("\r\n"); vos_printf("下行桥接模式保存源内存成功个数 %d\n",g_stCdsStats.ulDLIpfSaveSrcMemSucc); vos_printf("下行桥接模式保存源内存失败个数 %d\n",g_stCdsStats.ulDLIpfSaveSrcMemFail); vos_printf("下行桥接模式源内存释放队列当前个数 %d\n",LUP_QueCnt(CDS_IPF_DL_SRCMEM_FREE_QUE())); vos_printf("下行桥接模式释放源内存成功个数 %d\n",g_stCdsStats.ulDLIpfFreeSrcMemNum); vos_printf("下行桥接模式释放源内存失败个数 %d\n",g_stCdsStats.ulDLIpfFreeSrcMemErr); vos_printf("\r\n"); vos_printf("下行非桥接模式IPF分配内存失败次数 %d\n",g_stCdsStats.ulDLIpfCfgBDAllocMemFail); vos_printf("下行非桥接模式SDU长度错误个数 %d\n",g_stCdsStats.ulDLIpfCfgBDSduLenErr); vos_printf("下行非桥接模式IPF调用内存释放函数回调次数 %d\n",g_stCdsStats.ulIpfDlCallMemFreeNum); vos_printf("下行非桥接模式释放内存个数 %d\n",g_stCdsStats.ulIpfDlFreeMemNum); vos_printf("\r\n"); return; }
VOS_VOID CDS_ShowCdsEntityInfo(VOS_UINT16 usModemId) { char strRanMode[][20] = {"NULL","LTE","GU","无效接入模式"}; char strLBState[][20] = {"正常模式","环回模式"}; CDS_ENTITY_STRU *pstCdsEntity; VOS_UINT32 ulCnt; pstCdsEntity = CDS_GetCdsEntity(usModemId); if (VOS_NULL_PTR == pstCdsEntity) { vos_printf("ModemId非法。输入ModemId=%d\n",usModemId); return; } vos_printf("显示Modem%d的CDS实体状态 \r\n",usModemId); vos_printf("当前接入模式 : %s\r\n",strRanMode[pstCdsEntity->enRanMode]); vos_printf("上行SR触发标志 : %d\r\n",pstCdsEntity->ulServiceReqFlg); vos_printf("上行缓存队列缓存个数 : %d\r\n",LUP_QueCnt(pstCdsEntity->pstUlDataQue)); vos_printf("上行缓存数据保护定时器 : 0x%x\r\n",pstCdsEntity->astTimer[CDS_TMR_ID_UL_DATA_PROCTECT].pstTmrHdr); vos_printf("下行10ms周期性定时器 : 0x%x\r\n",pstCdsEntity->astTimer[CDS_TMR_ID_DL_10MS_PERIODIC_TMR].pstTmrHdr); vos_printf("环回模式状态 : %s\r\n",strLBState[pstCdsEntity->ulTestModeFlg]); vos_printf("环回模式类型 : %d\r\n",pstCdsEntity->ulLoopBackMode); vos_printf("环回模式B定时器时长 : %d\r\n",pstCdsEntity->astTimer[CDS_TMR_ID_LB_MODE_B_TMR].ulTmrLen); vos_printf("环回队列当前缓存SDU : %d\r\n",LUP_QueCnt(pstCdsEntity->pstLBModeBQue)); vos_printf("上行数据包直接丢弃开关 : %d\r\n",pstCdsEntity->ulULPktDiscardFlg); vos_printf("下行数据包直接丢弃开关 : %d\r\n",pstCdsEntity->ulDLPktDiscardFlg); vos_printf("\r\n"); vos_printf("显示Modem%d的IMS承载信息 \r\n",usModemId); vos_printf("IMS端口号范围 :%d - %d\r\n",pstCdsEntity->stImsPortInfo.usMinImsPort, pstCdsEntity->stImsPortInfo.usMaxImsPort); vos_printf("IMS承载总数 : %d\r\n",pstCdsEntity->ulImsBearerNum); for (ulCnt = 0; ulCnt < pstCdsEntity->ulImsBearerNum; ulCnt ++) { vos_printf("IMS承载ID : %d\r\n",pstCdsEntity->astImsBearerInfo[ulCnt].ucEpsbId); vos_printf("IMS承载类型 : %d\r\n",pstCdsEntity->astImsBearerInfo[ulCnt].enBearerType); } vos_printf("\r\n"); return; }
VOS_VOID IMM_RbRemoteFreeMem(VOS_VOID *pucAddr) { VOS_UINT32 ulResult; VOS_UINT32 ulNum; VOS_INT32 lIsrRet; /* 中断操作返回值 */ VOS_ULONG ulFlags = 0UL; if ( VOS_NULL_PTR == pucAddr ) { VOS_SpinLockIntLock(&g_stImmRbSpinLock, ulFlags); g_stImmMemFreeMntnEntity.ulImmMemExtFreeFailCnt++; VOS_SpinUnlockIntUnlock(&g_stImmRbSpinLock, ulFlags); IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_WARNING, "IMM_RB, IMM_RbRemoteFreeMem, pucAddr is Null!\n"); return; } VOS_SpinLockIntLock (&g_stImmRbSpinLock, ulFlags); /* 将TTF_MEM地址放入释放队列 */ ulResult = LUP_EnSharedQueAcpu(g_pstAcpuTTFMemFreeQue, pucAddr); g_stImmMemRbMntnEntity.ulImmMemRbEnQTotalCnt++; ulNum = LUP_QueCnt(g_pstAcpuTTFMemFreeQue); VOS_SpinUnlockIntUnlock(&g_stImmRbSpinLock, ulFlags); if (PS_SUCC != ulResult) { VOS_SpinLockIntLock (&g_stImmRbSpinLock, ulFlags); g_stImmMemRbMntnEntity.ulImmMemRbEnQFailCnt++; VOS_SpinUnlockIntUnlock(&g_stImmRbSpinLock, ulFlags); IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_ERROR, "ERROR:IMM_RbRemoteFreeMem: LUP_EnSharedQueAcpu fail!\n"); } #ifndef WTTF_PS_FUSION_PC_ST if ( 0 == (ulNum & g_ulFreeIMMMemBlkNoticNum)) { /* 触发IPC中断 */ lIsrRet = IMM_MEM_TRIG_IPC_MEMRB_INT(IPC_CORE_COMARM, IMM_IPC_MEM_RECYCLE_INT); VOS_SpinLockIntLock (&g_stImmRbSpinLock, ulFlags); g_stImmMemRbMntnEntity.ulImmMemRbSendIntCnt++; VOS_SpinUnlockIntUnlock(&g_stImmRbSpinLock, ulFlags); if (lIsrRet != VOS_OK) { IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_ERROR, "ERROR:IMM_RbRemoteFreeMem: mdrv_ipc_int_send fail!\n"); } } #else lIsrRet = VHW_IPC_IntSend((IPC_INT_CORE_E)IPC_CORE_COMARM, (IPC_INT_LEV_E)IPC_INT_DICC_RELDATA); g_stImmMemRbMntnEntity.ulImmMemRbSendIntCnt++; if (lIsrRet != VOS_OK) { IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_ERROR, "ERROR:IMM_RbRemoteFreeMem: mdrv_ipc_int_send fail!\n"); } #endif return; }/*IMM_RbRemoteFreeMem*/
VOS_VOID CDS_FreeIpfDlSrcMem(VOS_VOID) { LUP_QUEUE_STRU *pstDlFreeQue ; BSP_U32 ulIdleCD; VOS_UINT32 ulIdleBD; VOS_UINT32 ulBusyBD; VOS_UINT32 ulCanFree; VOS_UINT32 ulQueCnt; VOS_UINT32 ulCnt; TTF_MEM_ST *pstSrcTtf; pstDlFreeQue = CDS_IPF_DL_SRCMEM_FREE_QUE(); CDS_ASSERT(VOS_NULL_PTR != pstDlFreeQue); ulQueCnt = LUP_QueCnt(pstDlFreeQue); if (0 == ulQueCnt) { return; } /*get busy bd num*/ ulIdleBD = BSP_IPF_GetDlBDNum(&ulIdleCD); ulBusyBD = IPF_DLBD_DESC_SIZE - ulIdleBD; if (ulQueCnt >= ulBusyBD) { ulCanFree = ulQueCnt - ulBusyBD; } else { CDS_ERROR_LOG3(UEPS_PID_CDS, "CDS_FreeIpfDlSrcMem:Buff Num Less IPF Busy BD Num.quecnt,busybd,idlebd",ulQueCnt,ulBusyBD,ulIdleBD); vos_printf("CDS_FreeIpfDlSrcMem : src free que less than busy bd. quecnt=%d,busybd=%d,idlebd=%d.\n",ulQueCnt,ulBusyBD,ulIdleBD); CDS_DBG_DL_IPF_FREE_SRCMEM_ERROR(1); return; } /*free src mem*/ for (ulCnt = 0; ulCnt < ulCanFree; ulCnt ++) { if (PS_SUCC != LUP_DeQue(pstDlFreeQue,&pstSrcTtf)) { return; } TTF_MemFree(UEPS_PID_CDS,pstSrcTtf); CDS_DBG_DL_IPF_FREE_SRCMEM_NUM(1); } return; }
VOS_VOID CDS_ShowDlSduProcStats(VOS_VOID) { vos_printf("下行SDU数传统计\n\n"); vos_printf("下行GSM模接收SDU个数 %d\n",g_stCdsStats.ulDLGSMRxSduNum); vos_printf("下行GSM模接收IMS数据包个数 %d\n",g_stCdsStats.ulDLGSMRxImsNum); vos_printf("下行GSM模流控丢弃SDU个数 %d\n",g_stCdsStats.ulDLGSMFcFreeSduNum); vos_printf("下行GSM模环回模式下接收SDU个数 %d\n",g_stCdsStats.ulLBDLRxSduInGSM); vos_printf("下行GSM获取缺省RABID失败个数 %d\n",g_stCdsStats.ulDLGSMGetDeftRabIdFail); vos_printf("下行GSM模入队成功个数 %d\n",g_stCdsStats.ulDLGSMEnQueSucc); vos_printf("下行GSM模入队失败个数 %d\n",g_stCdsStats.ulDLGSMEnQueFail); vos_printf("\r\n"); vos_printf("下行UMTS模接收SDU个数 %d\n",g_stCdsStats.ulDLUMTSRxSduNum); vos_printf("下行UMTS模接收IMS数据包个数 %d\n",g_stCdsStats.ulDLUMTSRxImsNum); vos_printf("下行UMTS模流控丢弃SDU个数 %d\n",g_stCdsStats.ulDLUMTSFcFreeSduNum); vos_printf("下行UMTS模环回模式下接收SDU个数 %d\n",g_stCdsStats.ulLBDLRxSduInUMTS); vos_printf("下行UMTS模打桩直接释放SDU个数 %d\n",g_stCdsStats.ulDLUMTSDirectFreeSduNum); vos_printf("下行UMTS获取缺省RABID失败个数 %d\n",g_stCdsStats.ulDLUMTSGetDeftRabIdFail); vos_printf("下行UMTS模入队成功个数 %d\n",g_stCdsStats.ulDLUMTSEnQueSucc); vos_printf("下行UMTS模入队失败个数 %d\n",g_stCdsStats.ulDLUMTSEnQueFail); vos_printf("\r\n"); vos_printf("下行LTE模接收SDU个数 %d\n",g_stCdsStats.ulDLLteRxSduNum); vos_printf("下行LTE模接收IMS数据包个数 %d\n",g_stCdsStats.ulDLLteRxImsNum); vos_printf("下行LTE模流控丢弃SDU个数 %d\n",g_stCdsStats.ulDLLteFcFreeSduNum); vos_printf("下行LTE模打桩直接释放SDU个数 %d\n",g_stCdsStats.ulDLLteDirectFreeSduNum); vos_printf("下行LTE模环回模式下接收SDU个数 %d\n",g_stCdsStats.ulLBDLRxSduInLte); vos_printf("下行LTE获取对应EPSBID失败个数 %d\n",g_stCdsStats.ulDLLteGetEpsbIDFail); vos_printf("下行LTE获取缺省EPSBID失败个数 %d\n",g_stCdsStats.ulDLLteGetDeftEpsbIDFail); vos_printf("下行LTE接收L2 Debug数据包个数 %d\n",g_stCdsStats.ulDLLteRxDbgPkt); vos_printf("下行LTE接收MBMS数据包个数 %d\n",g_stCdsStats.ulDLLteRxMbmsSdu); vos_printf("下行LTE模入队成功个数 %d\n",g_stCdsStats.ulDLLteEnQueSucc); vos_printf("下行LTE模入队失败个数 %d\n",g_stCdsStats.ulDLLteEnQueFail); vos_printf("\r\n"); vos_printf("下行SDU队列当前缓存数据包个数 %d\n",LUP_QueCnt(CDS_GET_IPF_DL_SDU_QUE())); vos_printf("下行SDU入队成功总数 %d\n",g_stCdsStats.ulDLEnSduQueSucc); vos_printf("下行SDU入队失败总数 %d\n",g_stCdsStats.ulDLEnSduQueFail); vos_printf("\r\n"); return; }
VOS_VOID TTF_MemRbRemoteFreeMem( VOS_VOID *pucAddr) { VOS_ULONG ulLockLevel; VOS_UINT32 ulResult; VOS_UINT32 ulNum; VOS_INT32 lIsrRet; /* 中断操作返回值 */ VOS_SpinLockIntLock(&g_stTtfMemRBSpinLock, ulLockLevel); ulResult = LUP_EnQue(g_pstCcpuIMMMemFreeQue, pucAddr); g_stTtfMemRbMntnEntity.ulTtfMemRbEnQTotalCnt++; ulNum = LUP_QueCnt(g_pstCcpuIMMMemFreeQue); VOS_SpinUnlockIntUnlock(&g_stTtfMemRBSpinLock, ulLockLevel); if (PS_SUCC != ulResult) { g_stTtfMemRbMntnEntity.ulTtfMemRbEnQFailCnt++; vos_printf("TTF_MemRbRemoteFreeMem: LUP_EnQue fail!\n"); } #ifndef WTTF_PS_FUSION_PC_ST if ( 0 == (g_ulFreeTtfMemBlkNoticNum & ulNum)) { lIsrRet = TTF_MEM_TRIG_IPC_MEMRB_INT(IPC_CORE_APPARM, TTF_IPC_MEM_RECYCLE_INT); g_stTtfMemRbMntnEntity.ulTtfMemRbSendIntCnt++; if (lIsrRet != VOS_OK) { TTF_LOG(UEPS_PID_TTF_MEM_RB_FREE, PS_PRINT_ERROR, "ERROR:TTF_MemRbRemoteFreeMem: DRV_IPC_INTSEND fail!\n"); } } #else lIsrRet = VHW_IPC_IntSend((IPC_INT_CORE_E)IPC_CORE_APPARM, (IPC_INT_LEV_E)IPC_INT_DICC_RELDATA); g_stTtfMemRbMntnEntity.ulTtfMemRbSendIntCnt++; if (lIsrRet != VOS_OK) { TTF_LOG(UEPS_PID_TTF_MEM_RB_FREE, PS_PRINT_ERROR, "ERROR:TTF_MemRbRemoteFreeMem: DRV_IPC_INTSEND fail!\n"); } #endif return; }/*TTF_MemRbRemoteFreeMem*/
VOS_VOID IMM_MemRbShowMntnInfo( VOS_VOID ) { IMM_LOG(UEPS_PID_IMM_RB_FREE, PS_PRINT_NORMAL, "==========================================\n" ); IMM_LOG(UEPS_PID_IMM_RB_FREE, PS_PRINT_NORMAL, "IMM MEM RB 可维可测信息 :\n" ); IMM_LOG1(UEPS_PID_IMM_RB_FREE, PS_PRINT_NORMAL, "C2A 核间释放队列中节点个数 : %d \n", (VOS_INT32)LUP_QueCnt(g_pstAcpuIMMMemFreeQue)); IMM_LOG1(UEPS_PID_IMM_RB_FREE, PS_PRINT_NORMAL, "A2C 核间释放队列中节点个数 : %d \n", (VOS_INT32)LUP_QueCnt(g_pstAcpuTTFMemFreeQue)); IMM_LOG1(UEPS_PID_IMM_RB_FREE, PS_PRINT_NORMAL, "ImmMemRb 出队失败次数 : %d \n", (VOS_INT32)g_stImmMemRbMntnEntity.ulImmMemRbDeQFailCnt); IMM_LOG1(UEPS_PID_IMM_RB_FREE, PS_PRINT_NORMAL, "ImmMemRb 出队总次数 : %d \n", (VOS_INT32)g_stImmMemRbMntnEntity.ulImmMemRbDeQTotalCnt); IMM_LOG1(UEPS_PID_IMM_RB_FREE, PS_PRINT_NORMAL, "ImmMemRb 入队失败次数 : %d \n", (VOS_INT32)g_stImmMemRbMntnEntity.ulImmMemRbEnQFailCnt); IMM_LOG1(UEPS_PID_IMM_RB_FREE, PS_PRINT_NORMAL, "ImmMemRb 入队总次数 : %d \n", (VOS_INT32)g_stImmMemRbMntnEntity.ulImmMemRbEnQTotalCnt); IMM_LOG1(UEPS_PID_IMM_RB_FREE, PS_PRINT_NORMAL, "ImmMemRb 收到IPF中断次数 : %d \n", (VOS_INT32)g_stImmMemRbMntnEntity.ulImmMemRbReceiveIntCnt); IMM_LOG1(UEPS_PID_IMM_RB_FREE, PS_PRINT_NORMAL, "ImmMemRb 向IPF发送中断次数 : %d \n", (VOS_INT32)g_stImmMemRbMntnEntity.ulImmMemRbSendIntCnt); return; }/* IMM_MemMntnInfo */