123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626 |
- /*
- * 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 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;
- }
|