diff options
Diffstat (limited to 'target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/stat.c')
-rw-r--r-- | target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/stat.c | 626 |
1 files changed, 0 insertions, 626 deletions
diff --git a/target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/stat.c b/target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/stat.c deleted file mode 100644 index 3a328b0ca4..0000000000 --- a/target/linux/mediatek/files-5.4/drivers/net/phy/rtk/rtl8367c/stat.c +++ /dev/null @@ -1,626 +0,0 @@ -/* - * 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, 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,DOT1D_TP_LEARNED_ENTRY_DISCARDS_INDEX, &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 retrived 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 Legnth 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; -} - |