/*****************************************************************************
 函 数 名  : 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;
}
Пример #3
0
/******************************************************************************
 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;
}