root/usr/src/uts/common/io/bnxe/577xx/hsi/mcp/mac_stats.h

#ifndef MAC_STATS_H
#define MAC_STATS_H


struct emac_stats {
        u32     rx_stat_ifhcinoctets;
        u32     rx_stat_ifhcinbadoctets;
        u32     rx_stat_etherstatsfragments;
        u32     rx_stat_ifhcinucastpkts;
        u32     rx_stat_ifhcinmulticastpkts;
        u32     rx_stat_ifhcinbroadcastpkts;
        u32     rx_stat_dot3statsfcserrors;
        u32     rx_stat_dot3statsalignmenterrors;
        u32     rx_stat_dot3statscarriersenseerrors;
        u32     rx_stat_xonpauseframesreceived;
        u32     rx_stat_xoffpauseframesreceived;
        u32     rx_stat_maccontrolframesreceived;
        u32     rx_stat_xoffstateentered;
        u32     rx_stat_dot3statsframestoolong;
        u32     rx_stat_etherstatsjabbers;
        u32     rx_stat_etherstatsundersizepkts;
        u32     rx_stat_etherstatspkts64octets;
        u32     rx_stat_etherstatspkts65octetsto127octets;
        u32     rx_stat_etherstatspkts128octetsto255octets;
        u32     rx_stat_etherstatspkts256octetsto511octets;
        u32     rx_stat_etherstatspkts512octetsto1023octets;
        u32     rx_stat_etherstatspkts1024octetsto1522octets;
        u32     rx_stat_etherstatspktsover1522octets;

        u32     rx_stat_falsecarriererrors;

        u32     tx_stat_ifhcoutoctets;
        u32     tx_stat_ifhcoutbadoctets;
        u32     tx_stat_etherstatscollisions;
        u32     tx_stat_outxonsent;
        u32     tx_stat_outxoffsent;
        u32     tx_stat_flowcontroldone;
        u32     tx_stat_dot3statssinglecollisionframes;
        u32     tx_stat_dot3statsmultiplecollisionframes;
        u32     tx_stat_dot3statsdeferredtransmissions;
        u32     tx_stat_dot3statsexcessivecollisions;
        u32     tx_stat_dot3statslatecollisions;
        u32     tx_stat_ifhcoutucastpkts;
        u32     tx_stat_ifhcoutmulticastpkts;
        u32     tx_stat_ifhcoutbroadcastpkts;
        u32     tx_stat_etherstatspkts64octets;
        u32     tx_stat_etherstatspkts65octetsto127octets;
        u32     tx_stat_etherstatspkts128octetsto255octets;
        u32     tx_stat_etherstatspkts256octetsto511octets;
        u32     tx_stat_etherstatspkts512octetsto1023octets;
        u32     tx_stat_etherstatspkts1024octetsto1522octets;
        u32     tx_stat_etherstatspktsover1522octets;
        u32     tx_stat_dot3statsinternalmactransmiterrors;
};


struct bmac1_stats {
        u32     tx_stat_gtpkt_lo;
        u32     tx_stat_gtpkt_hi;
        u32     tx_stat_gtxpf_lo;
        u32     tx_stat_gtxpf_hi;
        u32     tx_stat_gtfcs_lo;
        u32     tx_stat_gtfcs_hi;
        u32     tx_stat_gtmca_lo;
        u32     tx_stat_gtmca_hi;
        u32     tx_stat_gtbca_lo;
        u32     tx_stat_gtbca_hi;
        u32     tx_stat_gtfrg_lo;
        u32     tx_stat_gtfrg_hi;
        u32     tx_stat_gtovr_lo;
        u32     tx_stat_gtovr_hi;
        u32     tx_stat_gt64_lo;
        u32     tx_stat_gt64_hi;
        u32     tx_stat_gt127_lo;
        u32     tx_stat_gt127_hi;
        u32     tx_stat_gt255_lo;
        u32     tx_stat_gt255_hi;
        u32     tx_stat_gt511_lo;
        u32     tx_stat_gt511_hi;
        u32     tx_stat_gt1023_lo;
        u32     tx_stat_gt1023_hi;
        u32     tx_stat_gt1518_lo;
        u32     tx_stat_gt1518_hi;
        u32     tx_stat_gt2047_lo;
        u32     tx_stat_gt2047_hi;
        u32     tx_stat_gt4095_lo;
        u32     tx_stat_gt4095_hi;
        u32     tx_stat_gt9216_lo;
        u32     tx_stat_gt9216_hi;
        u32     tx_stat_gt16383_lo;
        u32     tx_stat_gt16383_hi;
        u32     tx_stat_gtmax_lo;
        u32     tx_stat_gtmax_hi;
        u32     tx_stat_gtufl_lo;
        u32     tx_stat_gtufl_hi;
        u32     tx_stat_gterr_lo;
        u32     tx_stat_gterr_hi;
        u32     tx_stat_gtbyt_lo;
        u32     tx_stat_gtbyt_hi;

