627 lines
19 KiB
C
627 lines
19 KiB
C
/*
|
|
* Copyright (C) 2013 Realtek Semiconductor Corp.
|
|
* All Rights Reserved.
|
|
*
|
|
* Unless you and Realtek execute a separate written software license
|
|
* agreement governing use of this software, this software is licensed
|
|
* to you under the terms of the GNU General Public License version 2,
|
|
* available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
|
*
|
|
* $Revision: 76306 $
|
|
* $Date: 2017-03-08 15:13:58 +0800 (週三, 08 三月 2017) $
|
|
*
|
|
* Purpose : RTK switch high-level API for RTL8367/RTL8367C
|
|
* Feature : Here is a list of all functions and variables in MIB module.
|
|
*
|
|
*/
|
|
|
|
#include <rtk_switch.h>
|
|
#include <rtk_error.h>
|
|
#include <stat.h>
|
|
#include <string.h>
|
|
|
|
#include <rtl8367c_asicdrv.h>
|
|
#include <rtl8367c_asicdrv_mib.h>
|
|
|
|
/* Function Name:
|
|
* rtk_stat_global_reset
|
|
* Description:
|
|
* Reset global MIB counter.
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* Reset MIB counter of ports. API will use global reset while port mask is all-ports.
|
|
*/
|
|
rtk_api_ret_t rtk_stat_global_reset(void)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if ((retVal = rtl8367c_setAsicMIBsCounterReset(TRUE,FALSE, 0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_stat_port_reset
|
|
* Description:
|
|
* Reset per port MIB counter by port.
|
|
* Input:
|
|
* port - port id.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
*
|
|
*/
|
|
rtk_api_ret_t rtk_stat_port_reset(rtk_port_t port)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
/* Check port valid */
|
|
RTK_CHK_PORT_VALID(port);
|
|
|
|
if ((retVal = rtl8367c_setAsicMIBsCounterReset(FALSE,FALSE,1 << rtk_switch_port_L2P_get(port))) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_stat_queueManage_reset
|
|
* Description:
|
|
* Reset queue manage MIB counter.
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
*
|
|
*/
|
|
rtk_api_ret_t rtk_stat_queueManage_reset(void)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if ((retVal = rtl8367c_setAsicMIBsCounterReset(FALSE,TRUE,0)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
|
|
/* Function Name:
|
|
* rtk_stat_global_get
|
|
* Description:
|
|
* Get global MIB counter
|
|
* Input:
|
|
* cntr_idx - global counter index.
|
|
* Output:
|
|
* pCntr - global counter value.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* Get global MIB counter by index definition.
|
|
*/
|
|
rtk_api_ret_t rtk_stat_global_get(rtk_stat_global_type_t cntr_idx, rtk_stat_counter_t *pCntr)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if(NULL == pCntr)
|
|
return RT_ERR_NULL_POINTER;
|
|
|
|
if (cntr_idx!=DOT1D_TP_LEARNED_ENTRY_DISCARDS_INDEX)
|
|
return RT_ERR_STAT_INVALID_GLOBAL_CNTR;
|
|
|
|
if ((retVal = rtl8367c_getAsicMIBsCounter(0, (RTL8367C_MIBCOUNTER)cntr_idx, pCntr)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_stat_global_getAll
|
|
* Description:
|
|
* Get all global MIB counter
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pGlobal_cntrs - global counter structure.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* Get all global MIB counter by index definition.
|
|
*/
|
|
rtk_api_ret_t rtk_stat_global_getAll(rtk_stat_global_cntr_t *pGlobal_cntrs)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if(NULL == pGlobal_cntrs)
|
|
return RT_ERR_NULL_POINTER;
|
|
|
|
if ((retVal = rtl8367c_getAsicMIBsCounter(0, dot1dTpLearnedEntryDiscards, &pGlobal_cntrs->dot1dTpLearnedEntryDiscards)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
#define MIB_NOT_SUPPORT (0xFFFF)
|
|
static rtk_api_ret_t _get_asic_mib_idx(rtk_stat_port_type_t cnt_idx, RTL8367C_MIBCOUNTER *pMib_idx)
|
|
{
|
|
RTL8367C_MIBCOUNTER mib_asic_idx[STAT_PORT_CNTR_END]=
|
|
{
|
|
ifInOctets, /* STAT_IfInOctets */
|
|
dot3StatsFCSErrors, /* STAT_Dot3StatsFCSErrors */
|
|
dot3StatsSymbolErrors, /* STAT_Dot3StatsSymbolErrors */
|
|
dot3InPauseFrames, /* STAT_Dot3InPauseFrames */
|
|
dot3ControlInUnknownOpcodes, /* STAT_Dot3ControlInUnknownOpcodes */
|
|
etherStatsFragments, /* STAT_EtherStatsFragments */
|
|
etherStatsJabbers, /* STAT_EtherStatsJabbers */
|
|
ifInUcastPkts, /* STAT_IfInUcastPkts */
|
|
etherStatsDropEvents, /* STAT_EtherStatsDropEvents */
|
|
etherStatsOctets, /* STAT_EtherStatsOctets */
|
|
etherStatsUnderSizePkts, /* STAT_EtherStatsUnderSizePkts */
|
|
etherOversizeStats, /* STAT_EtherOversizeStats */
|
|
etherStatsPkts64Octets, /* STAT_EtherStatsPkts64Octets */
|
|
etherStatsPkts65to127Octets, /* STAT_EtherStatsPkts65to127Octets */
|
|
etherStatsPkts128to255Octets, /* STAT_EtherStatsPkts128to255Octets */
|
|
etherStatsPkts256to511Octets, /* STAT_EtherStatsPkts256to511Octets */
|
|
etherStatsPkts512to1023Octets, /* STAT_EtherStatsPkts512to1023Octets */
|
|
etherStatsPkts1024to1518Octets, /* STAT_EtherStatsPkts1024to1518Octets */
|
|
ifInMulticastPkts, /* STAT_EtherStatsMulticastPkts */
|
|
ifInBroadcastPkts, /* STAT_EtherStatsBroadcastPkts */
|
|
ifOutOctets, /* STAT_IfOutOctets */
|
|
dot3StatsSingleCollisionFrames, /* STAT_Dot3StatsSingleCollisionFrames */
|
|
dot3StatMultipleCollisionFrames,/* STAT_Dot3StatsMultipleCollisionFrames */
|
|
dot3sDeferredTransmissions, /* STAT_Dot3StatsDeferredTransmissions */
|
|
dot3StatsLateCollisions, /* STAT_Dot3StatsLateCollisions */
|
|
etherStatsCollisions, /* STAT_EtherStatsCollisions */
|
|
dot3StatsExcessiveCollisions, /* STAT_Dot3StatsExcessiveCollisions */
|
|
dot3OutPauseFrames, /* STAT_Dot3OutPauseFrames */
|
|
MIB_NOT_SUPPORT, /* STAT_Dot1dBasePortDelayExceededDiscards */
|
|
dot1dTpPortInDiscards, /* STAT_Dot1dTpPortInDiscards */
|
|
ifOutUcastPkts, /* STAT_IfOutUcastPkts */
|
|
ifOutMulticastPkts, /* STAT_IfOutMulticastPkts */
|
|
ifOutBroadcastPkts, /* STAT_IfOutBroadcastPkts */
|
|
outOampduPkts, /* STAT_OutOampduPkts */
|
|
inOampduPkts, /* STAT_InOampduPkts */
|
|
MIB_NOT_SUPPORT, /* STAT_PktgenPkts */
|
|
inMldChecksumError, /* STAT_InMldChecksumError */
|
|
inIgmpChecksumError, /* STAT_InIgmpChecksumError */
|
|
inMldSpecificQuery, /* STAT_InMldSpecificQuery */
|
|
inMldGeneralQuery, /* STAT_InMldGeneralQuery */
|
|
inIgmpSpecificQuery, /* STAT_InIgmpSpecificQuery */
|
|
inIgmpGeneralQuery, /* STAT_InIgmpGeneralQuery */
|
|
inMldLeaves, /* STAT_InMldLeaves */
|
|
inIgmpLeaves, /* STAT_InIgmpInterfaceLeaves */
|
|
inIgmpJoinsSuccess, /* STAT_InIgmpJoinsSuccess */
|
|
inIgmpJoinsFail, /* STAT_InIgmpJoinsFail */
|
|
inMldJoinsSuccess, /* STAT_InMldJoinsSuccess */
|
|
inMldJoinsFail, /* STAT_InMldJoinsFail */
|
|
inReportSuppressionDrop, /* STAT_InReportSuppressionDrop */
|
|
inLeaveSuppressionDrop, /* STAT_InLeaveSuppressionDrop */
|
|
outIgmpReports, /* STAT_OutIgmpReports */
|
|
outIgmpLeaves, /* STAT_OutIgmpLeaves */
|
|
outIgmpGeneralQuery, /* STAT_OutIgmpGeneralQuery */
|
|
outIgmpSpecificQuery, /* STAT_OutIgmpSpecificQuery */
|
|
outMldReports, /* STAT_OutMldReports */
|
|
outMldLeaves, /* STAT_OutMldLeaves */
|
|
outMldGeneralQuery, /* STAT_OutMldGeneralQuery */
|
|
outMldSpecificQuery, /* STAT_OutMldSpecificQuery */
|
|
inKnownMulticastPkts, /* STAT_InKnownMulticastPkts */
|
|
ifInMulticastPkts, /* STAT_IfInMulticastPkts */
|
|
ifInBroadcastPkts, /* STAT_IfInBroadcastPkts */
|
|
ifOutDiscards /* STAT_IfOutDiscards */
|
|
};
|
|
|
|
if(cnt_idx >= STAT_PORT_CNTR_END)
|
|
return RT_ERR_STAT_INVALID_PORT_CNTR;
|
|
|
|
if(mib_asic_idx[cnt_idx] == MIB_NOT_SUPPORT)
|
|
return RT_ERR_CHIP_NOT_SUPPORTED;
|
|
|
|
*pMib_idx = mib_asic_idx[cnt_idx];
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_stat_port_get
|
|
* Description:
|
|
* Get per port MIB counter by index
|
|
* Input:
|
|
* port - port id.
|
|
* cntr_idx - port counter index.
|
|
* Output:
|
|
* pCntr - MIB retrieved counter.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* Get per port MIB counter by index definition.
|
|
*/
|
|
rtk_api_ret_t rtk_stat_port_get(rtk_port_t port, rtk_stat_port_type_t cntr_idx, rtk_stat_counter_t *pCntr)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
RTL8367C_MIBCOUNTER mib_idx;
|
|
rtk_stat_counter_t second_cnt;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if(NULL == pCntr)
|
|
return RT_ERR_NULL_POINTER;
|
|
|
|
/* Check port valid */
|
|
RTK_CHK_PORT_VALID(port);
|
|
|
|
if (cntr_idx>=STAT_PORT_CNTR_END)
|
|
return RT_ERR_STAT_INVALID_PORT_CNTR;
|
|
|
|
if((retVal = _get_asic_mib_idx(cntr_idx, &mib_idx)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(mib_idx == MIB_NOT_SUPPORT)
|
|
return RT_ERR_CHIP_NOT_SUPPORTED;
|
|
|
|
if ((retVal = rtl8367c_getAsicMIBsCounter(rtk_switch_port_L2P_get(port), mib_idx, pCntr)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if(cntr_idx == STAT_EtherStatsMulticastPkts)
|
|
{
|
|
if((retVal = _get_asic_mib_idx(STAT_IfOutMulticastPkts, &mib_idx)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicMIBsCounter(rtk_switch_port_L2P_get(port), mib_idx, &second_cnt)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
*pCntr += second_cnt;
|
|
}
|
|
|
|
if(cntr_idx == STAT_EtherStatsBroadcastPkts)
|
|
{
|
|
if((retVal = _get_asic_mib_idx(STAT_IfOutBroadcastPkts, &mib_idx)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicMIBsCounter(rtk_switch_port_L2P_get(port), mib_idx, &second_cnt)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
*pCntr += second_cnt;
|
|
}
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_stat_port_getAll
|
|
* Description:
|
|
* Get all counters of one specified port in the specified device.
|
|
* Input:
|
|
* port - port id.
|
|
* Output:
|
|
* pPort_cntrs - buffer pointer of counter value.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* Get all MIB counters of one port.
|
|
*/
|
|
rtk_api_ret_t rtk_stat_port_getAll(rtk_port_t port, rtk_stat_port_cntr_t *pPort_cntrs)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
rtk_uint32 mibIndex;
|
|
rtk_uint64 mibCounter;
|
|
rtk_uint32 *accessPtr;
|
|
/* address offset to MIBs counter */
|
|
CONST_T rtk_uint16 mibLength[STAT_PORT_CNTR_END]= {
|
|
2,1,1,1,1,1,1,1,1,
|
|
2,1,1,1,1,1,1,1,1,1,1,
|
|
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if(NULL == pPort_cntrs)
|
|
return RT_ERR_NULL_POINTER;
|
|
|
|
/* Check port valid */
|
|
RTK_CHK_PORT_VALID(port);
|
|
|
|
accessPtr = (rtk_uint32*)pPort_cntrs;
|
|
for (mibIndex=0;mibIndex<STAT_PORT_CNTR_END;mibIndex++)
|
|
{
|
|
if ((retVal = rtk_stat_port_get(port, mibIndex, &mibCounter)) != RT_ERR_OK)
|
|
{
|
|
if (retVal == RT_ERR_CHIP_NOT_SUPPORTED)
|
|
mibCounter = 0;
|
|
else
|
|
return retVal;
|
|
}
|
|
|
|
if (2 == mibLength[mibIndex])
|
|
*(rtk_uint64*)accessPtr = mibCounter;
|
|
else if (1 == mibLength[mibIndex])
|
|
*accessPtr = mibCounter;
|
|
else
|
|
return RT_ERR_FAILED;
|
|
|
|
accessPtr+=mibLength[mibIndex];
|
|
}
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_stat_logging_counterCfg_set
|
|
* Description:
|
|
* Set the type and mode of Logging Counter
|
|
* Input:
|
|
* idx - The index of Logging Counter. Should be even number only.(0,2,4,6,8.....30)
|
|
* mode - 32 bits or 64 bits mode
|
|
* type - Packet counter or byte counter
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_OUT_OF_RANGE - Out of range.
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* Set the type and mode of Logging Counter.
|
|
*/
|
|
rtk_api_ret_t rtk_stat_logging_counterCfg_set(rtk_uint32 idx, rtk_logging_counter_mode_t mode, rtk_logging_counter_type_t type)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if(idx > RTL8367C_MIB_MAX_LOG_CNT_IDX)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
if((idx % 2) == 1)
|
|
return RT_ERR_INPUT;
|
|
|
|
if(mode >= LOGGING_MODE_END)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
if(type >= LOGGING_TYPE_END)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
if((retVal = rtl8367c_setAsicMIBsLoggingType((idx / 2), (rtk_uint32)type)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_setAsicMIBsLoggingMode((idx / 2), (rtk_uint32)mode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_stat_logging_counterCfg_get
|
|
* Description:
|
|
* Get the type and mode of Logging Counter
|
|
* Input:
|
|
* idx - The index of Logging Counter. Should be even number only.(0,2,4,6,8.....30)
|
|
* Output:
|
|
* pMode - 32 bits or 64 bits mode
|
|
* pType - Packet counter or byte counter
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_OUT_OF_RANGE - Out of range.
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_NULL_POINTER - NULL Pointer
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* Get the type and mode of Logging Counter.
|
|
*/
|
|
rtk_api_ret_t rtk_stat_logging_counterCfg_get(rtk_uint32 idx, rtk_logging_counter_mode_t *pMode, rtk_logging_counter_type_t *pType)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
rtk_uint32 type, mode;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if(idx > RTL8367C_MIB_MAX_LOG_CNT_IDX)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
if((idx % 2) == 1)
|
|
return RT_ERR_INPUT;
|
|
|
|
if(pMode == NULL)
|
|
return RT_ERR_NULL_POINTER;
|
|
|
|
if(pType == NULL)
|
|
return RT_ERR_NULL_POINTER;
|
|
|
|
if((retVal = rtl8367c_getAsicMIBsLoggingType((idx / 2), &type)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
if((retVal = rtl8367c_getAsicMIBsLoggingMode((idx / 2), &mode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
*pMode = (rtk_logging_counter_mode_t)mode;
|
|
*pType = (rtk_logging_counter_type_t)type;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
|
|
/* Function Name:
|
|
* rtk_stat_logging_counter_reset
|
|
* Description:
|
|
* Reset Logging Counter
|
|
* Input:
|
|
* idx - The index of Logging Counter. (0~31)
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_OUT_OF_RANGE - Out of range.
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* Reset Logging Counter.
|
|
*/
|
|
rtk_api_ret_t rtk_stat_logging_counter_reset(rtk_uint32 idx)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if(idx > RTL8367C_MIB_MAX_LOG_CNT_IDX)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
if((retVal = rtl8367c_setAsicMIBsResetLoggingCounter(idx)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_stat_logging_counter_get
|
|
* Description:
|
|
* Get Logging Counter
|
|
* Input:
|
|
* idx - The index of Logging Counter. (0~31)
|
|
* Output:
|
|
* pCnt - Logging counter value
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_OUT_OF_RANGE - Out of range.
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* Get Logging Counter.
|
|
*/
|
|
rtk_api_ret_t rtk_stat_logging_counter_get(rtk_uint32 idx, rtk_uint32 *pCnt)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if(NULL == pCnt)
|
|
return RT_ERR_NULL_POINTER;
|
|
|
|
if(idx > RTL8367C_MIB_MAX_LOG_CNT_IDX)
|
|
return RT_ERR_OUT_OF_RANGE;
|
|
|
|
if((retVal = rtl8367c_getAsicMIBsLogCounter(idx, pCnt)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_stat_lengthMode_set
|
|
* Description:
|
|
* Set Legnth mode.
|
|
* Input:
|
|
* txMode - The length counting mode
|
|
* rxMode - The length counting mode
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_INPUT - Out of range.
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
*
|
|
*/
|
|
rtk_api_ret_t rtk_stat_lengthMode_set(rtk_stat_lengthMode_t txMode, rtk_stat_lengthMode_t rxMode)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if(txMode >= LENGTH_MODE_END)
|
|
return RT_ERR_INPUT;
|
|
|
|
if(rxMode >= LENGTH_MODE_END)
|
|
return RT_ERR_INPUT;
|
|
|
|
if((retVal = rtl8367c_setAsicMIBsLength((rtk_uint32)txMode, (rtk_uint32)rxMode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|
|
/* Function Name:
|
|
* rtk_stat_lengthMode_get
|
|
* Description:
|
|
* Get Length mode.
|
|
* Input:
|
|
* None.
|
|
* Output:
|
|
* pTxMode - The length counting mode
|
|
* pRxMode - The length counting mode
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_INPUT - Out of range.
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
*/
|
|
rtk_api_ret_t rtk_stat_lengthMode_get(rtk_stat_lengthMode_t *pTxMode, rtk_stat_lengthMode_t *pRxMode)
|
|
{
|
|
rtk_api_ret_t retVal;
|
|
|
|
/* Check initialization state */
|
|
RTK_CHK_INIT_STATE();
|
|
|
|
if(NULL == pTxMode)
|
|
return RT_ERR_NULL_POINTER;
|
|
|
|
if(NULL == pRxMode)
|
|
return RT_ERR_NULL_POINTER;
|
|
|
|
if((retVal = rtl8367c_getAsicMIBsLength((rtk_uint32 *)pTxMode, (rtk_uint32 *)pRxMode)) != RT_ERR_OK)
|
|
return retVal;
|
|
|
|
return RT_ERR_OK;
|
|
}
|
|
|