#ifndef _COMMON_UIF_H
#define _COMMON_UIF_H
/*
I M P O R T A N T
BEFORE YOU MODIFY THESE STRUCTS:
please make sure that DIAG was updated accordingly.
windiag\ediag should be checked to compile and run correctly
modification is in file: tcl_driver.c, function: driver_init_stats_object, macros: REGISTER_STAT_FIELD
*/
/*******************************************************************************
* Hardware statistics structure for B10_IOC_GET_L2_CHIP_STATISTICS
******************************************************************************/
typedef struct _b10_l2_chip_statistics_t
{
u64_t ver_num;
#define L2_CHIP_STATISTICS_VER_NUM_1 1
#define L2_CHIP_STATISTICS_VER_NUM_2 2
#define L2_CHIP_STATISTICS_VER_NUM_3 3
u64_t IfHCInOctets;
u64_t IfHCInBadOctets;
u64_t IfHCOutOctets;
u64_t IfHCOutBadOctets;
u64_t IfHCOutPkts ;
u64_t IfHCInPkts ;
u64_t IfHCInUcastPkts;
u64_t IfHCInMulticastPkts;
u64_t IfHCInBroadcastPkts;
u64_t IfHCOutUcastPkts;
u64_t IfHCOutMulticastPkts;
u64_t IfHCOutBroadcastPkts;
u64_t IfHCInUcastOctets ;
u64_t IfHCInMulticastOctets ;
u64_t IfHCInBroadcastOctets ;
u64_t IfHCOutUcastOctets ;
u64_t IfHCOutMulticastOctets ;
u64_t IfHCOutBroadcastOctets ;
u64_t IfHCOutDiscards ;
u64_t IfHCInFalseCarrierErrors ;
u64_t Dot3StatsInternalMacTransmitErrors;
u64_t Dot3StatsCarrierSenseErrors;
u64_t Dot3StatsFCSErrors;
u64_t Dot3StatsAlignmentErrors;
u64_t Dot3StatsSingleCollisionFrames;
u64_t Dot3StatsMultipleCollisionFrames;
u64_t Dot3StatsDeferredTransmissions;
u64_t Dot3StatsExcessiveCollisions;
u64_t Dot3StatsLateCollisions;
u64_t EtherStatsCollisions;
u64_t EtherStatsFragments;
u64_t EtherStatsJabbers;
u64_t EtherStatsUndersizePkts;
u64_t EtherStatsOverrsizePkts;
u64_t EtherStatsPktsTx64Octets;
u64_t EtherStatsPktsTx65Octetsto127Octets;
u64_t EtherStatsPktsTx128Octetsto255Octets;
u64_t EtherStatsPktsTx256Octetsto511Octets;
u64_t EtherStatsPktsTx512Octetsto1023Octets;
u64_t EtherStatsPktsTx1024Octetsto1522Octets;
u64_t EtherStatsPktsTxOver1522Octets;
u64_t XonPauseFramesReceived;
u64_t XoffPauseFramesReceived;
u64_t OutXonSent;
u64_t OutXoffSent;
u64_t FlowControlDone;
u64_t MacControlFramesReceived;
u64_t XoffStateEntered;
u64_t IfInFramesL2FilterDiscards;
u64_t IfInTTL0Discards ;
u64_t IfInxxOverflowDiscards ;
u64_t IfInMBUFDiscards;
u64_t IfInErrors;
u64_t IfInErrorsOctets;
u64_t IfInNoBrbBuffer;
//u64_t Reserved0 ;
//u64_t Reserved1 ;
//u64_t Reserved2 ;
//u64_t Reserved3 ;
// Nig statistics
u64_t Nig_brb_packet ;
u64_t Nig_brb_truncate ;
u64_t Nig_flow_ctrl_discard ;
u64_t Nig_flow_ctrl_octets ;
u64_t Nig_flow_ctrl_packet ;
u64_t Nig_mng_discard ;
u64_t Nig_mng_octet_inp ;
u64_t Nig_mng_octet_out ;
u64_t Nig_mng_packet_inp ;
u64_t Nig_mng_packet_out ;
u64_t Nig_pbf_octets ;
u64_t Nig_pbf_packet ;
u64_t Nig_safc_inp ;
} b10_l2_chip_statistics_t;
typedef struct _b10_l2_chip_statistics_v2_t
{
struct _b10_l2_chip_statistics_t v1;
struct _v2
{
u64_t Tx_lpi_count; // This counter counts the number of timers the debounced version of EEE link idle is asserted�
} v2;
} b10_l2_chip_statistics_v2_t;
typedef struct _b10_l2_chip_statistics_v3_t
{
struct _b10_l2_chip_statistics_v2_t v2;
struct _v3
{
u64_t coalesced_pkts /* the number of packets coalesced in all aggregations */;
u64_t coalesced_bytes /* the number of bytes coalesced in all aggregations */;
u64_t coalesced_events /* the number of aggregations */;
u64_t coalesced_aborts /* the number of exception which avoid aggregation */;
} v3;
} b10_l2_chip_statistics_v3_t;
/*******************************************************************************
* Hardware statistics structure for B10_IOC_GET_L4_CHIP_STATISTICS
******************************************************************************/
typedef struct _b10_l4_chip_statistics_t
{
u64_t ver_num;
#define L4_CHIP_STATISTISTCS_VER_NUM 1
u64_t NoTxCqes ;
u64_t InTCP4Segments ;
u64_t OutTCP4Segments ;
u64_t RetransmittedTCP4Segments ;
u64_t InTCP4Errors ;
u64_t InIP4Receives ;
u64_t InIP4HeaderErrors ;
u64_t InIP4Discards ;
u64_t InIP4Delivers ;
u64_t InIP4Octets ;
u64_t OutIP4Octets ;
u64_t InIP4TruncatedPackets ;
u64_t InTCP6Segments ;
u64_t OutTCP6Segments ;
u64_t RetransmittedTCP6Segments ;
u64_t InTCP6Errors ;
u64_t InIP6Receives ;
u64_t InIP6HeaderErrors ;
u64_t InIP6Discards ;
u64_t InIP6Delivers ;
u64_t InIP6Octets ;
u64_t OutIP6Octets ;
u64_t InIP6TruncatedPackets ;
//u64_t Reserved0 ;
//u64_t Reserved1 ;
//u64_t Reserved2 ;
//u64_t Reserved3 ;
} b10_l4_chip_statistics_t;
/*******************************************************************************
* Driver statistics structure for B10_IOC_GET_L2_DRIVER_STATISTICS
******************************************************************************/
typedef struct _b10_l2_driver_statistics_t
{
u64_t ver_num;
#define L2_DRIVER_STATISTISTCS_VER_NUM 1
u64_t RxIPv4FragCount;
u64_t RxIpCsErrorCount;
u64_t RxTcpCsErrorCount;
u64_t RxLlcSnapCount;
u64_t RxPhyErrorCount;
u64_t RxIpv6ExtCount;
u64_t TxNoL2Bd;
u64_t TxNoSqWqe;
u64_t TxL2AssemblyBufUse;
//u64_t Reserved0 ;
//u64_t Reserved1 ;
//u64_t Reserved2 ;
//u64_t Reserved3 ;
} b10_l2_driver_statistics_t;
/*******************************************************************************
* Driver statistics structure for B10_IOC_GET_L4_DRIVER_STATISTICS
******************************************************************************/
typedef struct _b10_l4_driver_statistics_t
{
u64_t ver_num;
#define L4_DRIVER_STATISTISTCS_VER_NUM 1
u64_t CurrentlyIpv4Established ;
u64_t OutIpv4Resets ;
u64_t OutIpv4Fin ;
u64_t InIpv4Reset ;
u64_t InIpv4Fin ;
u64_t CurrentlyIpv6Established ;
u64_t OutIpv6Resets ;
u64_t OutIpv6Fin ;
u64_t InIpv6Reset ;
u64_t InIpv6Fin ;
u64_t RxIndicateReturnPendingCnt;
u64_t RxIndicateReturnDoneCnt;
u64_t RxActiveGenBufCnt;
u64_t TxNoL4Bd;
u64_t TxL4AssemblyBufUse ;
//u64_t Reserved0 ;
//u64_t Reserved1 ;
//u64_t Reserved2 ;
//u64_t Reserved3 ;
} b10_l4_driver_statistics_t;
/*******************************************************************************
* Driver statistics structure for B10_IOC_GET_DRIVER_STATISTICS.
******************************************************************************/
typedef struct _b10_driver_statistics_t
{
u64_t ver_num;
#define DRIVER_STATISTISTCS_VER_NUM 1
u64_t tx_lso_frames; // supported
u64_t tx_aborted; // supported
u64_t tx_no_bd;
u64_t tx_no_desc;
u64_t tx_no_coalesce_buf; // supported
u64_t tx_no_map_reg;
u64_t rx_aborted; // supported
u64_t rx_err;
u64_t rx_crc;
u64_t rx_phy_err;
u64_t rx_alignment;
u64_t rx_short_packet;
u64_t rx_giant_packet;
//u64_t Reserved0 ;
//u64_t Reserved1 ;
//u64_t Reserved2 ;
//u64_t Reserved3 ;
} b10_driver_statistics_t;
#define DCBX_CONFIG_INV_VALUE (0xFFFFFFFF)
enum
{
OVERWRITE_SETTINGS_DISABLE = 0,
OVERWRITE_SETTINGS_ENABLE = 1,
OVERWRITE_SETTINGS_INVALID = DCBX_CONFIG_INV_VALUE
};
/*******************************************************************************
* LLDP protocol registry configuration parameters.
******************************************************************************/
typedef struct _config_lldp_params_t
{
u32_t overwrite_settings;
u32_t msg_tx_hold;
u32_t msg_fast_tx;
u32_t tx_credit_max;
u32_t msg_tx_interval;
u32_t tx_fast;
}config_lldp_params_t;
/*******************************************************************************
* LLDP structure for B10_IOC_GET_LLDP_PARAMS.
******************************************************************************/
typedef struct _b10_lldp_params_get_t
{
u32_t ver_num;
#define LLDP_PARAMS_VER_NUM 2
config_lldp_params_t config_lldp_params;
// The reserved field should follow in case the struct above will increase
u32_t _reserved[50];
u32_t admin_status;
#define LLDP_TX_ONLY 0x01
#define LLDP_RX_ONLY 0x02
#define LLDP_TX_RX 0x03
#define LLDP_DISABLED 0x04
u32_t remote_chassis_id[65];
u32_t remote_port_id[65];
u32_t local_chassis_id[2];
u32_t local_port_id[2];
}b10_lldp_params_get_t;
/*******************************************************************************
* DCBX protocol registry configuration parameters.
******************************************************************************/
typedef struct _admin_priority_app_table_t
{
u32_t valid;
u32_t priority;
#define INVALID_TRAFFIC_TYPE_PRIORITY (0xFFFFFFFF)
u32_t traffic_type;
#define TRAFFIC_TYPE_ETH 0
#define TRAFFIC_TYPE_PORT 1
u32_t app_id;
}admin_priority_app_table_t;
typedef struct _config_dcbx_params_t
{
u32_t dcb_enable;
u32_t admin_dcbx_enable;
// "admin_dcbx_enable" and "dcb_enable" are stand alone registry keys(if present
// will always be valid and not ignored), for all other DCBX registry set only
// if the entire DCBX registry set is present and differ from 0xFFFFFFFF (invalid
// value) the DCBX registry parameters are taken, otherwise the registry key set
// is ignored.)(Expect "admin_dcbx_enable" and "dcb_enable")
u32_t overwrite_settings;
u32_t admin_dcbx_version;
#define ADMIN_DCBX_VERSION_CEE 0
#define ADMIN_DCBX_VERSION_IEEE 1
u32_t admin_ets_enable;
u32_t admin_pfc_enable;
u32_t admin_tc_supported_tx_enable;
u32_t admin_ets_configuration_tx_enable;
u32_t admin_ets_recommendation_tx_enable;
u32_t admin_pfc_tx_enable;
u32_t admin_application_priority_tx_enable;
u32_t admin_ets_willing;
u32_t admin_ets_reco_valid;
u32_t admin_pfc_willing;
u32_t admin_app_priority_willing;
u32_t admin_configuration_bw_percentage[8];
u32_t admin_configuration_ets_pg[8];
u32_t admin_recommendation_bw_percentage[8];
u32_t admin_recommendation_ets_pg[8];
u32_t admin_pfc_bitmap;
admin_priority_app_table_t admin_priority_app_table[4];
u32_t admin_default_priority;
}config_dcbx_params_t;
/*******************************************************************************
* DCBX structure for B10_IOC_GET_DCBX_PARAMS.
******************************************************************************/
typedef struct _b10_dcbx_params_get_t
{
u32_t ver_num;
#define DCBX_PARAMS_VER_NUM 4
config_dcbx_params_t config_dcbx_params;
// The reserved field should follow in case the struct above will increase
u32_t _reserved[49];
u32_t dcb_current_oper_state_bitmap;
#define DCBX_CURRENT_STATE_IS_SYNC (1 << 0)
#define PFC_IS_CURRENTLY_OPERATIONAL (1 << 1)
#define ETS_IS_CURRENTLY_OPERATIONAL (1 << 2)
#define PRIORITY_TAGGING_IS_CURRENTLY_OPERATIONAL (1 << 3)
#define DRIVER_CONFIGURED_BY_OS_QOS (1 << 4)
#define DRIVER_CONFIGURED_BY_OS_QOS_TO_WILLING (1 << 5)
u32_t local_tc_supported;
u32_t local_pfc_caps;
u32_t remote_tc_supported;
u32_t remote_pfc_cap;
u32_t remote_ets_willing;
u32_t remote_ets_reco_valid;
u32_t remote_pfc_willing;
u32_t remote_app_priority_willing;
u32_t remote_configuration_bw_percentage[8];
u32_t remote_configuration_ets_pg[8];
u32_t remote_recommendation_bw_percentage[8];
u32_t remote_recommendation_ets_pg[8];
u32_t remote_pfc_bitmap;
admin_priority_app_table_t remote_priority_app_table[16];
u32_t local_ets_enable;
u32_t local_pfc_enable;
u32_t local_configuration_bw_percentage[8];
u32_t local_configuration_ets_pg[8];
u32_t local_pfc_bitmap;
admin_priority_app_table_t local_priority_app_table[16];
u32_t pfc_mismatch;
u32_t priority_app_mismatch;
u32_t dcbx_frames_sent;
u32_t dcbx_frames_received;
u64_t pfc_frames_sent;
u64_t pfc_frames_received;
}b10_dcbx_params_get_t;
/*******************************************************************************
* Transceiver Data B10_IOC_GET_TRANSCEIVER_DATA
******************************************************************************/
typedef struct _b10_transceiver_data_t
{
u8_t ver_num;
#define TRANSCEIVER_DATA_VER_NUM 1
u8_t _pad[3];
// NOTE: All these strings are ASCII buffers without trailing NULL '\0'
u8_t vendor_name[16]; // ELINK_SFP_EEPROM_VENDOR_NAME_ADDR
u8_t model_num[16]; // ELINK_SFP_EEPROM_PART_NO_ADDR
u8_t serial_num[16]; // ELINK_SFP_EEPROM_SERIAL_ADDR
u8_t revision_num[4]; // ELINK_SFP_EEPROM_REVISION_ADDR
u8_t mfg_date[6]; // ELINK_SFP_EEPROM_DATE_ADDR
u8_t _pad_[2];
u32_t reserved[40];
} b10_transceiver_data_t;
#endif // _COMMON_UIF_H