        u32     rx_stat_gr64_lo;
        u32     rx_stat_gr64_hi;
        u32     rx_stat_gr127_lo;
        u32     rx_stat_gr127_hi;
        u32     rx_stat_gr255_lo;
        u32     rx_stat_gr255_hi;
        u32     rx_stat_gr511_lo;
        u32     rx_stat_gr511_hi;
        u32     rx_stat_gr1023_lo;
        u32     rx_stat_gr1023_hi;
        u32     rx_stat_gr1518_lo;
        u32     rx_stat_gr1518_hi;
        u32     rx_stat_gr2047_lo;
        u32     rx_stat_gr2047_hi;
        u32     rx_stat_gr4095_lo;
        u32     rx_stat_gr4095_hi;
        u32     rx_stat_gr9216_lo;
        u32     rx_stat_gr9216_hi;
        u32     rx_stat_gr16383_lo;
        u32     rx_stat_gr16383_hi;
        u32     rx_stat_grmax_lo;
        u32     rx_stat_grmax_hi;
        u32     rx_stat_grpkt_lo;
        u32     rx_stat_grpkt_hi;
        u32     rx_stat_grfcs_lo;
        u32     rx_stat_grfcs_hi;
        u32     rx_stat_grmca_lo;
        u32     rx_stat_grmca_hi;
        u32     rx_stat_grbca_lo;
        u32     rx_stat_grbca_hi;
        u32     rx_stat_grxcf_lo;
        u32     rx_stat_grxcf_hi;
        u32     rx_stat_grxpf_lo;
        u32     rx_stat_grxpf_hi;
        u32     rx_stat_grxuo_lo;
        u32     rx_stat_grxuo_hi;
        u32     rx_stat_grjbr_lo;
        u32     rx_stat_grjbr_hi;
        u32     rx_stat_grovr_lo;
        u32     rx_stat_grovr_hi;
        u32     rx_stat_grflr_lo;
        u32     rx_stat_grflr_hi;
        u32     rx_stat_grmeg_lo;
        u32     rx_stat_grmeg_hi;
        u32     rx_stat_grmeb_lo;
        u32     rx_stat_grmeb_hi;
        u32     rx_stat_grbyt_lo;
        u32     rx_stat_grbyt_hi;
        u32     rx_stat_grund_lo;
        u32     rx_stat_grund_hi;
        u32     rx_stat_grfrg_lo;
        u32     rx_stat_grfrg_hi;
        u32     rx_stat_grerb_lo;
        u32     rx_stat_grerb_hi;
        u32     rx_stat_grfre_lo;
        u32     rx_stat_grfre_hi;
        u32     rx_stat_gripj_lo;
        u32     rx_stat_gripj_hi;
};

