#ifndef _LM_STATS_H
#define _LM_STATS_H
#include "common_uif.h"
#include "mac_stx.h"
struct _lm_dcbx_stat;
#define DMAE_SGL_STATS_NUM_OF_EMAC_COMMANDS 4
#define DMAE_SGL_STATS_NUM_OF_BIGMAC_COMMANDS 3
#define DMAE_SGL_STATS_NUM_OF_MSTAT_COMMANDS 3
#define LM_STATS_FW_DONE_FLAG 0xffffffff
#define MAX_STATS_TIMER_WAKEUP_NO_COMPLETION 50
#define MAX_STATS_TIMER_WAKEUP_COMP_NOT_HANDLED 600
#define HAS_MSTAT(_pdev) CHIP_IS_E3(_pdev)
typedef enum
{
STATS_MACS_IDX_CURRENT = 0,
STATS_MACS_IDX_TOTAL = 1,
STATS_MACS_IDX_MAX = 2
} stats_macs_idx_t;
#define STATS_IP_4_IDX 0
#define STATS_IP_6_IDX 1
#define STATS_IP_IDX_MAX 2
#define REGPAIR_TO_U64( val_64, val_regpair ) val_64 = ((u64_t)(mm_le32_to_cpu(val_regpair.hi))<<32) + mm_le32_to_cpu(val_regpair.lo) ;
#define LM_STATS_HW_GET_MACS_U64(_pdev, field_name) ( _pdev->vars.stats.stats_mirror.stats_hw.macs[STATS_MACS_IDX_TOTAL].field_name )
#define LM_STATS_FLAG_XSTORM 0x0001
#define LM_STATS_FLAG_TSTORM 0x0002
#define LM_STATS_FLAG_USTORM 0x0020
#define LM_STATS_FLAG_CSTORM 0x0100
#define LM_STATS_FLAGS_ALL (LM_STATS_FLAG_XSTORM | LM_STATS_FLAG_TSTORM | LM_STATS_FLAG_USTORM | LM_STATS_FLAG_CSTORM )
#define LM_STATS_REGPAIR_CHECK_DONE(done_regpair) (( LM_STATS_FW_DONE_FLAG == done_regpair.lo ) && \
( LM_STATS_FW_DONE_FLAG == done_regpair.hi ))
#define LM_STATS_VERIFY_COUNTER(_pdev, _counter ) ( _pdev->vars.stats.stats_collect.stats_fw.drv_counter == mm_le16_to_cpu(pdev->vars.stats.stats_collect.stats_fw._counter) )
#define LM_STATS_REGPAIR_CLEAR_DONE(done_regpair) done_regpair.lo = done_regpair.hi = 0 ;
#define LM_STATS_DO_ASSIGN(flag_done, flag_assigned, flag_type) ( 0 == GET_FLAGS(flag_assigned,flag_type) && \
0 != GET_FLAGS(flag_done,flag_type) )
#define LM_STATS_DO_ASSIGN_ANY(flag_done, flag_assigned) ( LM_STATS_DO_ASSIGN(flag_done,flag_assigned,LM_STATS_FLAG_XSTORM) || \
LM_STATS_DO_ASSIGN(flag_done,flag_assigned,LM_STATS_FLAG_TSTORM) || \
LM_STATS_DO_ASSIGN(flag_done,flag_assigned,LM_STATS_FLAG_USTORM) || \
LM_STATS_DO_ASSIGN(flag_done,flag_assigned,LM_STATS_FLAG_CSTORM) )
#define LM_STATS_CNT_ID(_pdev) (IS_VFDEV(_pdev) ? (_pdev)->params.base_fw_stats_id : FUNC_ID(_pdev))
void lm_stats_on_timer ( struct _lm_device_t* pdev) ;
lm_status_t lm_stats_dmae ( struct _lm_device_t* pdev) ;
lm_status_t lm_stats_hw_setup ( struct _lm_device_t* pdev) ;
void lm_stats_fw_setup ( struct _lm_device_t* pdev) ;
void lm_stats_fw_reset ( struct _lm_device_t* pdev) ;
lm_status_t lm_stats_alloc_fw_resc (struct _lm_device_t *pdev);
lm_status_t lm_stats_alloc_resc( struct _lm_device_t* pdev) ;
lm_status_t lm_stats_on_link_update( struct _lm_device_t *pdev, const u8_t b_is_link_up );
void lm_stats_fw_assign ( struct _lm_device_t* pdev, IN u32_t stats_flags_done, OUT u32_t* ptr_stats_flags_assigned ) ;
#ifdef VF_INVOLVED
void lm_pf_stats_vf_fw_assign(struct _lm_device_t *pdev, u32_t stats_flags_done, u32_t* ptr_stats_flags_assigned);
#endif
void lm_stats_hw_assign ( struct _lm_device_t* pdev ) ;
void lm_stats_fw_check_update_done( struct _lm_device_t *pdev, OUT u32_t* ptr_stats_flags_done ) ;
lm_status_t lm_stats_fw_complete( struct _lm_device_t *pdev ) ;
void lm_stats_mgmt_assign( IN struct _lm_device_t* pdev ) ;
lm_status_t lm_stats_drv_info_to_mfw_assign( struct _lm_device_t *pdev, const enum drv_info_opcode drv_info_op );
void lm_stats_get_dcb_stats ( IN struct _lm_device_t* pdev, OUT struct _lm_dcbx_stat *stats ) ;
void lm_stats_get_driver_stats ( IN struct _lm_device_t* pdev, OUT b10_driver_statistics_t *stats ) ;
void lm_stats_get_l2_driver_stats( IN struct _lm_device_t* pdev, OUT b10_l2_driver_statistics_t *stats ) ;
void lm_stats_get_l4_driver_stats( IN struct _lm_device_t* pdev, OUT b10_l4_driver_statistics_t *stats ) ;
void lm_stats_get_l2_chip_stats ( IN struct _lm_device_t* pdev, OUT void *stats, u8_t version ) ;
void lm_stats_get_l4_chip_stats ( IN struct _lm_device_t* pdev, OUT b10_l4_chip_statistics_t *stats ) ;
void lm_stats_hw_config_stats ( struct _lm_device_t* pdev, u8_t b_enabled ) ;
void lm_stats_fw_config_stats ( struct _lm_device_t* pdev, u8_t b_enabled ) ;
void lm_stats_init_port_part ( IN struct _lm_device_t* pdev );
void lm_stats_init_func_part ( IN struct _lm_device_t* pdev );
lm_status_t lm_stats_on_pmf_update( struct _lm_device_t* pdev, IN u8_t b_on ) ;
lm_status_t lm_stats_on_pmf_init( struct _lm_device_t* pdev ) ;
lm_status_t lm_stats_drv_info_to_mfw_event( struct _lm_device_t* pdev ) ;
#ifdef VF_INVOLVED
void lm_stats_prep_vf_fw_stats_req( struct _lm_device_t* pdev );
#endif
struct _stats_bmac1_query_t
{
struct
{
u64_t tx_gtpkt ;
u64_t tx_gtxpf ;
u64_t tx_gtfcs ;
u64_t tx_gtmca ;
u64_t tx_gtgca ;
u64_t tx_gtfrg ;
u64_t tx_gtovr ;
u64_t tx_gt64 ;
u64_t tx_gt127 ;
u64_t tx_gt255 ;
u64_t tx_gt511 ;
u64_t tx_gt1023 ;
u64_t tx_gt1518 ;
u64_t tx_gt2047 ;
u64_t tx_gt4095 ;
u64_t tx_gt9216 ;
u64_t tx_gt16383 ;
u64_t tx_gtmax ;
u64_t tx_gtufl ;
u64_t tx_gterr ;
u64_t tx_gtbyt ;
} stats_tx ;
struct
{
u64_t rx_gr64 ;
u64_t rx_gr127 ;
u64_t rx_gr255 ;
u64_t rx_gr511 ;
u64_t rx_gr1023 ;
u64_t rx_gr1518 ;
u64_t rx_gr2047 ;
u64_t rx_gr4095 ;
u64_t rx_gr9216 ;
u64_t rx_gr16383 ;
u64_t rx_grmax ;
u64_t rx_grpkt ;
u64_t rx_grfcs ;
u64_t rx_grmca ;
u64_t rx_grbca ;
u64_t rx_grxcf ;
u64_t rx_grxpf ;
u64_t rx_grxuo ;
u64_t rx_grjbr ;
u64_t rx_grovr ;
u64_t rx_grflr ;
u64_t rx_grmeg ;
u64_t rx_grmeb ;
u64_t rx_grbyt ;
u64_t rx_grund ;
u64_t rx_grfrg ;
u64_t rx_grerb ;
u64_t rx_grfre ;
u64_t rx_gripj ;
} stats_rx ;
};
struct _stats_bmac2_query_t
{
struct
{
u64_t tx_gtpkt ;
u64_t tx_gtxpf ;
u64_t tx_gtxpp ;
u64_t tx_gtfcs ;
u64_t tx_gtuca ;
u64_t tx_gtmca ;
u64_t tx_gtgca ;
u64_t tx_gtovr ;
u64_t tx_gtfrg ;
u64_t tx_itpkt ;
u64_t tx_gt64 ;
u64_t tx_gt127 ;
u64_t tx_gt255 ;
u64_t tx_gt511 ;
u64_t tx_gt1023 ;
u64_t tx_gt1518 ;
u64_t tx_gt2047 ;
u64_t tx_gt4095 ;
u64_t tx_gt9216 ;
u64_t tx_gt16383 ;
u64_t tx_gtmax ;
u64_t tx_gtufl ;
u64_t tx_gterr ;
u64_t tx_gtbyt ;
} stats_tx ;
struct
{
u64_t rx_gr64 ;
u64_t rx_gr127 ;
u64_t rx_gr255 ;
u64_t rx_gr511 ;
u64_t rx_gr1023 ;
u64_t rx_gr1518 ;
u64_t rx_gr2047 ;
u64_t rx_gr4095 ;
u64_t rx_gr9216 ;
u64_t rx_gr16383 ;
u64_t rx_grmax ;
u64_t rx_grpkt ;
u64_t rx_grfcs ;
u64_t rx_gruca ;
u64_t rx_grmca ;
u64_t rx_grbca ;
u64_t rx_grxpf ;
u64_t rx_grxpp ;
u64_t rx_grxuo ;
u64_t rx_grjbr ;
u64_t rx_grovr ;
u64_t rx_grxcf ;
u64_t rx_grflr ;
u64_t rx_grpok ;
u64_t rx_grmeg ;
u64_t rx_grmeb ;
u64_t rx_grbyt ;
u64_t rx_grund ;
u64_t rx_grfrg ;
u64_t rx_grerb ;
u64_t rx_grfre ;
u64_t rx_gripj ;
} stats_rx ;
};
struct _stats_emac_query_t
{
struct
{
u32_t rx_stat_ifhcinoctets ;
u32_t rx_stat_ifhcinbadoctets ;
u32_t rx_stat_etherstatsfragments ;
u32_t rx_stat_ifhcinucastpkts ;
u32_t rx_stat_ifhcinmulticastpkts ;
u32_t rx_stat_ifhcinbroadcastpkts ;
u32_t rx_stat_dot3statsfcserrors ;
u32_t rx_stat_dot3statsalignmenterrors ;
u32_t rx_stat_dot3statscarriersenseerrors ;
u32_t rx_stat_xonpauseframesreceived ;
u32_t rx_stat_xoffpauseframesreceived ;
u32_t rx_stat_maccontrolframesreceived ;
u32_t rx_stat_xoffstateentered ;
u32_t rx_stat_dot3statsframestoolong ;
u32_t rx_stat_etherstatsjabbers ;
u32_t rx_stat_etherstatsundersizepkts ;
u32_t rx_stat_etherstatspkts64octets ;
u32_t rx_stat_etherstatspkts65octetsto127octets ;
u32_t rx_stat_etherstatspkts128octetsto255octets ;
u32_t rx_stat_etherstatspkts256octetsto511octets ;
u32_t rx_stat_etherstatspkts512octetsto1023octets ;
u32_t rx_stat_etherstatspkts1024octetsto1522octets;
u32_t rx_stat_etherstatspktsover1522octets ;
} stats_rx ;
struct
{
u32_t rx_stat_falsecarriererrors ;
} stats_rx_err ;
struct
{
u32_t tx_stat_ifhcoutoctets ;
u32_t tx_stat_ifhcoutbadoctets ;
u32_t tx_stat_etherstatscollisions ;
u32_t tx_stat_outxonsent ;
u32_t tx_stat_outxoffsent ;
u32_t tx_stat_flowcontroldone ;
u32_t tx_stat_dot3statssinglecollisionframes ;
u32_t tx_stat_dot3statsmultiplecollisionframes ;
u32_t tx_stat_dot3statsdeferredtransmissions ;
u32_t tx_stat_dot3statsexcessivecollisions ;
u32_t tx_stat_dot3statslatecollisions ;
u32_t tx_stat_ifhcoutucastpkts ;
u32_t tx_stat_ifhcoutmulticastpkts ;
u32_t tx_stat_ifhcoutbroadcastpkts ;
u32_t tx_stat_etherstatspkts64octets ;
u32_t tx_stat_etherstatspkts65octetsto127octets ;
u32_t tx_stat_etherstatspkts128octetsto255octets ;
u32_t tx_stat_etherstatspkts256octetsto511octets ;
u32_t tx_stat_etherstatspkts512octetsto1023octets ;
u32_t tx_stat_etherstatspkts1024octetsto1522octet ;
u32_t tx_stat_etherstatspktsover1522octets ;
u32_t tx_stat_dot3statsinternalmactransmiterrors ;
} stats_tx ;
};
struct _stats_mstat_query_t
{
struct {
u64_t tx_gtxpok ;
u64_t tx_gtxpf ;
u64_t tx_gtxpp ;
u64_t tx_gtfcs ;
u64_t tx_gtuca ;
u64_t tx_gtmca ;
u64_t tx_gtgca ;
u64_t tx_gtpkt ;
u64_t tx_gt64 ;
u64_t tx_gt127 ;
u64_t tx_gt255 ;
u64_t tx_gt511 ;
u64_t tx_gt1023 ;
u64_t tx_gt1518 ;
u64_t tx_gt2047 ;
u64_t tx_gt4095 ;
u64_t tx_gt9216 ;
u64_t tx_gt16383 ;
u64_t tx_gtufl ;
u64_t tx_gterr ;
u64_t tx_gtbyt ;
u64_t tx_collisions;
u64_t tx_singlecollision;
u64_t tx_multiplecollisions;
u64_t tx_deferred;
u64_t tx_excessivecollisions;
u64_t tx_latecollisions;
}stats_tx;
struct{
u64_t rx_gr64 ;
u64_t rx_gr127 ;
u64_t rx_gr255 ;
u64_t rx_gr511 ;
u64_t rx_gr1023 ;
u64_t rx_gr1518 ;
u64_t rx_gr2047 ;
u64_t rx_gr4095 ;
u64_t rx_gr9216 ;
u64_t rx_gr16383 ;
u64_t rx_grpkt ;
u64_t rx_grfcs ;
u64_t rx_gruca ;
u64_t rx_grmca ;
u64_t rx_grbca ;
u64_t rx_grxpf ;
u64_t rx_grxpp ;
u64_t rx_grxuo ;
u64_t rx_grovr ;
u64_t rx_grxcf ;
u64_t rx_grflr ;
u64_t rx_grpok ;
u64_t rx_grbyt ;
u64_t rx_grund ;
u64_t rx_grfrg ;
u64_t rx_grerb ;
u64_t rx_grfre ;
u64_t rx_alignmenterrors;
u64_t rx_falsecarrier;
u64_t rx_llfcmsgcnt;
}stats_rx;
};
struct _stats_nig_query_t
{
u32_t brb_discard ;
u32_t brb_packet ;
u32_t brb_truncate ;
u32_t flow_ctrl_discard ;
u32_t flow_ctrl_octets ;
u32_t flow_ctrl_packet ;
u32_t mng_discard ;
u32_t mng_octet_inp ;
u32_t mng_octet_out ;
u32_t mng_packet_inp ;
u32_t mng_packet_out ;
u32_t pbf_octets ;
u32_t pbf_packet ;
u32_t safc_inp ;
};
typedef struct _stats_nig_ex_t
{
u64_t egress_mac_pkt0 ;
u64_t egress_mac_pkt1 ;
} stats_nig_ex_t ;
typedef struct _misc_stats_t
{
u64_t tx_lpi_count;
} misc_stats_t;
union _stats_bmac_query_t
{
struct _stats_bmac1_query_t bmac1_stats;
struct _stats_bmac2_query_t bmac2_stats;
};
typedef struct _lm_stats_hw_collect_t
{
union{
struct{
volatile struct _stats_emac_query_t* addr_emac_stats_query ;
volatile struct _stats_bmac1_query_t* addr_bmac1_stats_query ;
volatile struct _stats_bmac2_query_t* addr_bmac2_stats_query ;
} s;
volatile struct _stats_mstat_query_t* addr_mstat_stats_query ;
} u;
volatile struct _stats_nig_query_t* addr_nig_stats_query ;
void* non_emac_dmae_operation;
void* emac_dmae_operation;
struct _stats_nig_ex_t nig_ex_stats_query ;
u8_t b_is_link_up ;
u8_t b_collect_enabled ;
lm_address_t mac_stats_phys_addr;
lm_address_t bmac_stats_phys_addr;
lm_address_t nig_stats_phys_addr;
struct _misc_stats_t misc_stats_query;
}lm_stats_hw_collect_t;
typedef struct _lm_stats_drv_info_to_mfw_t
{
union
{
volatile eth_stats_info_t* eth_stats;
volatile fcoe_stats_info_t* fcoe_stats ;
volatile iscsi_stats_info_t* iscsi_stats ;
} addr;
lm_address_t drv_info_to_mfw_phys_addr;
} lm_stats_drv_info_to_mfw_t;
typedef enum {
LM_STATS_PORT_QUERY_IDX,
LM_STATS_PF_QUERY_IDX,
LM_STATS_FIRST_QUEUE_QUERY_IDX,
LM_STATS_TOE_IDX,
LM_STATS_FCOE_IDX,
LM_STATS_FIRST_VF_QUEUE_QUERY_IDX
} lm_stats_query_idx ;
typedef struct _lm_stats_fw_stats_req_t {
struct stats_query_header hdr;
struct stats_query_entry query[STATS_QUERY_CMD_COUNT];
} lm_stats_fw_stats_req_t;
typedef struct _lm_stats_fw_stats_data_t {
struct stats_counter storm_counters;
struct per_port_stats port;
struct per_pf_stats pf;
struct toe_stats_query toe;
struct fcoe_statistics_params fcoe;
struct per_queue_stats queue_stats;
} lm_stats_fw_stats_data_t;
typedef struct _lm_stats_fw_collect_t
{
u8_t fw_stats_num;
u8_t fw_static_stats_num;
u8_t pad[2];
void * fw_stats;
lm_address_t fw_stats_mapping;
lm_stats_fw_stats_req_t * fw_stats_req;
lm_address_t fw_stats_req_mapping;
u32_t fw_stats_req_sz;
lm_stats_fw_stats_data_t * fw_stats_data;
lm_address_t fw_stats_data_mapping;
u32_t fw_stats_data_sz;
struct sq_pending_command stats_sp_list_command;
u16_t drv_counter;
volatile u8_t b_completion_done ;
volatile u8_t b_ramrod_completed ;
volatile u8_t b_collect_enabled ;
u32_t timer_wakeup_no_completion_current ;
u32_t timer_wakeup_no_completion_total ;
u32_t timer_wakeup_no_completion_max ;
u32_t stats_ramrod_cnt ;
}lm_stats_fw_collect_t ;
typedef struct _lm_fcoe_stats_t
{
u64_t fcoe_tx_pkt_cnt ;
u64_t fcoe_tx_byte_cnt ;
u64_t fcp_tx_pkt_cnt ;
u64_t fcoe_rx_pkt_cnt ;
u64_t fcoe_rx_byte_cnt ;
u64_t fcoe_ver_cnt ;
u64_t fcoe_rx_drop_pkt_cnt_tstorm ;
u64_t fc_crc_cnt ;
u64_t eofa_del_cnt ;
u64_t miss_frame_cnt ;
u64_t seq_timeout_cnt ;
u64_t drop_seq_cnt ;
u64_t fcoe_rx_drop_pkt_cnt_ustorm ;
u64_t fcp_rx_pkt_cnt ;
}lm_fcoe_stats_t;
typedef struct _lm_stats_fw_t
{
struct
{
struct
{
u64_t total_sent_bytes ;
u64_t total_sent_pkts ;
u64_t unicast_pkts_sent ;
u64_t unicast_bytes_sent ;
u64_t multicast_bytes_sent ;
u64_t multicast_pkts_sent ;
u64_t broadcast_pkts_sent ;
u64_t broadcast_bytes_sent ;
u64_t error_drop_pkts ;
} client_statistics[LM_CLI_IDX_MAX] ;
} eth_xstorm_common ;
struct
{
struct
{
u64_t rcv_unicast_bytes ;
u64_t rcv_broadcast_bytes ;
u64_t rcv_multicast_bytes ;
u64_t rcv_error_bytes ;
u64_t checksum_discard ;
u64_t packets_too_big_discard ;
u64_t rcv_unicast_pkts ;
u64_t rcv_broadcast_pkts ;
u64_t rcv_multicast_pkts ;
u64_t no_buff_discard ;
u64_t ttl0_discard ;
} client_statistics[LM_CLI_IDX_MAX] ;
struct
{
u64_t mac_filter_discard ;
u64_t xxoverflow_discard ;
u64_t brb_truncate_discard ;
u64_t mac_discard ;
} port_statistics;
} eth_tstorm_common ;
struct
{
struct
{
u64_t ucast_no_buff_bytes ;
u64_t mcast_no_buff_bytes ;
u64_t bcast_no_buff_bytes ;
u64_t ucast_no_buff_pkts ;
u64_t mcast_no_buff_pkts ;
u64_t bcast_no_buff_pkts ;
u64_t coalesced_pkts ;
u64_t coalesced_bytes ;
u64_t coalesced_events ;
u64_t coalesced_aborts ;
} client_statistics[LM_CLI_IDX_MAX] ;
} eth_ustorm_common ;
struct
{
struct
{ u64_t tcp_out_segments;
u64_t tcp_retransmitted_segments;
u64_t ip_out_octets;
u64_t ip_out_requests;
} statistics[STATS_IP_IDX_MAX] ;
} toe_xstorm_toe ;
struct
{
struct
{
u64_t ip_in_receives;
u64_t ip_in_delivers;
u64_t ip_in_octets;
u64_t tcp_in_errors ;
u64_t ip_in_header_errors ;
u64_t ip_in_discards ;
u64_t ip_in_truncated_packets;
} statistics[STATS_IP_IDX_MAX] ;
} toe_tstorm_toe ;
struct
{
u64_t no_tx_cqes ;
} toe_cstorm_toe ;
lm_fcoe_stats_t fcoe;
}lm_stats_fw_t;
typedef struct _stats_macs_t
{
struct
{
u64_t rx_stat_ifhcinoctets ;
u64_t rx_stat_ifhcinbadoctets ;
u64_t rx_stat_etherstatsfragments ;
u64_t rx_stat_ifhcinucastpkts ;
u64_t rx_stat_ifhcinmulticastpkts ;
u64_t rx_stat_ifhcinbroadcastpkts ;
u64_t rx_stat_dot3statsfcserrors ;
u64_t rx_stat_dot3statsalignmenterrors ;
u64_t rx_stat_dot3statscarriersenseerrors ;
u64_t rx_stat_xonpauseframesreceived ;
u64_t rx_stat_xoffpauseframesreceived ;
u64_t rx_stat_maccontrolframesreceived ;
u64_t rx_stat_maccontrolframesreceived_bmac_xpf ;
u64_t rx_stat_maccontrolframesreceived_bmac_xcf ;
u64_t rx_stat_xoffstateentered ;
u64_t rx_stat_dot3statsframestoolong ;
u64_t rx_stat_etherstatsjabbers ;
u64_t rx_stat_etherstatsundersizepkts ;
u64_t rx_stat_etherstatspkts64octets ;
u64_t rx_stat_etherstatspkts65octetsto127octets ;
u64_t rx_stat_etherstatspkts128octetsto255octets ;
u64_t rx_stat_etherstatspkts256octetsto511octets ;
u64_t rx_stat_etherstatspkts512octetsto1023octets ;
u64_t rx_stat_etherstatspkts1024octetsto1522octets ;
u64_t rx_stat_etherstatspktsover1522octets ;
u64_t rx_stat_pfcPacketCounter ;
} stats_rx ;
struct
{
u64_t rx_stat_falsecarriererrors ;
} stats_rx_err ;
struct
{
u64_t tx_stat_ifhcoutoctets ;
u64_t tx_stat_ifhcoutbadoctets ;
u64_t tx_stat_etherstatscollisions ;
u64_t tx_stat_outxonsent ;
u64_t tx_stat_outxoffsent ;
u64_t tx_stat_flowcontroldone ;
u64_t tx_stat_dot3statssinglecollisionframes ;
u64_t tx_stat_dot3statsmultiplecollisionframes ;
u64_t tx_stat_dot3statsdeferredtransmissions ;
u64_t tx_stat_dot3statsexcessivecollisions ;
u64_t tx_stat_dot3statslatecollisions ;
u64_t tx_stat_ifhcoutucastpkts ;
u64_t tx_stat_ifhcoutucastpkts_bmac_pkt ;
u64_t tx_stat_ifhcoutucastpkts_bmac_mca ;
u64_t tx_stat_ifhcoutucastpkts_bmac_bca ;
u64_t tx_stat_ifhcoutmulticastpkts ;
u64_t tx_stat_ifhcoutbroadcastpkts ;
u64_t tx_stat_etherstatspkts64octets ;
u64_t tx_stat_etherstatspkts65octetsto127octets ;
u64_t tx_stat_etherstatspkts128octetsto255octets ;
u64_t tx_stat_etherstatspkts256octetsto511octets ;
u64_t tx_stat_etherstatspkts512octetsto1023octets ;
u64_t tx_stat_etherstatspkts1024octetsto1522octet ;
u64_t tx_stat_etherstatspktsover1522octets ;
u64_t tx_stat_etherstatspktsover1522octets_bmac_2047 ;
u64_t tx_stat_etherstatspktsover1522octets_bmac_4095 ;
u64_t tx_stat_etherstatspktsover1522octets_bmac_9216 ;
u64_t tx_stat_etherstatspktsover1522octets_bmac_16383 ;
u64_t tx_stat_dot3statsinternalmactransmiterrors ;
u64_t tx_stat_ifhcoutdiscards ;
u64_t tx_stat_pfcPacketCounter ;
} stats_tx ;
} stats_macs_t ;
typedef struct _stats_nig_t
{
u64_t brb_discard ;
u64_t brb_packet ;
u64_t brb_truncate ;
u64_t flow_ctrl_discard ;
u64_t flow_ctrl_octets ;
u64_t flow_ctrl_packet ;
u64_t mng_discard ;
u64_t mng_octet_inp ;
u64_t mng_octet_out ;
u64_t mng_packet_inp ;
u64_t mng_packet_out ;
u64_t pbf_octets ;
u64_t pbf_packet ;
u64_t safc_inp ;
} stats_nig_t ;
typedef struct _lm_stats_hw_t
{
stats_macs_t macs[STATS_MACS_IDX_MAX] ;
stats_nig_t nig ;
stats_nig_ex_t nig_ex ;
misc_stats_t misc;
} lm_stats_hw_t ;
typedef struct _lm_stats_drv_t
{
struct
{
u32_t rx_ipv4_frag_count;
u32_t rx_ip_cs_error_count;
u32_t rx_tcp_cs_error_count;
u32_t rx_llc_snap_count;
u32_t rx_phy_error_count;
u32_t rx_ipv6_ext_count ;
u32_t rx_aborted ;
u32_t tx_no_l2_bd ;
u32_t tx_no_sq_wqe ;
u32_t tx_l2_assembly_buf_use ;
u32_t tx_lso_frames ;
u32_t tx_aborted ;
u32_t tx_no_coalesce_buf ;
} drv_eth ;
struct
{
struct
{
u32_t currently_established;
u32_t out_resets;
u32_t out_discards;
u32_t out_no_routes;
u32_t out_fin ;
u32_t in_fin ;
u32_t in_reset ;
} ipv[STATS_IP_IDX_MAX] ;
u32_t tx_no_l4_bd ;
u32_t tx_l4_assembly_buf_use ;
u32_t rx_indicate_return_pending_cnt ;
u32_t rx_indicate_return_done_cnt ;
u32_t rx_active_gen_buf_cnt;
} drv_toe ;
struct
{
eth_stats_info_t eth_stats;
fcoe_stats_info_t fcoe_stats;
iscsi_stats_info_t iscsi_stats;
} drv_info_to_mfw;
struct
{
fcoe_capabilities_t fcoe_capabilities;
} drv_info_to_shmem;
} lm_stats_drv_t ;
typedef struct _lm_stats_all_t
{
struct
{
lm_stats_fw_t stats_fw ;
lm_stats_hw_t stats_hw ;
lm_stats_drv_t stats_drv;
host_port_stats_t stats_mcp_port ;
host_func_stats_t stats_mcp_func ;
host_func_stats_t stats_mcp_func_base ;
} stats_mirror ;
struct
{
lm_stats_fw_collect_t stats_fw ;
lm_stats_hw_collect_t stats_hw ;
lm_stats_drv_info_to_mfw_t drv_info_to_mfw;
u32_t timer_wakeup ;
u32_t shmem_disabled;
u32_t sp_record_disabled;
u64_t next_timer_ms ;
u8_t b_last_called ;
} stats_collect ;
} lm_stats_all_t;
#endif