VOS_VOID TTF_MNTN_ErrlogShow(VOS_VOID)
{
    VOS_UINT32                      ulIndx;

    for(ulIndx = 0; ulIndx < MODEM_ID_BUTT; ulIndx++)
    {
        (VOS_VOID)vos_printf("\r\n******************MODEM ID %u*************************\r\n", ulIndx);

        if (VOS_NO == TTF_ERR_LOG_ENT_STATE_GET(ulIndx))
        {
            (VOS_VOID)vos_printf("Errlog 实体不存在!                %u \r\n");
            continue;
        }

        (VOS_VOID)vos_printf("Errlog Modem %d 开关状态:             %u \r\n", ulIndx, TTF_ERR_LOG_ENT_CTRL_STATUS_GET(ulIndx));
        (VOS_VOID)vos_printf("Errlog Modem %d 当前上报级别:         %u \r\n", ulIndx, TTF_ERR_LOG_ENT_CTRL_LEV_GET(ulIndx));
        (VOS_VOID)vos_printf("Errlog Modem %d RingBuff Mem Addr:    0x%x \r\n", ulIndx, TTF_ERR_LOG_ENT_BUF_GET(ulIndx));
        (VOS_VOID)vos_printf("Errlog Modem %d RingBuff ID:          0x%x \r\n", ulIndx, TTF_ERR_LOG_ENT_RINGID_GET(ulIndx));
        (VOS_VOID)vos_printf("Errlog Modem %d SemId:                0x%x \r\n", ulIndx, TTF_ERR_LOG_ENT_SEM_GET(ulIndx));
        (VOS_VOID)vos_printf("Errlog Modem %d Buffer保留长度:       %u \r\n", ulIndx, TTF_ERR_LOG_ENT_GET_BUF_RSV_LEN(ulIndx));
        (VOS_VOID)vos_printf("Errlog Modem %d Buffer中的数据长度:   %u \r\n", ulIndx, OM_RingBufferNBytes(TTF_ERR_LOG_ENT_RINGID_GET(ulIndx)));
        (VOS_VOID)vos_printf("Errlog Modem %d W Comm Addr:          0x%x \r\n", ulIndx, TTF_ERR_LOG_ENT_WCDMA_COMM_INFO_GET(ulIndx));
        (VOS_VOID)vos_printf("Errlog Modem %d G Comm Addr:          0x%x \r\n", ulIndx, TTF_ERR_LOG_ENT_GSM_COMM_INFO_GET(ulIndx));

        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_PDCP);
        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_WRM);
        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_GRM);
        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_LLC);
        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_SN);
        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_DL);
    }

    return;
}
Example #2
0
VOS_VOID TTF_MNTN_ErrlogShow(VOS_VOID)
{
    VOS_UINT32 ulIndx;

    vos_printf("Errlog 实体状态:        %u \r\n", TTF_ERR_LOG_ENT_STATE_GET());

    for(ulIndx = 0; ulIndx < MODEM_ID_BUTT; ulIndx++)
    {
        vos_printf("\r\n******************MODEM ID %u*************************\r\n", ulIndx);
        vos_printf("Errlog Modem %d 开关状态:        %u \r\n", ulIndx, TTF_ERR_LOG_ENT_CTRL_STATUS_GET(ulIndx));
        vos_printf("Errlog Modem %d 当前上报级别:    %u \r\n", ulIndx, TTF_ERR_LOG_ENT_CTRL_LEV_GET(ulIndx));
        vos_printf("Errlog Modem %d RingBuff Mem Addr:   0x%x \r\n", ulIndx, TTF_ERR_LOG_ENT_BUF_GET(ulIndx));
        vos_printf("Errlog Modem %d RingBuff ID:         0x%x \r\n", ulIndx, TTF_ERR_LOG_ENT_RINGID_GET(ulIndx));
        vos_printf("Errlog Modem %d SemId:               0x%x \r\n", ulIndx, TTF_ERR_LOG_ENT_SEM_GET(ulIndx));
        vos_printf("Errlog Modem %d Buffer保留长度:      %u \r\n", ulIndx, TTF_ERR_LOG_ENT_GET_BUF_RSV_LEN(ulIndx));
        vos_printf("Errlog Modem %d Buffer中的数据长度:      %u \r\n", ulIndx, OM_RingBufferNBytes(TTF_ERR_LOG_ENT_RINGID_GET(ulIndx)));

        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_PDCP);
        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_WRM);
        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_GRM);
        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_LLC);
        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_SN);
        TTF_ERR_LOG_CB_SHOW(ulIndx, MODULE_ID_DL);
    }
}
VOS_VOID NFExt_StatsShow(VOS_VOID)
{
    vos_printf("网桥forward流控丢掉的数据量 %ld \n", g_stNfExtStats.aulStats[NF_EXT_STATS_BR_FC_DROP]);
    vos_printf("进入网桥forward hook的数据量 %ld \n", g_stNfExtStats.aulStats[NF_EXT_STATS_BR_FC_ENTER]);
    vos_printf("环形buf满之后导致丢包数量 %ld \n", g_stNfExtStats.aulStats[NF_EXT_STATS_BUF_FULL_DROP]);
    vos_printf("入环形buf失败次数 %ld \n", g_stNfExtStats.aulStats[NF_EXT_STATS_PUT_BUF_FAIL]);
    vos_printf("出环形buf失败次数 %ld \n", g_stNfExtStats.aulStats[NF_EXT_STATS_GET_BUF_FAIL]);
    vos_printf("申请内存失败次数 %ld \n", g_stNfExtStats.aulStats[NF_EXT_STATS_ALLOC_MEM_FAIL]);

    vos_printf("当前环形缓存中未处理的数据量 %ld \n", ((VOS_UINT32)OM_RingBufferNBytes(g_stExEntity.pRingBufferId) / sizeof(NF_EXT_DATA_RING_BUF_STRU)));
    vos_printf("当前的Hook Mask %ld \n", g_stExEntity.ulCurHookOnMask);
    vos_printf("当前的流控状态Mask %ld \n", g_stExFlowCtrlEntity.ulFlowCtrlMsk);
    vos_printf("当前OM WIFI所使用的IP地址 %x \n", g_stExEntity.ulOmIp);
    vos_printf("当前网桥转发字节数 %x \n", g_stExFlowCtrlEntity.aulTxBytesCnt[NF_EXT_TX_BYTES_CNT_BR]);
}
VOS_VOID SCM_SoftDecodeCfgRcvSelfTask(
    VOS_UINT32                          ulPara1,
    VOS_UINT32                          ulPara2,
    VOS_UINT32                          ulPara3,
    VOS_UINT32                          ulPara4)
{
    VOS_INT32                           sRet;
    VOS_INT32                           lLen;
    VOS_INT32                           lRemainlen;
    VOS_INT32                           lReadLen;
    VOS_UINT32                          ulPktNum;
    VOS_UINT32                          i;
    VOS_ULONG                           ulLockLevel;

    ulPara1 = ulPara1;
    ulPara2 = ulPara2;
    ulPara3 = ulPara3;
    ulPara4 = ulPara4;

    for (;;)
    {
        if (VOS_OK != VOS_SmP(g_stSCMDataRcvTaskCtrlInfo.SmID, 0))
        {
            continue;
        }

        diag_PTR(EN_DIAG_PTR_SCM_SELFTASK);

        lLen = OM_RingBufferNBytes(g_stSCMDataRcvTaskCtrlInfo.rngOmRbufId);

        if (lLen <= 0)
        {
            continue;
        }

        ulPktNum = (VOS_UINT32)((lLen + SCM_DATA_RCV_PKT_SIZE - 1) / SCM_DATA_RCV_PKT_SIZE);

        lRemainlen = lLen;

        for (i = 0; i < ulPktNum; i++)
        {
            if (SCM_DATA_RCV_PKT_SIZE < lRemainlen)
            {
                lReadLen = SCM_DATA_RCV_PKT_SIZE;

                sRet = OM_RingBufferGet(g_stSCMDataRcvTaskCtrlInfo.rngOmRbufId,
                                        g_stSCMDataRcvTaskCtrlInfo.pucBuffer,
                                        SCM_DATA_RCV_PKT_SIZE);
            }
            else
            {
                lReadLen = lRemainlen;

                sRet = OM_RingBufferGet(g_stSCMDataRcvTaskCtrlInfo.rngOmRbufId,
                                        g_stSCMDataRcvTaskCtrlInfo.pucBuffer,
                                        lRemainlen);
            }

            if (sRet != lReadLen)
            {
                VOS_SpinLockIntLock(&g_stScmSoftDecodeDataRcvSpinLock, ulLockLevel);

                OM_RingBufferFlush(g_stSCMDataRcvTaskCtrlInfo.rngOmRbufId);

                VOS_SpinUnlockIntUnlock(&g_stScmSoftDecodeDataRcvSpinLock, ulLockLevel);

                g_stScmSoftDecodeInfo.stRbInfo.ulRingBufferFlush++;
                diag_PTR(EN_DIAG_PTR_SCM_ERR3);

                continue;
            }

            lRemainlen -= lReadLen;

            g_stScmSoftDecodeInfo.stGetInfo.ulDataLen += lReadLen;

            diag_PTR(EN_DIAG_PTR_SCM_RCVDATA);

            /* 调用HDLC解封装函数 */
            if (VOS_OK != SCM_SoftDecodeAcpuRcvData(&g_stScmHdlcSoftDecodeEntity,
                                                    (VOS_UINT8 *)g_stSCMDataRcvTaskCtrlInfo.pucBuffer,
                                                    (VOS_UINT32)lReadLen))
            {
                /*lint -e534*/
                vos_printf("SCM_SoftDecodeCfgRcvSelfTask: SCM_SoftDecodeAcpuRcvData Fail.\n");
                /*lint +e534*/
            }
        }

#if (defined(DMT))
        return;
#endif
    }
}
/*lint -e{416,419,831} */
VOS_VOID TTF_MNTN_ErrlogBufRpt(VOS_UINT32 ulSenderPid, VOS_UINT32 ulReceiverPid, MODEM_ID_ENUM_UINT16 enModemId)
{
    VOS_UINT32                      ulRslt;
    VOS_UINT32                      ulErrLogBufSize;
    VOS_UINT32                      ulTtfCommInfoBufSize;
    VOS_UINT32                      ulMsgLen;
    OM_RING_ID                      pRingId;
    VOS_UINT32                      ulCpuID;
    OM_ERR_LOG_REPORT_CNF_STRU     *pstLogRpt;
    VOS_UINT32                      ulOffSetLen;
    VOS_CHAR                       *pucContent;

    if (enModemId >= MODEM_ID_BUTT)
    {
        TTF_LOG1(ulSenderPid, 0, PS_PRINT_ERROR,
            "TTF_MNTN_ErrlogBufRpt: enModemId Invalid!", enModemId);

        return;
    }

    ulCpuID         = VOS_GET_CPU_ID(ulReceiverPid);
    if ( ulCpuID >= VOS_SUPPORT_CPU_NUM_MAX )
    {
        TTF_LOG1(ulSenderPid, 0, PS_PRINT_ERROR,
            "TTF_MNTN_ErrlogBufRpt: ulReceiverPid Invalid!", (VOS_INT32)ulReceiverPid);

        return;
    }

    /* 初始化没有异常 */
    ulErrLogBufSize = 0;

    pRingId   = TTF_ERR_LOG_ENT_RINGID_GET(enModemId);
    if (VOS_NULL_PTR != pRingId)
    {
        /* 将各模块本地缓存的数据写入Buffer */
        TTF_MNTN_ErrlogCbRun(enModemId);

        /* 保留的长度复位 */
        TTF_ERR_LOG_ENT_RST_BUF_RSV_LEN(enModemId);

        ulRslt = VOS_SmP(TTF_ERR_LOG_ENT_SEM_GET(enModemId), TTF_ERR_SEM_TIMEOUT_LEN);
        if(VOS_OK != ulRslt)
        {
            TTF_LOG2(ulSenderPid, 0, PS_PRINT_WARNING,
                "TTF_MNTN_ErrlogBufRpt: VOS_SmP <1>, ulRslt<2> fail!", enModemId, (VOS_INT32)ulRslt);

            return;
        }

        ulErrLogBufSize = (VOS_UINT32)OM_RingBufferNBytes(pRingId);
        if (ulErrLogBufSize > TTF_ERR_LOG_BUF_SIZE)
        {
            OM_RingBufferFlush(pRingId);

            TTF_LOG1(ulSenderPid, 0, PS_PRINT_WARNING,
                "TTF_MNTN_ErrlogBufRpt: ulErrLogBufSize invalid!", (VOS_INT32)ulErrLogBufSize);

            ulErrLogBufSize = 0;
        }

        VOS_SmV(TTF_ERR_LOG_ENT_SEM_GET(enModemId));
    }

    ulTtfCommInfoBufSize = 0;
    if (VOS_NULL_PTR != TTF_ERR_LOG_ENT_WCDMA_COMM_INFO_GET(enModemId))
    {
        ulTtfCommInfoBufSize += sizeof(TTF_MNTN_WCDMA_COMM_INFO_STRU);
        TTF_ERR_LOG_ENT_WCDMA_COMM_INFO_GET(enModemId)->usRingBufferOverCounter = TTF_ERR_LOG_ENT_BUFFER_OVER_CNT_GET(enModemId);
    }

    if (VOS_NULL_PTR != TTF_ERR_LOG_ENT_GSM_COMM_INFO_GET(enModemId))
    {
        ulTtfCommInfoBufSize += sizeof(TTF_MNTN_GSM_COMM_INFO_STRU);
        TTF_ERR_LOG_ENT_GSM_COMM_INFO_GET(enModemId)->usRingBufferOverCounter   = TTF_ERR_LOG_ENT_BUFFER_OVER_CNT_GET(enModemId);
    }

    /* Reset环形Buffer溢出标识 */
    TTF_ERR_LOG_ENT_BUFFER_OVER_CNT_SET(enModemId, 0);

    /* 计算消息总的长度 */
    TTF_GET_OFFSET(ulOffSetLen, OM_ERR_LOG_REPORT_CNF_STRU, aucContent);
    ulMsgLen  = ulOffSetLen + ulTtfCommInfoBufSize + ulErrLogBufSize;

    pstLogRpt = (OM_ERR_LOG_REPORT_CNF_STRU *)PS_ALLOC_MSG_WITH_HEADER_LEN(ulSenderPid, ulMsgLen);
    if (VOS_NULL_PTR == pstLogRpt)
    {
        TTF_LOG1(ulSenderPid, 0, PS_PRINT_WARNING,
                "TTF_MNTN_ErrlogBufRpt: PS_ALLOC_MSG_WITH_HEADER_LEN fail!", (VOS_INT32)ulMsgLen);
        return;
    }

    /* 开始拷贝基本信息 */
    pucContent = (VOS_CHAR *)(pstLogRpt->aucContent);

    if (VOS_NULL_PTR != TTF_ERR_LOG_ENT_WCDMA_COMM_INFO_GET(enModemId))
    /*lint -e{662,669} */
    {
        /* 拷贝WCDMA基本配置信息 */
        PS_MEM_CPY((VOS_VOID *)pucContent, (VOS_VOID *)TTF_ERR_LOG_ENT_WCDMA_COMM_INFO_GET(enModemId), (VOS_UINT32)(sizeof(TTF_MNTN_WCDMA_COMM_INFO_STRU)));
        pucContent += (VOS_UINT32)(sizeof(TTF_MNTN_WCDMA_COMM_INFO_STRU));
    }

    if (VOS_NULL_PTR != TTF_ERR_LOG_ENT_GSM_COMM_INFO_GET(enModemId))
    /*lint -e{662,669} */
    {
        /* 拷贝GSM基本配置信息 */
        PS_MEM_CPY((VOS_VOID *)pucContent, (VOS_VOID *)TTF_ERR_LOG_ENT_GSM_COMM_INFO_GET(enModemId), (VOS_UINT32)(sizeof(TTF_MNTN_GSM_COMM_INFO_STRU)));
        pucContent += (VOS_UINT32)(sizeof(TTF_MNTN_GSM_COMM_INFO_STRU));
    }

    /* 拷贝异常事件信息 */
    if (0 != ulErrLogBufSize)
    {
        TTF_MNTN_ErrlogBufGet(  ulSenderPid,
                                enModemId,
                                pucContent,
                                ulErrLogBufSize);
    }

    pstLogRpt->ulReceiverPid    = ulReceiverPid;
    pstLogRpt->ulMsgName        = ID_OM_ERR_LOG_REPORT_CNF;
    pstLogRpt->ulMsgType        = OM_ERR_LOG_MSG_ERR_REPORT;
    pstLogRpt->ulMsgSN          = mdrv_timer_get_normal_timestamp();
    pstLogRpt->ulRptlen         = ulTtfCommInfoBufSize + ulErrLogBufSize;

    PS_SEND_MSG(UEPS_PID_SN, pstLogRpt);

    return;
}
VOS_UINT32 NAS_CC_GetErrLogRingBufferUseBytes(VOS_VOID)
{
    return (VOS_UINT32)OM_RingBufferNBytes(NAS_CC_GetErrLogRingBufAddr());
}
Example #7
0
VOS_VOID TTF_MNTN_ErrlogBufRpt(VOS_UINT32 ulSenderPid, VOS_UINT32 ulReceiverPid, MODEM_ID_ENUM_UINT16 enModemId)
{
    VOS_UINT32                      ulRslt;
    VOS_UINT32                      ulBufSize;
    VOS_UINT32                      ulMsgLen;
    OM_RING_ID                      pRingId;
    VOS_UINT32                      ulCpuID;
    OM_ERR_LOG_REPORT_CNF_STRU     *pstLogRpt;

    if (enModemId >= MODEM_ID_BUTT)
    {
        PS_LOG1(ulSenderPid, 0, PS_PRINT_ERROR,
            "TTF_MNTN_ErrlogBufRpt: enModemId Invalid!", enModemId);

        return;
    }

    ulCpuID         = VOS_GET_CPU_ID(ulReceiverPid);

    if ( ulCpuID >= VOS_SUPPORT_CPU_NUM_MAX )
    {
        PS_LOG1(ulSenderPid, 0, PS_PRINT_ERROR,
            "TTF_MNTN_ErrlogBufRpt: ulReceiverPid Invalid!", (VOS_INT32)ulReceiverPid);

        return;
    }

    pRingId   = TTF_ERR_LOG_ENT_RINGID_GET(enModemId);

    /* Default没有异常 */
    ulBufSize = 0;

    if (VOS_NULL_PTR != pRingId)
    {
        /* 保留的长度复位 */
        TTF_ERR_LOG_ENT_RST_BUF_RSV_LEN(enModemId);

        /* 将各模块本地缓存的数据写入Buffer */
        TTF_MNTN_ErrlogCbRun(enModemId);

        ulRslt = VOS_SmP(TTF_ERR_LOG_ENT_SEM_GET(enModemId), TTF_ERR_SEM_TIMEOUT_LEN);

        if(VOS_OK != ulRslt)
        {
            PS_LOG2(ulSenderPid, 0, PS_PRINT_WARNING,
                "TTF_MNTN_ErrlogBufRpt: VOS_SmP <1>, ulRslt<2> fail!", enModemId, (VOS_INT32)ulRslt);

            return;
        }

        ulBufSize = (VOS_UINT32)OM_RingBufferNBytes(pRingId);

        if (ulBufSize > TTF_ERR_LOG_BUF_SIZE)
        {
            OM_RingBufferFlush(pRingId);

            PS_LOG1(ulSenderPid, 0, PS_PRINT_WARNING,
                "TTF_MNTN_ErrlogBufGet: ulBufSize invalid!", (VOS_INT32)ulBufSize);

            ulBufSize = 0;
        }

        VOS_SmV(TTF_ERR_LOG_ENT_SEM_GET(enModemId));
    }

    /*lint -e413*/
    ulMsgLen  = (TTF_OFFSET_OF(OM_ERR_LOG_REPORT_CNF_STRU, aucContent[0])) + ulBufSize;
    pstLogRpt = (OM_ERR_LOG_REPORT_CNF_STRU *)PS_ALLOC_MSG_WITH_HEADER_LEN(ulSenderPid, ulMsgLen);

    if (VOS_NULL_PTR == pstLogRpt)
    {
        return;
    }

    if (0 != ulBufSize)
    {
        TTF_MNTN_ErrlogBufGet(ulSenderPid, enModemId, (VOS_CHAR *)(pstLogRpt->aucContent), ulBufSize);
    }

    pstLogRpt->ulReceiverPid    = ulReceiverPid;
    pstLogRpt->ulMsgName        = ID_OM_ERR_LOG_REPORT_CNF;
    pstLogRpt->ulMsgType        = OM_ERR_LOG_MSG_ERR_REPORT;
    pstLogRpt->ulMsgSN          = VOS_GetSlice();
    pstLogRpt->ulRptlen         = ulBufSize;

    /*lint +e413*/

    PS_SEND_MSG(UEPS_PID_SN, pstLogRpt);
}