struct bmac2_stats {
        u32     tx_stat_gtpk_lo; /* gtpok */
        u32     tx_stat_gtpk_hi; /* gtpok */
        u32     tx_stat_gtxpf_lo; /* gtpf */
        u32     tx_stat_gtxpf_hi; /* gtpf */
        u32     tx_stat_gtpp_lo; /* NEW BMAC2 */
        u32     tx_stat_gtpp_hi; /* NEW BMAC2 */
        u32     tx_stat_gtfcs_lo;
        u32     tx_stat_gtfcs_hi;
        u32     tx_stat_gtuca_lo; /* NEW BMAC2 */
        u32     tx_stat_gtuca_hi; /* NEW BMAC2 */
        u32     tx_stat_gtmca_lo;
        u32     tx_stat_gtmca_hi;
        u32     tx_stat_gtbca_lo;
        u32     tx_stat_gtbca_hi;
        u32     tx_stat_gtovr_lo;
        u32     tx_stat_gtovr_hi;
        u32     tx_stat_gtfrg_lo;
        u32     tx_stat_gtfrg_hi;
        u32     tx_stat_gtpkt1_lo; /* gtpkt */
        u32     tx_stat_gtpkt1_hi; /* gtpkt */
        u32     tx_stat_gt64_lo;
        u32     tx_stat_gt64_hi;
        u32     tx_stat_gt127_lo;
        u32     tx_stat_gt127_hi;
        u32     tx_stat_gt255_lo;
        u32     tx_stat_gt255_hi;
        u32     tx_stat_gt511_lo;
        u32     tx_stat_gt511_hi;
        u32     tx_stat_gt1023_lo;
        u32     tx_stat_gt1023_hi;
        u32     tx_stat_gt1518_lo;
        u32     tx_stat_gt1518_hi;
        u32     tx_stat_gt2047_lo;
        u32     tx_stat_gt2047_hi;
        u32     tx_stat_gt4095_lo;
        u32     tx_stat_gt4095_hi;
        u32     tx_stat_gt9216_lo;
        u32     tx_stat_gt9216_hi;
        u32     tx_stat_gt16383_lo;
        u32     tx_stat_gt16383_hi;
        u32     tx_stat_gtmax_lo;
        u32     tx_stat_gtmax_hi;
        u32     tx_stat_gtufl_lo;
        u32     tx_stat_gtufl_hi;
        u32     tx_stat_gterr_lo;
        u32     tx_stat_gterr_hi;
        u32     tx_stat_gtbyt_lo;
        u32     tx_stat_gtbyt_hi;

        u32     rx_stat_gr64_lo;
        u32     rx_stat_gr64_hi;
        u32     rx_stat_gr127_lo;
        u32     rx_stat_gr127_hi;
        u32     rx_stat_gr255_lo;
        u32     rx_stat_gr255_hi;
        u32     rx_stat_gr511_lo;
        u32     rx_stat_gr511_hi;
        u32     rx_stat_gr1023_lo;
        u32     rx_stat_gr1023_hi;
        u32     rx_stat_gr1518_lo;
        u32     rx_stat_gr1518_hi;
        u32     rx_stat_gr2047_lo;
        u32     rx_stat_gr2047_hi;
        u32     rx_stat_gr4095_lo;
        u32     rx_stat_gr4095_hi;
        u32     rx_stat_gr9216_lo;
        u32     rx_stat_gr9216_hi;
        u32     rx_stat_gr16383_lo;
        u32     rx_stat_gr16383_hi;
        u32     rx_stat_grmax_lo;
        u32     rx_stat_grmax_hi;
        u32     rx_stat_grpkt_lo;
        u32     rx_stat_grpkt_hi;
        u32     rx_stat_grfcs_lo;
        u32     rx_stat_grfcs_hi;
        u32     rx_stat_gruca_lo;
        u32     rx_stat_gruca_hi;
        u32     rx_stat_grmca_lo;
        u32     rx_stat_grmca_hi;
        u32     rx_stat_grbca_lo;
        u32     rx_stat_grbca_hi;
        u32     rx_stat_grxpf_lo; /* grpf */
        u32     rx_stat_grxpf_hi; /* grpf */
        u32     rx_stat_grpp_lo;
        u32     rx_stat_grpp_hi;
        u32     rx_stat_grxuo_lo; /* gruo */
        u32     rx_stat_grxuo_hi; /* gruo */
        u32     rx_stat_grjbr_lo;
        u32     rx_stat_grjbr_hi;
        u32     rx_stat_grovr_lo;
        u32     rx_stat_grovr_hi;
        u32     rx_stat_grxcf_lo; /* grcf */
        u32     rx_stat_grxcf_hi; /* grcf */
        u32     rx_stat_grflr_lo;
        u32     rx_stat_grflr_hi;
        u32     rx_stat_grpok_lo;
        u32     rx_stat_grpok_hi;
        u32     rx_stat_grmeg_lo;
        u32     rx_stat_grmeg_hi;
        u32     rx_stat_grmeb_lo;
        u32     rx_stat_grmeb_hi;
        u32     rx_stat_grbyt_lo;
        u32     rx_stat_grbyt_hi;
        u32     rx_stat_grund_lo;
        u32     rx_stat_grund_hi;
        u32     rx_stat_grfrg_lo;
        u32     rx_stat_grfrg_hi;
        u32     rx_stat_grerb_lo; /* grerrbyt */
        u32     rx_stat_grerb_hi; /* grerrbyt */
        u32     rx_stat_grfre_lo; /* grfrerr */
        u32     rx_stat_grfre_hi; /* grfrerr */
        u32     rx_stat_gripj_lo;
        u32     rx_stat_gripj_hi;
};

