blob: b4b59ffd202031ead9a5fbb9205985932920d60f [file] [log] [blame]
/*
* Copyright (c) 2012, 2017-2018, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/**
* @defgroup fal_mib FAL_MIB
* @{
*/
#ifndef _FAL_MIB_H
#define _FAL_MIB_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "sw.h"
#include "fal/fal_type.h"
/**@brief This structure defines the mib infomation.
*/
typedef struct
{
a_uint32_t RxBroad;
a_uint32_t RxPause;
a_uint32_t RxMulti;
a_uint32_t RxFcsErr;
a_uint32_t RxAllignErr;
a_uint32_t RxRunt;
a_uint32_t RxFragment;
a_uint32_t Rx64Byte;
a_uint32_t Rx128Byte;
a_uint32_t Rx256Byte;
a_uint32_t Rx512Byte;
a_uint32_t Rx1024Byte;
a_uint32_t Rx1518Byte;
a_uint32_t RxMaxByte;
a_uint32_t RxTooLong;
a_uint32_t RxGoodByte_lo; /**< low 32 bits of RxGoodByte statistc item */
a_uint32_t RxGoodByte_hi; /**< high 32 bits of RxGoodByte statistc item*/
a_uint32_t RxBadByte_lo; /**< low 32 bits of RxBadByte statistc item */
a_uint32_t RxBadByte_hi; /**< high 32 bits of RxBadByte statistc item */
a_uint32_t RxOverFlow; /* no this counter for Hawkeye*/
a_uint32_t Filtered; /*no this counter for Hawkeye*/
a_uint32_t TxBroad;
a_uint32_t TxPause;
a_uint32_t TxMulti;
a_uint32_t TxUnderRun;
a_uint32_t Tx64Byte;
a_uint32_t Tx128Byte;
a_uint32_t Tx256Byte;
a_uint32_t Tx512Byte;
a_uint32_t Tx1024Byte;
a_uint32_t Tx1518Byte;
a_uint32_t TxMaxByte;
a_uint32_t TxOverSize; /*no this counter for Hawkeye*/
a_uint32_t TxByte_lo; /**< low 32 bits of TxByte statistc item */
a_uint32_t TxByte_hi; /**< high 32 bits of TxByte statistc item */
a_uint32_t TxCollision;
a_uint32_t TxAbortCol;
a_uint32_t TxMultiCol;
a_uint32_t TxSingalCol;
a_uint32_t TxExcDefer;
a_uint32_t TxDefer;
a_uint32_t TxLateCol;
a_uint32_t RxUniCast;
a_uint32_t TxUniCast;
a_uint32_t RxJumboFcsErr; /* add for Hawkeye*/
a_uint32_t RxJumboAligenErr; /* add for Hawkeye*/
a_uint32_t Rx14To63; /*add for ipq60xx lpbk port*/
a_uint32_t RxTooLongByte_lo; /*add for ipq60xx lpbk port*/
a_uint32_t RxTooLongByte_hi; /*add for ipq60xx lpbk port*/
a_uint32_t RxRuntByte_lo; /*add for ipq60xx lpbk port*/
a_uint32_t RxRuntByte_hi; /*add for ipq60xx lpbk port*/
} fal_mib_info_t;
/*define structure for software with 64bit*/
typedef struct
{
a_uint64_t RxBroad;
a_uint64_t RxPause;
a_uint64_t RxMulti;
a_uint64_t RxFcsErr;
a_uint64_t RxAllignErr;
a_uint64_t RxRunt;
a_uint64_t RxFragment;
a_uint64_t Rx64Byte;
a_uint64_t Rx128Byte;
a_uint64_t Rx256Byte;
a_uint64_t Rx512Byte;
a_uint64_t Rx1024Byte;
a_uint64_t Rx1518Byte;
a_uint64_t RxMaxByte;
a_uint64_t RxTooLong;
a_uint64_t RxGoodByte;
a_uint64_t RxBadByte;
a_uint64_t RxOverFlow; /* no this counter for Hawkeye*/
a_uint64_t Filtered; /*no this counter for Hawkeye*/
a_uint64_t TxBroad;
a_uint64_t TxPause;
a_uint64_t TxMulti;
a_uint64_t TxUnderRun;
a_uint64_t Tx64Byte;
a_uint64_t Tx128Byte;
a_uint64_t Tx256Byte;
a_uint64_t Tx512Byte;
a_uint64_t Tx1024Byte;
a_uint64_t Tx1518Byte;
a_uint64_t TxMaxByte;
a_uint64_t TxOverSize; /*no this counter for Hawkeye*/
a_uint64_t TxByte;
a_uint64_t TxCollision;
a_uint64_t TxAbortCol;
a_uint64_t TxMultiCol;
a_uint64_t TxSingalCol;
a_uint64_t TxExcDefer;
a_uint64_t TxDefer;
a_uint64_t TxLateCol;
a_uint64_t RxUniCast;
a_uint64_t TxUniCast;
a_uint64_t RxJumboFcsErr; /* add for Hawkeye*/
a_uint64_t RxJumboAligenErr; /* add for Hawkeye*/
a_uint64_t Rx14To63; /*add for ipq60xx lpbk port*/
a_uint64_t RxTooLongByte; /*add for ipq60xx lpbk port*/
a_uint64_t RxRuntByte; /*add for ipq60xx lpbk port*/
} fal_mib_counter_t;
enum
{
/*mib*/
FUNC_GET_MIB_INFO = 0,
FUNC_GET_RX_MIB_INFO,
FUNC_GET_TX_MIB_INFO,
FUNC_GET_XGMIB_INFO,
FUNC_GET_TX_XGMIB_INFO,
FUNC_GET_RX_XGMIB_INFO,
FUNC_MIB_STATUS_SET,
FUNC_MIB_STATUS_GET,
FUNC_MIB_PORT_FLUSH_COUNTERS,
FUNC_MIB_CPUKEEP_SET,
FUNC_MIB_CPUKEEP_GET
};
typedef struct
{
a_uint64_t RxFrame;
a_uint64_t RxByte;
a_uint64_t RxByteGood;
a_uint64_t RxBroadGood;
a_uint64_t RxMultiGood;
a_uint64_t RxFcsErr;
a_uint64_t RxRuntErr ;
a_uint64_t RxJabberError;
a_uint64_t RxUndersizeGood;
a_uint64_t RxOversizeGood;
a_uint64_t Rx64Byte;
a_uint64_t Rx128Byte;
a_uint64_t Rx256Byte;
a_uint64_t Rx512Byte;
a_uint64_t Rx1024Byte;
a_uint64_t RxMaxByte;
a_uint64_t RxUnicastGood;
a_uint64_t RxLengthError;
a_uint64_t RxOutOfRangeError;
a_uint64_t RxPause;
a_uint64_t RxOverFlow;
a_uint64_t RxVLANFrameGoodBad;
a_uint64_t RxWatchDogError;
a_uint64_t RxLPIUsec;
a_uint64_t RxLPITran;
a_uint64_t RxDropFrameGoodBad;
a_uint64_t RxDropByteGoodBad;
a_uint64_t TxByte;
a_uint64_t TxFrame;
a_uint64_t TxBroadGood;
a_uint64_t TxMultiGood;
a_uint64_t Tx64Byte;
a_uint64_t Tx128Byte;
a_uint64_t Tx256Byte;
a_uint64_t Tx512Byte;
a_uint64_t Tx1024Byte;
a_uint64_t TxMaxByte;
a_uint64_t TxUnicast;
a_uint64_t TxMulti;
a_uint64_t TxBroad;
a_uint64_t TxUnderFlowError;
a_uint64_t TxByteGood;
a_uint64_t TxFrameGood;
a_uint64_t TxPause;
a_uint64_t TxVLANFrameGood;
a_uint64_t TxLPIUsec;
a_uint64_t TxLPITran;
} fal_xgmib_info_t;
sw_error_t
fal_get_xgmib_info(a_uint32_t dev_id, fal_port_t port_id,
fal_xgmib_info_t * mib_info );
sw_error_t
fal_get_rx_xgmib_info(a_uint32_t dev_id, fal_port_t port_id,
fal_xgmib_info_t * mib_info );
sw_error_t
fal_get_tx_xgmib_info(a_uint32_t dev_id, fal_port_t port_id,
fal_xgmib_info_t * mib_info );
sw_error_t
fal_get_mib_info(a_uint32_t dev_id, fal_port_t port_id,
fal_mib_info_t * mib_info );
sw_error_t
fal_get_rx_mib_info(a_uint32_t dev_id, fal_port_t port_id,
fal_mib_info_t * mib_info );
sw_error_t
fal_get_tx_mib_info(a_uint32_t dev_id, fal_port_t port_id,
fal_mib_info_t * mib_info );
sw_error_t
fal_mib_status_set(a_uint32_t dev_id, a_bool_t enable);
sw_error_t
fal_mib_status_get(a_uint32_t dev_id, a_bool_t * enable);
sw_error_t
fal_mib_port_flush_counters(a_uint32_t dev_id, fal_port_t port_id);
sw_error_t
fal_mib_cpukeep_set(a_uint32_t dev_id, a_bool_t enable);
sw_error_t
fal_mib_cpukeep_get(a_uint32_t dev_id, a_bool_t * enable);
sw_error_t
fal_mib_counter_alloc(a_uint32_t dev_id, a_uint64_t **p_mibcounter);
sw_error_t
fal_mib_counter_get(a_uint32_t dev_id, fal_port_t port_id,
fal_mib_counter_t *mib_counter);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _FAL_MIB_H */
/**
* @}
*/