/***************************************************************************** 函 数 名 : FC_UL_UpRateLimit 功能描述 : 加强HSUPA上行发送速率限制,降低发送速率 输入参数 : ulSndRate -- 发送速率百分比 ulPolicyMask -- 流控策略掩码 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2011年12月5日 作 者 : 修改内容 : 新生成函数 *****************************************************************************/ VOS_UINT32 FC_UL_UpRateLimit( VOS_UINT32 ulUlRate, VOS_UINT32 ulPolicyId ) { VOS_UINT32 ulRateLimit; /* 前16位记录当前档位的流控百分比,用于启流控 */ ulRateLimit = ulUlRate >> 16; if ( FC_POLICY_MASK_CPU_C == FC_POLICY_MASK(ulPolicyId)) { g_ulFcUlRateCpu = ulRateLimit; } else if ( FC_POLICY_MASK_TMP == FC_POLICY_MASK(ulPolicyId)) { g_ulFcUlRateTmp = ulRateLimit; } else { FC_LOG1(PS_PRINT_WARNING, "FC_UL_UpRateLimit, ERROR, Invalid ulPolicyId %d\n", (VOS_INT32)ulPolicyId); return VOS_ERR; } return VOS_OK; }
/***************************************************************************** 函 数 名 : FC_UL_DownRateLimit 功能描述 : 减弱HSUPA上行发送速率限制,提高发送速率 输入参数 : ulSndRate -- 发送速率百分比 ulPolicyMask -- 流控策略掩码 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2011年12月5日 作 者 : 修改内容 : 新生成函数 *****************************************************************************/ VOS_UINT32 FC_UL_DownRateLimit( VOS_UINT32 ulUlRate, VOS_UINT32 ulPolicyId ) { VOS_UINT32 ulRateLimit; /* 后16位记录下一个更低先级档位的流控百分比,用于解流控 */ ulRateLimit = ulUlRate & FC_DOWN_RATE_LIMIT_MASK; if ( FC_POLICY_MASK_CPU_C == FC_POLICY_MASK(ulPolicyId)) { g_ulFcUlRateCpu = ulRateLimit; } else if ( FC_POLICY_MASK_TMP == FC_POLICY_MASK(ulPolicyId)) { g_ulFcUlRateTmp = ulRateLimit; } else { FC_LOG1(PS_PRINT_WARNING, "FC_UL_DownRateLimit, ERROR, Invalid ulPolicyId %d\n", (VOS_INT32)ulPolicyId); return VOS_ERR; } return VOS_OK; }
/****************************************************************************** Prototype : R_ITF_SetGFlowLev Description : 业务切换为G模时,更改流控门限 Input : Output : Return Value : Calls : Called By : History : --- 1.Date : 2009-02-27 Modification: Created function ******************************************************************************/ VOS_VOID R_ITF_SetGFlowLev(VOS_VOID) { R_ITF_FLOW_LEV_STRU *pFlowLev; VOS_INT32 lLockKey; /* 进入流控临界区 */ lLockKey = VOS_SplIMP(); pFlowLev = &g_stRItfFlowCtrl.astFlowCtrl[R_ITF_FLOW_CTRL_TYPE_MEM_CNT]; pFlowLev->ulNormalLev = 600; pFlowLev->ulWarningLev = 600; pFlowLev->ulMaxLev = 0; pFlowLev = &g_stRItfFlowCtrl.astFlowCtrl[R_ITF_FLOW_CTRL_TYPE_MEM_SIZE]; pFlowLev->ulNormalLev = 30000; pFlowLev->ulWarningLev = 30000; pFlowLev->ulMaxLev = 0; /* 离开流控临界区 */ VOS_Splx(lLockKey); R_ITF_ResetFlowCtrl(); /* V9R1中使用流控NV项中GPRS流控使能位来判断是否注册钩子函数 */ if ( (FC_POLICY_MASK(FC_POLICY_ID_GPRS) == FC_POLICY_GetEnableMask(FC_POLICY_ID_GPRS) )) { /* 到G模下, A核内存需要拷贝到C核TTF_MEM中, 因此C核上需要内存监测钩子 */ TTF_MemRegEventCallBack(TTF_MEM_POOL_ID_UL_DATA, R_ITF_TtfMemAllocEvent, R_ITF_TtfMemFreeEvent); } else { /* V9R1中使用宏来判断,如果是V9R1,则不注册钩子函数 */ TTF_MemRegEventCallBack(TTF_MEM_POOL_ID_UL_DATA, VOS_NULL_PTR, VOS_NULL_PTR); } return; }