struct mstat_stats {
        struct {
                /* OTE MSTAT on E3 has a bug where this register's contents are
                 * actually tx_gtxpok + tx_gtxpf + (possibly)tx_gtxpp
                 */
                u32 tx_gtxpok_lo;
                u32 tx_gtxpok_hi;
                u32 tx_gtxpf_lo;
                u32 tx_gtxpf_hi;
                u32 tx_gtxpp_lo;
                u32 tx_gtxpp_hi;
                u32 tx_gtfcs_lo;
                u32 tx_gtfcs_hi;
                u32 tx_gtuca_lo;
                u32 tx_gtuca_hi;
                u32 tx_gtmca_lo;
                u32 tx_gtmca_hi;
                u32 tx_gtgca_lo;
                u32 tx_gtgca_hi;
                u32 tx_gtpkt_lo;
                u32 tx_gtpkt_hi;
                u32 tx_gt64_lo;
                u32 tx_gt64_hi;
                u32 tx_gt127_lo;
                u32 tx_gt127_hi;
                u32 tx_gt255_lo;
                u32 tx_gt255_hi;
                u32 tx_gt511_lo;
                u32 tx_gt511_hi;
                u32 tx_gt1023_lo;
                u32 tx_gt1023_hi;
                u32 tx_gt1518_lo;
                u32 tx_gt1518_hi;
                u32 tx_gt2047_lo;
                u32 tx_gt2047_hi;
                u32 tx_gt4095_lo;
                u32 tx_gt4095_hi;
                u32 tx_gt9216_lo;
                u32 tx_gt9216_hi;
                u32 tx_gt16383_lo;
                u32 tx_gt16383_hi;
                u32 tx_gtufl_lo;
                u32 tx_gtufl_hi;
                u32 tx_gterr_lo;
                u32 tx_gterr_hi;
                u32 tx_gtbyt_lo;
                u32 tx_gtbyt_hi;
                u32 tx_collisions_lo;
                u32 tx_collisions_hi;
                u32 tx_singlecollision_lo;
                u32 tx_singlecollision_hi;
                u32 tx_multiplecollisions_lo;
                u32 tx_multiplecollisions_hi;
                u32 tx_deferred_lo;
                u32 tx_deferred_hi;
                u32 tx_excessivecollisions_lo;
                u32 tx_excessivecollisions_hi;
                u32 tx_latecollisions_lo;
                u32 tx_latecollisions_hi;
        } stats_tx;

        struct {
                u32 rx_gr64_lo;
                u32 rx_gr64_hi;
                u32 rx_gr127_lo;
                u32 rx_gr127_hi;
                u32 rx_gr255_lo;
                u32 rx_gr255_hi;
                u32 rx_gr511_lo;
                u32 rx_gr511_hi;
                u32 rx_gr1023_lo;
                u32 rx_gr1023_hi;
                u32 rx_gr1518_lo;
                u32 rx_gr1518_hi;
                u32 rx_gr2047_lo;
                u32 rx_gr2047_hi;
                u32 rx_gr4095_lo;
                u32 rx_gr4095_hi;
                u32 rx_gr9216_lo;
                u32 rx_gr9216_hi;
                u32 rx_gr16383_lo;
                u32 rx_gr16383_hi;
                u32 rx_grpkt_lo;
                u32 rx_grpkt_hi;
                u32 rx_grfcs_lo;
                u32 rx_grfcs_hi;
                u32 rx_gruca_lo;
                u32 rx_gruca_hi;
                u32 rx_grmca_lo;
                u32 rx_grmca_hi;
                u32 rx_grbca_lo;
                u32 rx_grbca_hi;
                u32 rx_grxpf_lo;
                u32 rx_grxpf_hi;
                u32 rx_grxpp_lo;
                u32 rx_grxpp_hi;
                u32 rx_grxuo_lo;
                u32 rx_grxuo_hi;
                u32 rx_grovr_lo;
                u32 rx_grovr_hi;
                u32 rx_grxcf_lo;
                u32 rx_grxcf_hi;
                u32 rx_grflr_lo;
                u32 rx_grflr_hi;
                u32 rx_grpok_lo;
                u32 rx_grpok_hi;
                u32 rx_grbyt_lo;
                u32 rx_grbyt_hi;
                u32 rx_grund_lo;
                u32 rx_grund_hi;
                u32 rx_grfrg_lo;
                u32 rx_grfrg_hi;
                u32 rx_grerb_lo;
                u32 rx_grerb_hi;
                u32 rx_grfre_lo;
                u32 rx_grfre_hi;

                u32 rx_alignmenterrors_lo;
                u32 rx_alignmenterrors_hi;
                u32 rx_falsecarrier_lo;
                u32 rx_falsecarrier_hi;
                u32 rx_llfcmsgcnt_lo;
                u32 rx_llfcmsgcnt_hi;
        } stats_rx;
};

union mac_stats {
        struct emac_stats       emac_stats;
        struct bmac1_stats      bmac1_stats;
        struct bmac2_stats      bmac2_stats;
        struct mstat_stats      mstat_stats;
};


struct mac_stx {
        /* in_bad_octets */
        u32     rx_stat_ifhcinbadoctets_hi;
        u32     rx_stat_ifhcinbadoctets_lo;

        /* out_bad_octets */
        u32     tx_stat_ifhcoutbadoctets_hi;
        u32     tx_stat_ifhcoutbadoctets_lo;

        /* crc_receive_errors */
        u32     rx_stat_dot3statsfcserrors_hi;
        u32     rx_stat_dot3statsfcserrors_lo;
        /* alignment_errors */
        u32     rx_stat_dot3statsalignmenterrors_hi;
        u32     rx_stat_dot3statsalignmenterrors_lo;
        /* carrier_sense_errors */
        u32     rx_stat_dot3statscarriersenseerrors_hi;
        u32     rx_stat_dot3statscarriersenseerrors_lo;
        /* false_carrier_detections */
        u32     rx_stat_falsecarriererrors_hi;
        u32     rx_stat_falsecarriererrors_lo;

        /* runt_packets_received */
        u32     rx_stat_etherstatsundersizepkts_hi;
        u32     rx_stat_etherstatsundersizepkts_lo;
        /* jabber_packets_received */
        u32     rx_stat_dot3statsframestoolong_hi;
        u32     rx_stat_dot3statsframestoolong_lo;

        /* error_runt_packets_received */
        u32     rx_stat_etherstatsfragments_hi;
        u32     rx_stat_etherstatsfragments_lo;
        /* error_jabber_packets_received */
        u32     rx_stat_etherstatsjabbers_hi;
        u32     rx_stat_etherstatsjabbers_lo;

        /* control_frames_received */
        u32     rx_stat_maccontrolframesreceived_hi;
        u32     rx_stat_maccontrolframesreceived_lo;
        u32     rx_stat_mac_xpf_hi;
        u32     rx_stat_mac_xpf_lo;
        u32     rx_stat_mac_xcf_hi;
        u32     rx_stat_mac_xcf_lo;

        /* xoff_state_entered */
        u32     rx_stat_xoffstateentered_hi;
        u32     rx_stat_xoffstateentered_lo;
        /* pause_xon_frames_received */
        u32     rx_stat_xonpauseframesreceived_hi;
        u32     rx_stat_xonpauseframesreceived_lo;
        /* pause_xoff_frames_received */
        u32     rx_stat_xoffpauseframesreceived_hi;
        u32     rx_stat_xoffpauseframesreceived_lo;
        /* pause_xon_frames_transmitted */
        u32     tx_stat_outxonsent_hi;
        u32     tx_stat_outxonsent_lo;
        /* pause_xoff_frames_transmitted */
        u32     tx_stat_outxoffsent_hi;
        u32     tx_stat_outxoffsent_lo;
        /* flow_control_done */
        u32     tx_stat_flowcontroldone_hi;
        u32     tx_stat_flowcontroldone_lo;

        /* ether_stats_collisions */
        u32     tx_stat_etherstatscollisions_hi;
        u32     tx_stat_etherstatscollisions_lo;
        /* single_collision_transmit_frames */
        u32     tx_stat_dot3statssinglecollisionframes_hi;
        u32     tx_stat_dot3statssinglecollisionframes_lo;
        /* multiple_collision_transmit_frames */
        u32     tx_stat_dot3statsmultiplecollisionframes_hi;
        u32     tx_stat_dot3statsmultiplecollisionframes_lo;
        /* deferred_transmissions */
        u32     tx_stat_dot3statsdeferredtransmissions_hi;
        u32     tx_stat_dot3statsdeferredtransmissions_lo;
        /* excessive_collision_frames */
        u32     tx_stat_dot3statsexcessivecollisions_hi;
        u32     tx_stat_dot3statsexcessivecollisions_lo;
        /* late_collision_frames */
        u32     tx_stat_dot3statslatecollisions_hi;
        u32     tx_stat_dot3statslatecollisions_lo;

        /* frames_transmitted_64_bytes */
        u32     tx_stat_etherstatspkts64octets_hi;
        u32     tx_stat_etherstatspkts64octets_lo;
        /* frames_transmitted_65_127_bytes */
        u32     tx_stat_etherstatspkts65octetsto127octets_hi;
        u32     tx_stat_etherstatspkts65octetsto127octets_lo;
        /* frames_transmitted_128_255_bytes */
        u32     tx_stat_etherstatspkts128octetsto255octets_hi;
        u32     tx_stat_etherstatspkts128octetsto255octets_lo;
        /* frames_transmitted_256_511_bytes */
        u32     tx_stat_etherstatspkts256octetsto511octets_hi;
        u32     tx_stat_etherstatspkts256octetsto511octets_lo;
        /* frames_transmitted_512_1023_bytes */
        u32     tx_stat_etherstatspkts512octetsto1023octets_hi;
        u32     tx_stat_etherstatspkts512octetsto1023octets_lo;
        /* frames_transmitted_1024_1522_bytes */
        u32     tx_stat_etherstatspkts1024octetsto1522octets_hi;
        u32     tx_stat_etherstatspkts1024octetsto1522octets_lo;
        /* frames_transmitted_1523_9022_bytes */
        u32     tx_stat_etherstatspktsover1522octets_hi;
        u32     tx_stat_etherstatspktsover1522octets_lo;
        u32     tx_stat_mac_2047_hi;
        u32     tx_stat_mac_2047_lo;
        u32     tx_stat_mac_4095_hi;
        u32     tx_stat_mac_4095_lo;
        u32     tx_stat_mac_9216_hi;
        u32     tx_stat_mac_9216_lo;
        u32     tx_stat_mac_16383_hi;
        u32     tx_stat_mac_16383_lo;

        /* internal_mac_transmit_errors */
        u32     tx_stat_dot3statsinternalmactransmiterrors_hi;
        u32     tx_stat_dot3statsinternalmactransmiterrors_lo;

        /* if_out_discards */
        u32     tx_stat_mac_ufl_hi;
        u32     tx_stat_mac_ufl_lo;
};


#define MAC_STX_IDX_MAX                     2

struct host_port_stats {
        u32            host_port_stats_counter;

        struct mac_stx mac_stx[MAC_STX_IDX_MAX];

        u32            brb_drop_hi;
        u32            brb_drop_lo;

        u32            not_used; /* obsolete as of MFW 7.2.1 */

        u32            pfc_frames_tx_hi;
        u32            pfc_frames_tx_lo;
        u32            pfc_frames_rx_hi;
        u32            pfc_frames_rx_lo;

        u32            eee_lpi_count_hi;
        u32            eee_lpi_count_lo;
};


struct host_func_stats {
        u32     host_func_stats_start;

        u32     total_bytes_received_hi;
        u32     total_bytes_received_lo;

        u32     total_bytes_transmitted_hi;
        u32     total_bytes_transmitted_lo;

        u32     total_unicast_packets_received_hi;
        u32     total_unicast_packets_received_lo;

        u32     total_multicast_packets_received_hi;
        u32     total_multicast_packets_received_lo;

        u32     total_broadcast_packets_received_hi;
        u32     total_broadcast_packets_received_lo;

        u32     total_unicast_packets_transmitted_hi;
        u32     total_unicast_packets_transmitted_lo;

        u32     total_multicast_packets_transmitted_hi;
        u32     total_multicast_packets_transmitted_lo;

        u32     total_broadcast_packets_transmitted_hi;
        u32     total_broadcast_packets_transmitted_lo;

        u32     valid_bytes_received_hi;
        u32     valid_bytes_received_lo;

        u32     host_func_stats_end;
};

/* VIC definitions */
#define VICSTATST_UIF_INDEX 2

/*
 * stats collected for afex.
 * NOTE: structure is exactly as expected to be received by the switch.
 *       order must remain exactly as is unless protocol changes !
 */
struct afex_stats {
        u32 tx_unicast_frames_hi;
        u32 tx_unicast_frames_lo;
        u32 tx_unicast_bytes_hi;
        u32 tx_unicast_bytes_lo;
        u32 tx_multicast_frames_hi;
        u32 tx_multicast_frames_lo;
        u32 tx_multicast_bytes_hi;
        u32 tx_multicast_bytes_lo;
        u32 tx_broadcast_frames_hi;
        u32 tx_broadcast_frames_lo;
        u32 tx_broadcast_bytes_hi;
        u32 tx_broadcast_bytes_lo;
        u32 tx_frames_discarded_hi;
        u32 tx_frames_discarded_lo;
        u32 tx_frames_dropped_hi;
        u32 tx_frames_dropped_lo;

        u32 rx_unicast_frames_hi;
        u32 rx_unicast_frames_lo;
        u32 rx_unicast_bytes_hi;
        u32 rx_unicast_bytes_lo;
        u32 rx_multicast_frames_hi;
        u32 rx_multicast_frames_lo;
        u32 rx_multicast_bytes_hi;
        u32 rx_multicast_bytes_lo;
        u32 rx_broadcast_frames_hi;
        u32 rx_broadcast_frames_lo;
        u32 rx_broadcast_bytes_hi;
        u32 rx_broadcast_bytes_lo;
        u32 rx_frames_discarded_hi;
        u32 rx_frames_discarded_lo;
        u32 rx_frames_dropped_hi;
        u32 rx_frames_dropped_lo;
};

/* To maintain backward compatibility between FW and drivers, new elements */
/* should be added to the end of the structure. */

/* Per  Port Statistics    */
struct port_info {
        u32 size; /* size of this structure (i.e. sizeof(port_info))  */
        u32 enabled;      /* 0 =Disabled, 1= Enabled */
        u32 link_speed;   /* multiplier of 100Mb */
        u32 wol_support;  /* WoL Support (i.e. Non-Zero if WOL supported ) */
        u32 flow_control; /* 802.3X Flow Ctrl. 0=off 1=RX 2=TX 3=RX&TX.*/
        u32 flex10;     /* Flex10 mode enabled. non zero = yes */
        u32 rx_drops;  /* RX Discards. Counters roll over, never reset */
        u32 rx_errors; /* RX Errors. Physical Port Stats L95, All PFs and NC-SI.
                                   This is flagged by Consumer as an error. */
        u32 rx_uncast_lo;   /* RX Unicast Packets. Free running counters: */
        u32 rx_uncast_hi;   /* RX Unicast Packets. Free running counters: */
        u32 rx_mcast_lo;    /* RX Multicast Packets  */
        u32 rx_mcast_hi;    /* RX Multicast Packets  */
        u32 rx_bcast_lo;    /* RX Broadcast Packets  */
        u32 rx_bcast_hi;    /* RX Broadcast Packets  */
        u32 tx_uncast_lo;   /* TX Unicast Packets   */
        u32 tx_uncast_hi;   /* TX Unicast Packets   */
        u32 tx_mcast_lo;    /* TX Multicast Packets  */
        u32 tx_mcast_hi;    /* TX Multicast Packets  */
        u32 tx_bcast_lo;    /* TX Broadcast Packets  */
        u32 tx_bcast_hi;    /* TX Broadcast Packets  */
        u32 tx_errors;      /* TX Errors              */
        u32 tx_discards;    /* TX Discards          */
        u32 rx_frames_lo;   /* RX Frames received  */
        u32 rx_frames_hi;   /* RX Frames received  */
        u32 rx_bytes_lo;    /* RX Bytes received    */
        u32 rx_bytes_hi;    /* RX Bytes received    */
        u32 tx_frames_lo;   /* TX Frames sent      */
        u32 tx_frames_hi;   /* TX Frames sent      */
        u32 tx_bytes_lo;    /* TX Bytes sent        */
        u32 tx_bytes_hi;    /* TX Bytes sent        */
        u32 link_status;  /* Port P Link Status. 1:0 bit for port enabled.
                                1:1 bit for link good,
                                2:1 Set if link changed between last poll. */
        u32 tx_pfc_frames_lo;   /* PFC Frames sent.    */
        u32 tx_pfc_frames_hi;   /* PFC Frames sent.    */
        u32 rx_pfc_frames_lo;   /* PFC Frames Received. */
        u32 rx_pfc_frames_hi;   /* PFC Frames Received. */
};

#endif /* MAC_STATS_H */