config root man

Current Path : /sys/dev/vxge/include/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //sys/dev/vxge/include/vxgehal-stats.h

/*-
 * Copyright(c) 2002-2011 Exar Corp.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification are permitted provided the following conditions are met:
 *
 *    1. Redistributions of source code must retain the above copyright notice,
 *       this list of conditions and the following disclaimer.
 *
 *    2. Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *
 *    3. Neither the name of the Exar Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived from
 *       this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
/*$FreeBSD: release/9.1.0/sys/dev/vxge/include/vxgehal-stats.h 221167 2011-04-28 14:33:15Z gnn $*/

#ifndef	VXGE_HAL_STATS_H
#define	VXGE_HAL_STATS_H

__EXTERN_BEGIN_DECLS

#define	VXGE_HAL_STATS_OP_READ						0
#define	VXGE_HAL_STATS_OP_CLEAR_STAT					1
#define	VXGE_HAL_STATS_OP_CLEAR_ALL_VPATH_STATS				2
#define	VXGE_HAL_STATS_OP_CLEAR_ALL_STATS_OF_LOC			2
#define	VXGE_HAL_STATS_OP_CLEAR_ALL_STATS				3

#define	VXGE_HAL_STATS_LOC_VPATH(n)					n
#define	VXGE_HAL_STATS_LOC_AGGR						17
#define	VXGE_HAL_STATS_LOC_PORT						17

#define	VXGE_HAL_STATS_AGGRn_TX_FRMS_OFFSET(n)		    ((0x720+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_TX_FRMS(bits)		    bits

#define	VXGE_HAL_STATS_AGGRn_TX_DATA_OCTETS_OFFSET(n)	    ((0x728+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_TX_DATA_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_AGGRn_TX_MCAST_FRMS_OFFSET(n)	    ((0x730+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_TX_MCAST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_AGGRn_TX_BCAST_FRMS_OFFSET(n)	    ((0x738+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_TX_BCAST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_AGGRn_TX_DISCARDED_FRMS_OFFSET(n)    ((0x740+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_TX_DISCARDED_FRMS(bits)    bits

#define	VXGE_HAL_STATS_AGGRn_TX_ERRORED_FRMS_OFFSET(n)	    ((0x748+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_TX_ERRORED_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_AGGRn_RX_FRMS_OFFSET(n)		    ((0x750+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_RX_FRMS(bits)		    bits

#define	VXGE_HAL_STATS_AGGRn_RX_DATA_OCTETS_OFFSET(n)	    ((0x758+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_RX_DATA_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_AGGRn_RX_MCAST_FRMS_OFFSET(n)	    ((0x760+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_RX_MCAST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_AGGRn_RX_BCAST_FRMS_OFFSET(n)	    ((0x768+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_RX_BCAST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_AGGRn_RX_DISCARDED_FRMS_OFFSET(n)    ((0x770+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_RX_DISCARDED_FRMS(bits)    bits

#define	VXGE_HAL_STATS_AGGRn_RX_ERRORED_FRMS_OFFSET(n)	    ((0x778+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_RX_ERRORED_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_AGGRn_RX_U_SLOW_PROTO_FRMS_OFFSET(n) ((0x780+(104*n))>>3)
#define	VXGE_HAL_STATS_GET_AGGRn_RX_U_SLOW_PROTO_FRMS(bits) bits

#define	VXGE_HAL_STATS_GLOBAL_PROG_EVENT_GNUM0_OFFSET	    (0x7f0>>3)
#define	VXGE_HAL_STATS_GET_GLOBAL_PROG_EVENT_GNUM0(bits)    bits

#define	VXGE_HAL_STATS_GLOBAL_PROG_EVENT_GNUM1_OFFSET	    (0x7f8>>3)
#define	VXGE_HAL_STATS_GET_GLOBAL_PROG_EVENT_GNUM1(bits)    bits

#define	VXGE_HAL_STATS_PORTn_TX_TTL_FRMS_OFFSET(n)	    ((0x000+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_TTL_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_TTL_OCTETS_OFFSET(n)	    ((0x008+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_TTL_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_DATA_OCTETS_OFFSET(n)	    ((0x010+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_DATA_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_MCAST_FRMS_OFFSET(n)	    ((0x018+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_MCAST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_BCAST_FRMS_OFFSET(n)	    ((0x020+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_BCAST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_UCAST_FRMS_OFFSET(n)	    ((0x028+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_UCAST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_TAGGED_FRMS_OFFSET(n)	    ((0x030+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_TAGGED_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_VLD_IP_OFFSET(n)	    ((0x038+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_VLD_IP(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_VLD_IP_OCTETS_OFFSET(n)	    ((0x040+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_VLD_IP_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_ICMP_OFFSET(n)		    ((0x048+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_ICMP(bits)		    bits

#define	VXGE_HAL_STATS_PORTn_TX_TCP_OFFSET(n)		    ((0x050+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_TCP(bits)		    bits

#define	VXGE_HAL_STATS_PORTn_TX_RST_TCP_OFFSET(n)	    ((0x058+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_RST_TCP(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_UDP_OFFSET(n)		    ((0x060+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_UDP(bits)		    bits

#define	VXGE_HAL_STATS_PORTn_TX_UNKNOWN_PROTOCOL_OFFSET(n)  ((0x068+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_UNKNOWN_PROTOCOL(bits)  bits

#define	VXGE_HAL_STATS_PORTn_TX_PARSE_ERROR_OFFSET(n)	    ((0x068+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_PARSE_ERROR(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_PAUSE_CTRL_FRMS_OFFSET(n)   ((0x070+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_PAUSE_CTRL_FRMS(bits)   bits

#define	VXGE_HAL_STATS_PORTn_TX_LACPDU_FRMS_OFFSET(n)	    ((0x078+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_LACPDU_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_TX_MRKR_PDU_FRMS_OFFSET(n)	   ((0x078+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_MRKR_PDU_FRMS(bits)	   bits

#define	VXGE_HAL_STATS_PORTn_TX_MRKR_RESP_PDU_FRMS_OFFSET(n)\
							    ((0x080+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_MRKR_RESP_PDU_FRMS(bits) bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_TX_DROP_IP_OFFSET(n)	    ((0x080+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_DROP_IP(bits)	    bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_TX_XGMII_CHAR1_MATCH_OFFSET(n) ((0x088+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_XGMII_CHAR1_MATCH(bits) bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_TX_XGMII_CHAR2_MATCH_OFFSET(n) ((0x088+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_XGMII_CHAR2_MATCH(bits) bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_TX_XGMII_COL1_MATCH_OFFSET(n)  ((0x090+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_XGMII_COL1_MATCH(bits)  bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_TX_XGMII_COL2_MATCH_OFFSET(n)  ((0x090+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_XGMII_COL2_MATCH(bits)  bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_TX_DROP_FRMS_OFFSET(n)	    ((0x098+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_DROP_FRMS(bits)	    bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_TX_ANY_ERR_FRMS_OFFSET(n)	    ((0x098+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_TX_ANY_ERR_FRMS(bits)	    bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_TTL_FRMS_OFFSET(n)	    ((0x0a0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_VLD_FRMS_OFFSET(n)	    ((0x0a8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_VLD_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_OFFLOAD_FRMS_OFFSET(n)	    ((0x0b0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_OFFLOAD_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_OCTETS_OFFSET(n)	    ((0x0b8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_DATA_OCTETS_OFFSET(n)	    ((0x0c0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_DATA_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_OFFLOAD_OCTETS_OFFSET(n)    ((0x0c8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_OFFLOAD_OCTETS(bits)    bits

#define	VXGE_HAL_STATS_PORTn_RX_VLD_MCAST_FRMS_OFFSET(n)    ((0x0d0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_VLD_MCAST_FRMS(bits)    bits

#define	VXGE_HAL_STATS_PORTn_RX_VLD_BCAST_FRMS_OFFSET(n)    ((0x0d8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_VLD_BCAST_FRMS(bits)    bits

#define	VXGE_HAL_STATS_PORTn_RX_ACC_UCAST_FRMS_OFFSET(n)    ((0x0e0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_ACC_UCAST_FRMS(bits)    bits

#define	VXGE_HAL_STATS_PORTn_RX_ACC_NUCAST_FRMS_OFFSET(n)   ((0x0e8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_ACC_NUCAST_FRMS(bits)   bits

#define	VXGE_HAL_STATS_PORTn_RX_TAGGED_FRMS_OFFSET(n)	    ((0x0f0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TAGGED_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_LONG_FRMS_OFFSET(n)	    ((0x0f8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_LONG_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_USIZED_FRMS_OFFSET(n)	    ((0x100+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_USIZED_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_OSIZED_FRMS_OFFSET(n)	    ((0x108+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_OSIZED_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_FRAG_FRMS_OFFSET(n)	    ((0x110+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_FRAG_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_JABBER_FRMS_OFFSET(n)	    ((0x118+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_JABBER_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_64_FRMS_OFFSET(n)	    ((0x120+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_64_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_65_127_FRMS_OFFSET(n)   ((0x128+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_65_127_FRMS(bits)   bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_128_255_FRMS_OFFSET(n)  ((0x130+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_128_255_FRMS(bits)  bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_256_511_FRMS_OFFSET(n)  ((0x138+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_256_511_FRMS(bits)  bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_512_1023_FRMS_OFFSET(n) ((0x140+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_512_1023_FRMS(bits) bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_1024_1518_FRMS_OFFSET(n)\
							    ((0x148+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_1024_1518_FRMS(bits) bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_1519_4095_FRMS_OFFSET(n)\
							    ((0x150+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_1519_4095_FRMS(bits) bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_4096_81915_FRMS_OFFSET(n)\
							    ((0x158+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_4096_8191_FRMS(bits) bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_8192_MAX_FRMS_OFFSET(n) ((0x160+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_8192_MAX_FRMS(bits) bits

#define	VXGE_HAL_STATS_PORTn_RX_TTL_GT_MAX_FRMS_OFFSET(n)   ((0x168+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_GT_MAX_FRMS(bits)   bits

#define	VXGE_HAL_STATS_PORTn_RX_IP_OFFSET(n)		    ((0x170+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_IP(bits)		    bits

#define	VXGE_HAL_STATS_PORTn_RX_ACC_IP_OFFSET(n)	    ((0x178+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_ACC_IP(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_IP_OCTETS_OFFSET(n)	    ((0x180+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_IP_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_ERR_IP_OFFSET(n)	    ((0x188+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_ERR_IP(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_ICMP_OFFSET(n)		    ((0x190+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_ICMP(bits)		    bits

#define	VXGE_HAL_STATS_PORTn_RX_TCP_OFFSET(n)		    ((0x198+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TCP(bits)		    bits

#define	VXGE_HAL_STATS_PORTn_RX_UDP_OFFSET(n)		    ((0x1a0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_UDP(bits)		    bits

#define	VXGE_HAL_STATS_PORTn_RX_ERR_TCP_OFFSET(n)	    ((0x1a8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_ERR_TCP(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_PAUSE_CNT_OFFSET(n)	    ((0x1b0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_PAUSE_CNT(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_PAUSE_CTRL_FRMS_OFFSET(n)   ((0x1b8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_PAUSE_CTRL_FRMS(bits)   bits

#define	VXGE_HAL_STATS_PORTn_RX_UNSUP_CTRL_FRMS_OFFSET(n)   ((0x1c0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_UNSUP_CTRL_FRMS(bits)   bits

#define	VXGE_HAL_STATS_PORTn_RX_FCS_ERR_FRMS_OFFSET(n)	    ((0x1c8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_FCS_ERR_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_IN_RNG_LEN_ERR_FRMS_OFFSET(n)\
							    ((0x1d0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_IN_RNG_LEN_ERR_FRMS(bits) bits

#define	VXGE_HAL_STATS_PORTn_RX_OUT_RNG_LEN_ERR_FRMS_OFFSET(n)\
							    ((0x1d8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_OUT_RNG_LEN_ERR_FRMS(bits) bits

#define	VXGE_HAL_STATS_PORTn_RX_DROP_FRMS_OFFSET(n)	    ((0x1e0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_DROP_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_DISCARDED_FRMS_OFFSET(n)    ((0x1e8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_DISCARDED_FRMS(bits)    bits

#define	VXGE_HAL_STATS_PORTn_RX_DROP_IP_OFFSET(n)	    ((0x1f0+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_DROP_IP(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_DRP_UDP_OFFSET(n)	    ((0x1f8+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_DRP_UDP(bits)	    bits

#define	VXGE_HAL_STATS_PORTn_RX_LACPDU_FRMS_OFFSET(n)	    ((0x200+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_LACPDU_FRMS(bits)	    bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_MRKR_PDU_FRMS_OFFSET(n)	    ((0x200+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_MRKR_PDU_FRMS(bits)	    bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_MRKR_RESP_PDU_FRMS_OFFSET(n)\
							    ((0x208+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_MRKR_RESP_PDU_FRMS(bits) bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_UNKNOWN_PDU_FRMS_OFFSET(n)  ((0x208+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_UNKNOWN_PDU_FRMS(bits)  bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_ILLEGAL_PDU_FRMS_OFFSET(n)  ((0x210+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_ILLEGAL_PDU_FRMS(bits)  bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_FCS_DISCARD_OFFSET(n)	    ((0x210+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_FCS_DISCARD(bits)	    bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_LEN_DISCARD_OFFSET(n)	    ((0x218+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_LEN_DISCARD(bits)	    bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_SWITCH_DISCARD_OFFSET(n)    ((0x218+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_SWITCH_DISCARD(bits)    bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_L2_MGMT_DISCARD_OFFSET(n)   ((0x220+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_L2_MGMT_DISCARD(bits)   bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_RPA_DISCARD_OFFSET(n)	    ((0x220+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_RPA_DISCARD(bits)	    bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_TRASH_DISCARD_OFFSET(n)	    ((0x228+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_TRASH_DISCARD(bits)	    bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_RTS_DISCARD_OFFSET(n)	    ((0x228+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_RTS_DISCARD(bits)	    bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_RED_DISCARD_OFFSET(n)	    ((0x230+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_RED_DISCARD(bits)	    bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_BUFF_FULL_DISCARD_OFFSET(n) ((0x230+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_BUFF_FULL_DISCARD(bits) bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_XGMII_DATA_ERR_CNT_OFFSET(n)\
							    ((0x238+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_DATA_ERR_CNT(bits) bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_XGMII_CTRL_ERR_CNT_OFFSET(n)\
							    ((0x238+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CTRL_ERR_CNT(bits) bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_XGMII_ERR_SYM_OFFSET(n)	    ((0x240+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_ERR_SYM(bits)	    bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_XGMII_CHAR1_MATCH_OFFSET(n) ((0x240+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CHAR1_MATCH(bits) bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_XGMII_CHAR2_MATCH_OFFSET(n) ((0x248+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CHAR2_MATCH(bits) bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_XGMII_COL1_MATCH_OFFSET(n)  ((0x248+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_COL1_MATCH(bits)  bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_XGMII_COL2_MATCH_OFFSET(n)  ((0x250+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_COL2_MATCH(bits)  bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_LOCAL_FAULT_OFFSET(n)	    ((0x250+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_LOCAL_FAULT(bits)	    bVAL32(bits, 32)

#define	VXGE_HAL_STATS_PORTn_RX_REMOTE_FAULT_OFFSET(n)	    ((0x258+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_REMOTE_FAULT(bits)	    bVAL32(bits, 0)

#define	VXGE_HAL_STATS_PORTn_RX_JETTISON_OFFSET(n)	    ((0x258+(608*n))>>3)
#define	VXGE_HAL_STATS_GET_PORTn_RX_JETTISON(bits)	    bVAL32(bits, 32)

#define	VXGE_HAL_STATS_VPATH_TX_TTL_ETH_FRMS_OFFSET	    (0x000>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_TTL_ETH_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_TTL_ETH_OCTETS_OFFSET	    (0x008>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_TTL_ETH_OCTETS(bits)    bits

#define	VXGE_HAL_STATS_VPATH_TX_DATA_OCTETS_OFFSET	    (0x010>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_DATA_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_MCAST_FRMS_OFFSET	    (0x018>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_MCAST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_BCAST_FRMS_OFFSET	    (0x020>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_BCAST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_UCAST_FRMS_OFFSET	    (0x028>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_UCAST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_TAGGED_FRMS_OFFSET	    (0x030>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_TAGGED_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_VLD_IP_OFFSET		    (0x038>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_VLD_IP(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_VLD_IP_OCTETS_OFFSET	    (0x040>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_VLD_IP_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_ICMP_OFFSET		    (0x048>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_ICMP(bits)		    bits

#define	VXGE_HAL_STATS_VPATH_TX_TCP_OFFSET		    (0x050>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_TCP(bits)		    bits

#define	VXGE_HAL_STATS_VPATH_TX_RST_TCP_OFFSET		    (0x058>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_RST_TCP(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_UDP_OFFSET		    (0x060>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_UDP(bits)		    bits

#define	VXGE_HAL_STATS_VPATH_TX_LOST_IP_OFFSET		    (0x068>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_LOST_IP(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_UNKNOWN_PROTOCOL_OFFSET	    (0x068>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_UNKNOWN_PROTOCOL(bits)  bits

#define	VXGE_HAL_STATS_VPATH_TX_PARSE_ERROR_OFFSET	    (0x070>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_PARSE_ERROR(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_TCP_OFFLOAD_OFFSET	    (0x078>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_TCP_OFFLOAD(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_TX_RETX_TCP_OFFLOAD_OFFSET	    (0x080>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_RETX_TCP_OFFLOAD(bits)  bits

#define	VXGE_HAL_STATS_VPATH_TX_LOST_IP_OFFLOAD_OFFSET	    (0x088>>3)
#define	VXGE_HAL_STATS_GET_VPATH_TX_LOST_IP_OFFLOAD(bits)   bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_ETH_FRMS_OFFSET	    (0x090>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_ETH_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_VLD_FRMS_OFFSET		    (0x098>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_VLD_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_OFFLOAD_FRMS_OFFSET	    (0x0a0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_OFFLOAD_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_ETH_OCTETS_OFFSET	    (0x0a8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_ETH_OCTETS(bits)    bits

#define	VXGE_HAL_STATS_VPATH_RX_DATA_OCTETS_OFFSET	    (0x0b0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_DATA_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_OFFLOAD_OCTETS_OFFSET	    (0x0b8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_OFFLOAD_OCTETS(bits)    bits

#define	VXGE_HAL_STATS_VPATH_RX_VLD_MCAST_FRMS_OFFSET	    (0x0c0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_VLD_MCAST_FRMS(bits)    bits

#define	VXGE_HAL_STATS_VPATH_RX_VLD_BCAST_FRMS_OFFSET	    (0x0c8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_VLD_BCAST_FRMS(bits)    bits

#define	VXGE_HAL_STATS_VPATH_RX_ACC_UCAST_FRMS_OFFSET	    (0x0d0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_ACC_UCAST_FRMS(bits)    bits

#define	VXGE_HAL_STATS_VPATH_RX_ACC_NUCAST_FRMS_OFFSET	    (0x0d8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_ACC_NUCAST_FRMS(bits)   bits

#define	VXGE_HAL_STATS_VPATH_RX_TAGGED_FRMS_OFFSET	    (0x0e0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TAGGED_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_LONG_FRMS_OFFSET	    (0x0e8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_LONG_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_USIZED_FRMS_OFFSET	    (0x0f0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_USIZED_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_OSIZED_FRMS_OFFSET	    (0x0f8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_OSIZED_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_FRAG_FRMS_OFFSET	    (0x100>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_FRAG_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_JABBER_FRMS_OFFSET	    (0x108>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_JABBER_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_64_FRMS_OFFSET	    (0x110>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_64_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_65_127_FRMS_OFFSET	    (0x118>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_65_127_FRMS(bits)   bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_128_255_FRMS_OFFSET	    (0x120>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_128_255_FRMS(bits)   bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_256_511_FRMS_OFFSET	    (0x128>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_256_511_FRMS(bits)   bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_512_1023_FRMS_OFFSET    (0x130>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_512_1023_FRMS(bits) bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_1024_1518_FRMS_OFFSET   (0x138>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_1024_1518_FRMS(bits) bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_1519_4095_FRMS_OFFSET   (0x140>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_1519_4095_FRMS(bits) bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_4096_8191_FRMS_OFFSET   (0x148>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_4096_8191_FRMS(bits) bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_8192_MAX_FRMS_OFFSET    (0x150>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_8192_MAX_FRMS(bits) bits

#define	VXGE_HAL_STATS_VPATH_RX_TTL_GT_MAX_FRMS_OFFSET	    (0x158>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_GT_MAX_FRMS(bits)   bits

#define	VXGE_HAL_STATS_VPATH_RX_IP_OFFSET		    (0x160>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_IP(bits)		    bits

#define	VXGE_HAL_STATS_VPATH_RX_ACC_IP_OFFSET		    (0x168>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_ACC_IP(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_IP_OCTETS_OFFSET	    (0x170>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_IP_OCTETS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_ERR_IP_OFFSET		    (0x178>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_ERR_IP(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_ICMP_OFFSET		    (0x180>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_ICMP(bits)		    bits

#define	VXGE_HAL_STATS_VPATH_RX_TCP_OFFSET		    (0x188>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_TCP(bits)		    bits

#define	VXGE_HAL_STATS_VPATH_RX_UDP_OFFSET		    (0x190>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_UDP(bits)		    bits

#define	VXGE_HAL_STATS_VPATH_RX_ERR_TCP_OFFSET		    (0x198>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_ERR_TCP(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_LOST_FRMS_OFFSET	    (0x1a0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_LOST_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_LOST_IP_OFFSET		    (0x1a8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_LOST_IP(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_RX_LOST_IP_OFFLOAD_OFFSET	    (0x1b0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_LOST_IP_OFFLOAD(bits)   bits

#define	VXGE_HAL_STATS_VPATH_RX_QUEUE_FULL_DISCARD_OFFSET   (0x1b8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_QUEUE_FULL_DISCARD(bits) bVAL16(bits, 8)

#define	VXGE_HAL_STATS_VPATH_RX_RED_DISCARD_OFFSET	    (0x1b8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_RED_DISCARD(bits)	    bVAL16(bits, 24)

#define	VXGE_HAL_STATS_VPATH_RX_SLEEP_DISCARD_OFFSET	    (0x1b8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_SLEEP_DISCARD(bits)	    bVAL16(bits, 42)

#define	VXGE_HAL_STATS_VPATH_RX_MPA_OK_FRMS_OFFSET	    (0x1c0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_RX_MPA_OK_FRMS(bits)	    bits

#define	VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM0_OFFSET	    (0x1d0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM0(bits)	    bVAL32(bits, 0)

#define	VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM1_OFFSET	    (0x1d0>>3)
#define	VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM1(bits)	    bVAL32(bits, 32)

#define	VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM2_OFFSET	    (0x1d8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM2(bits)	    bVAL32(bits, 0)

#define	VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM3_OFFSET	    (0x1d8>>3)
#define	VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM3(bits)	    bVAL32(bits, 32)

/*
 * struct vxge_hal_xmac_aggr_stats_t - Per-Aggregator XMAC Statistics
 *
 * @tx_frms: Count of data frames transmitted on this Aggregator on all
 *		its Aggregation ports. Does not include LACPDUs or Marker PDUs.
 *		However, does include frames discarded by the Distribution
 *		function.
 * @tx_data_octets: Count of data and padding octets of frames transmitted
 *		on this Aggregator on all its Aggregation ports.Does not include
 *		octets of LACPDUs or Marker PDUs. However,does include octets of
 *		frames discarded by the Distribution function.
 * @tx_mcast_frms: Count of data frames transmitted (to a group destination
 *		address other than the broadcast address) on this Aggregator on
 *		all its Aggregation ports. Does not include LACPDUs or Marker
 *		PDUs. However, does include frames discarded by the Distribution
 *		function.
 * @tx_bcast_frms: Count of broadcast data frames transmitted on this Aggregator
 *		on all its Aggregation ports. Does not include LACPDUs or Marker
 *		PDUs. However, does include frames discarded by the Distribution
 *		function.
 * @tx_discarded_frms: Count of data frames to be transmitted on this Aggregator
 *		that are discarded by the Distribution function.This occurs when
 *		conversation are allocated to different ports and have to be
 *		flushed on old ports
 * @tx_errored_frms: Count of data frames transmitted on this Aggregator that
 *		experience transmission errors on its Aggregation ports.
 * @rx_frms: Count of data frames received on this Aggregator on all its
 *		Aggregation ports. Does not include LACPDUs or Marker PDUs.
 *		Also, does not include frames discarded by the Collection
 *		function.
 * @rx_data_octets: Count of data and padding octets of frames received on this
 *		Aggregator on all its Aggregation ports. Does not include octets
 *		of LACPDUs or Marker PDUs.Also,does not include octets of frames
 *		discarded by the Collection function.
 * @rx_mcast_frms: Count of data frames received (from a group destination
 *		address other than the broadcast address) on this Aggregator on
 *		all its Aggregation ports. Does not include LACPDUs or Marker
 *		PDUs. Also, does not include frames discarded by the Collection
 *		function.
 * @rx_bcast_frms: Count of broadcast data frames received on this Aggregator on
 *		all its Aggregation ports. Does not include LACPDUs or Marker
 *		PDUs. Also, does not include frames discarded by the Collection
 *		function.
 * @rx_discarded_frms: Count of data frames received on this Aggregator that are
 *		discarded by the Collection function because the Collection
 *		function was disabled on the port which the frames are received.
 * @rx_errored_frms: Count of data frames received on this Aggregator that are
 *		discarded by its Aggregation ports, or are discarded by the
 *		Collection function of the Aggregator, or that are discarded by
 *		the Aggregator due to detection of an illegal Slow Protocols PDU
 * @rx_unknown_slow_proto_frms: Count of data frames received on this Aggregator
 *		that are discarded by its Aggregation ports due to detection of
 *		an unknown Slow Protocols PDU.
 *
 * Per aggregator XMAC RX statistics.
 */
#pragma pack(1)
typedef struct vxge_hal_xmac_aggr_stats_t {
/* 0x000 */		u64	tx_frms;
/* 0x008 */		u64	tx_data_octets;
/* 0x010 */		u64	tx_mcast_frms;
/* 0x018 */		u64	tx_bcast_frms;
/* 0x020 */		u64	tx_discarded_frms;
/* 0x028 */		u64	tx_errored_frms;
/* 0x030 */		u64	rx_frms;
/* 0x038 */		u64	rx_data_octets;
/* 0x040 */		u64	rx_mcast_frms;
/* 0x048 */		u64	rx_bcast_frms;
/* 0x050 */		u64	rx_discarded_frms;
/* 0x058 */		u64	rx_errored_frms;
/* 0x060 */		u64	rx_unknown_slow_proto_frms;
} vxge_hal_xmac_aggr_stats_t;

#pragma pack()

/*
 * struct vxge_hal_xmac_port_stats_t - XMAC Port Statistics
 *
 * @tx_ttl_frms: Count of successfully transmitted MAC frames
 * @tx_ttl_octets: Count of total octets of transmitted frames, not including
 *	   framing characters (i.e. less framing bits). To determine the
 *	   total octets of transmitted frames, including framing characters,
 *	   multiply PORTn_TX_TTL_FRMS by 8 and add it to this stat (unless
 *	   otherwise configured, this stat only counts frames that have
 *	   8 bytes of preamble for each frame). This stat can be configured
 *	   (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count everything
 *	   including the preamble octets.
 * @tx_data_octets: Count of data and padding octets of successfully transmitted
 *	   frames.
 * @tx_mcast_frms: Count of successfully transmitted frames to a group address
 *	   other than the broadcast address.
 * @tx_bcast_frms: Count of successfully transmitted frames to the broadcast
 *	   group address.
 * @tx_ucast_frms: Count of transmitted frames containing a unicast address.
 *	   Includes discarded frames that are not sent to the network.
 * @tx_tagged_frms: Count of transmitted frames containing a VLAN tag.
 * @tx_vld_ip: Count of transmitted IP datagrams that are passed to the network.
 * @tx_vld_ip_octets: Count of total octets of transmitted IP datagrams that
 *	   are passed to the network.
 * @tx_icmp: Count of transmitted ICMP messages. Includes messages not sent
 *	   due to problems within ICMP.
 * @tx_tcp: Count of transmitted TCP segments. Does not include segments
 *	   containing retransmitted octets.
 * @tx_rst_tcp: Count of transmitted TCP segments containing the RST flag.
 * @tx_udp: Count of transmitted UDP datagrams.
 * @tx_parse_error: Increments when the TPA is unable to parse a packet. This
 *	   generally occurs when a packet is corrupt somehow, including
 *	   packets that have IP version mismatches, invalid Layer 2 control
 *	   fields, etc. L3/L4 checksums are not offloaded, but the packet
 *	   is still be transmitted.
 * @tx_unknown_protocol: Increments when the TPA encounters an unknown
 *	   protocol, such as a new IPv6 extension header, or an unsupported
 *	   Routing Type. The packet still has a checksum calculated but it
 *	   may be incorrect.
 * @tx_pause_ctrl_frms: Count of MAC PAUSE control frames that are transmitted.
 *	   Since, the only control frames supported by this device are
 *	   PAUSE frames, this register is a count of all transmitted MAC
 *	   control frames.
 * @tx_marker_pdu_frms: Count of Marker PDUs transmitted on this Aggr port
 * @tx_lacpdu_frms: Count of LACPDUs transmitted on this Aggregation port.
 * @tx_drop_ip: Count of transmitted IP datagrams that could not be passed to
 *	   the network. Increments because of: 1) An internal processing error
 *	   (such as an uncorrectable ECC error). 2) A frame parsing error
 *	   during IP checksum calculation.
 * @tx_marker_resp_pdu_frms: Count of Marker Response PDUs transmitted on this
 *	   Aggregation port.
 * @tx_xgmii_char2_match: Maintains a count of the number of transmitted XGMII
 *	   characters that match a pattern that is programmable through
 *	   register XMAC_STATS_TX_XGMII_CHAR_PORTn. By default, the pattern
 *	   is set to /T/ (i.e. the terminate character), thus the statistic
 *	   tracks the number of transmitted Terminate characters.
 * @tx_xgmii_char1_match: Maintains a count of the number of transmitted XGMII
 *	   characters that match a pattern that is programmable through
 *	   register XMAC_STATS_TX_XGMII_CHAR_PORTn. By default, the pattern
 *	   is set to /S/ (i.e. the start character), thus the statistic tracks
 *	   the number of transmitted Start characters.
 * @tx_xgmii_column2_match: Maintains a count of the number of transmitted XGMII
 *	   columns that match a pattern that is programmable through register
 *	   XMAC_STATS_TX_XGMII_COLUMN2_PORTn. By default, the pattern is set
 *	   to 4 x /E/ (i.e. a column containing all error characters), thus
 *	   the statistic tracks the number of Error columns transmitted at
 *	   any time. If XMAC_STATS_TX_XGMII_BEHAV_COLUMN2_PORTn.NEAR_COL1 is
 *	   set to 1, then this stat increments when COLUMN2 is found within
 *	   'n' clocks after COLUMN1. Here, 'n' is defined by
 *	   XMAC_STATS_TX_XGMII_BEHAV_COLUMN2_PORTn.NUM_COL (if 'n' is set
 *	   to 0, then it means to search anywhere for COLUMN2).
 * @tx_xgmii_column1_match: Maintains a count of the number of transmitted XGMII
 *	   columns that match a pattern that is programmable through register
 *	   XMAC_STATS_TX_XGMII_COLUMN1_PORTn. By default, the pattern is set
 *	   to 4 x /I/ (i.e. a column containing all idle characters), thus the
 *	   statistic tracks the number of transmitted Idle columns.
 * @unused1: Reserved
 * @tx_any_err_frms: Count of transmitted frames containing any error that
 *	   prevents them from being passed to the network. Increments if
 *	   there is an ECC while reading the frame out of the transmit
 *	   buffer. Also increments if the transmit protocol assist (TPA)
 *	   block determines that the frame should not be sent.
 * @tx_drop_frms: Count of frames that could not be sent for no other reason
 *	   than internal MAC processing. Increments once whenever the
 *	   transmit buffer is flushed (due to an ECC error on a memory
 *	   descriptor).
 * @rx_ttl_frms: Count of total received MAC frames, including frames received
 *	   with frame-too-long, FCS, or length errors. This stat can be
 *	   configured (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count
 *	   everything, even "frames" as small one byte of preamble.
 * @rx_vld_frms: Count of successfully received MAC frames. Does not include
 *	   frames received with frame-too-long, FCS, or length errors.
 * @rx_offload_frms: Count of offloaded received frames that are passed to
 *	   the host.
 * @rx_ttl_octets: Count of total octets of received frames, not including
 *	   framing characters (i.e. less framing bits). To determine the
 *	   total octets of received frames, including framing characters,
 *	   multiply PORTn_RX_TTL_FRMS by 8 and add it to this stat (unless
 *	   otherwise configured, this stat only counts frames that have 8
 *	   bytes of preamble for each frame). This stat can be configured
 *	   (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count everything,
 *	   even the preamble octets of "frames" as small one byte of preamble.
 * @rx_data_octets: Count of data and padding octets of successfully received
 *	   frames. Does not include frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_offload_octets: Count of total octets, not including framing
 *	   characters, of offloaded received frames that are passed
 *	   to the host.
 * @rx_vld_mcast_frms: Count of successfully received MAC frames containing a
 *		 nonbroadcast group address. Does not include frames received
 *	   with frame-too-long, FCS, or length errors.
 * @rx_vld_bcast_frms: Count of successfully received MAC frames containing
 *	   the broadcast group address. Does not include frames received
 *	   with frame-too-long, FCS, or length errors.
 * @rx_accepted_ucast_frms: Count of successfully received frames containing
 *	   a unicast address. Only includes frames that are passed to
 *	   the system.
 * @rx_accepted_nucast_frms: Count of successfully received frames containing
 *	   a non-unicast (broadcast or multicast) address. Only includes
 *	   frames that are passed to the system. Could include, for instance,
 *	   non-unicast frames that contain FCS errors if the MAC_ERROR_CFG
 *	   register is set to pass FCS-errored frames to the host.
 * @rx_tagged_frms: Count of received frames containing a VLAN tag.
 * @rx_long_frms: Count of received frames that are longer than RX_MAX_PYLD_LEN
 *	   + 18 bytes (+ 22 bytes if VLAN-tagged).
 * @rx_usized_frms: Count of received frames of length (including FCS, but not
 *	   framing bits) less than 64 octets, that are otherwise well-formed.
 *	   In other words, counts runts.
 * @rx_osized_frms: Count of received frames of length (including FCS, but not
 *	   framing bits) more than 1518 octets, that are otherwise
 *	   well-formed. Note: If register XMAC_STATS_GLOBAL_CFG.VLAN_HANDLING
 *	   is set to 1, then "more than 1518 octets" becomes "more than 1518
 *	   (1522 if VLAN-tagged) octets".
 * @rx_frag_frms: Count of received frames of length (including FCS, but not
 *	   framing bits) less than 64 octets that had bad FCS. In other
 *	   words, counts fragments.
 * @rx_jabber_frms: Count of received frames of length (including FCS, but not
 *	   framing bits) more than 1518 octets that had bad FCS. In other
 *	   words, counts jabbers. Note: If register
 *	   XMAC_STATS_GLOBAL_CFG.VLAN_HANDLING is set to 1, then "more than
 *	   1518 octets" becomes "more than 1518 (1522 if VLAN-tagged) octets".
 * @rx_ttl_64_frms: Count of total received MAC frames with length (including
 *	   FCS, but not framing bits) of exactly 64 octets. Includes frames
 *	   received with frame-too-long, FCS, or length errors.
 * @rx_ttl_65_127_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 65 and 127
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_128_255_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 128 and 255
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_256_511_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 256 and 511
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_512_1023_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 512 and 1023
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_1024_1518_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 1024 and 1518
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_1519_4095_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 1519 and 4095
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_4096_8191_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 4096 and 8191
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_8192_max_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 8192 and
 *	   RX_MAX_PYLD_LEN+18 octets inclusive. Includes frames received
 *	   with frame-too-long, FCS, or length errors.
 * @rx_ttl_gt_max_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) exceeding
 *	   RX_MAX_PYLD_LEN+18 (+22 bytes if VLAN-tagged) octets inclusive.
 *	   Includes frames received with frame-too-long, FCS, or length errors.
 * @rx_ip: Count of received IP datagrams. Includes errored IP datagrams.
 * @rx_accepted_ip: Count of received IP datagrams that are passed to the system
 * @rx_ip_octets: Count of number of octets in received IP datagrams. Includes
 *	   errored IP datagrams.
 * @rx_err_ip:	Count of received IP datagrams containing errors. For example,
 *	   bad IP checksum.
 * @rx_icmp: Count of received ICMP messages. Includes errored ICMP messages.
 * @rx_tcp: Count of received TCP segments. Includes errored TCP segments.
 *	   Note: This stat contains a count of all received TCP segments,
 *	   regardless of whether or not they pertain to an established
 *	   connection.
 * @rx_udp: Count of received UDP datagrams.
 * @rx_err_tcp: Count of received TCP segments containing errors. For example,
 *	   bad TCP checksum.
 * @rx_pause_count: Count of number of pause quanta that the MAC has been in
 *	   the paused state. Recall, one pause quantum equates to 512
 *	   bit times.
 * @rx_pause_ctrl_frms: Count of received MAC PAUSE control frames.
 * @rx_unsup_ctrl_frms: Count of received MAC control frames that do not
 *	   contain the PAUSE opcode. The sum of RX_PAUSE_CTRL_FRMS and
 *	   this register is a count of all received MAC control frames.
 *	   Note: This stat may be configured to count all layer 2 errors
 *	   (i.e. length errors and FCS errors).
 * @rx_fcs_err_frms: Count of received MAC frames that do not pass FCS. Does
 *	   not include frames received with frame-too-long or
 *	   frame-too-short error.
 * @rx_in_rng_len_err_frms: Count of received frames with a length/type field
 *	   value between 46 (42 for VLAN-tagged frames) and 1500 (also 1500
 *	   for VLAN-tagged frames), inclusive, that does not match the
 *	   number of data octets (including pad) received. Also contains
 *	   a count of received frames with a length/type field less than
 *	   46 (42 for VLAN-tagged frames) and the number of data octets
 *	   (including pad) received is greater than 46 (42 for VLAN-tagged
 *	   frames).
 * @rx_out_rng_len_err_frms:  Count of received frames with length/type field
 *	   between 1501 and 1535 decimal, inclusive.
 * @rx_drop_frms: Count of received frames that could not be passed to the host.
 *	   See PORTn_RX_L2_MGMT_DISCARD, PORTn_RX_RPA_DISCARD,
 *	   PORTn_RX_TRASH_DISCARD, PORTn_RX_RTS_DISCARD, PORTn_RX_RED_DISCARD
 *	   for a list of reasons. Because the RMAC drops one frame at a time,
 *	   this stat also indicates the number of drop events.
 * @rx_discarded_frms: Count of received frames containing error that prevents
 *	   them from being passed to the system. See PORTn_RX_FCS_DISCARD,
 *	   PORTn_RX_LEN_DISCARD, and PORTn_RX_SWITCH_DISCARD for a list of
 *	   reasons.
 * @rx_drop_ip: Count of received IP datagrams that could not be passed to the
 *	   host. See PORTn_RX_DROP_FRMS for a list of reasons.
 * @rx_drop_udp: Count of received UDP datagrams that are not delivered to the
 *	   host. See PORTn_RX_DROP_FRMS for a list of reasons.
 * @rx_marker_pdu_frms: Count of valid Marker PDUs received on this Aggregation
 *	   port.
 * @rx_lacpdu_frms: Count of valid LACPDUs received on this Aggregation port.
 * @rx_unknown_pdu_frms: Count of received frames (on this Aggregation port)
 *	   that carry the Slow Protocols EtherType, but contain an unknown
 *	   PDU. Or frames that contain the Slow Protocols group MAC address,
 *	   but do not carry the Slow Protocols EtherType.
 * @rx_marker_resp_pdu_frms: Count of valid Marker Response PDUs received on
 *	   this Aggregation port.
 * @rx_fcs_discard: Count of received frames that are discarded because the
 *	   FCS check failed.
 * @rx_illegal_pdu_frms: Count of received frames (on this Aggregation port)
 *	   that carry the Slow Protocols EtherType, but contain a badly
 *	   formed PDU. Or frames that carry the Slow Protocols EtherType,
 *	   but contain an illegal value of Protocol Subtype.
 * @rx_switch_discard: Count of received frames that are discarded by the
 *	   internal switch because they did not have an entry in the
 *	   Filtering Database. This includes frames that had an invalid
 *	   destination MAC address or VLAN ID. It also includes frames are
 *	   discarded because they did not satisfy the length requirements
 *	   of the target VPATH.
 * @rx_len_discard: Count of received frames that are discarded because of an
 *	   invalid frame length (includes fragments, oversized frames and
 *	   mismatch between frame length and length/type field). This stat
 *	   can be configured (see XMAC_STATS_GLOBAL_CFG.LEN_DISCARD_HANDLING).
 * @rx_rpa_discard: Count of received frames that were discarded because the
 *	   receive protocol assist (RPA) discovered and error in the frame
 *	   or was unable to parse the frame.
 * @rx_l2_mgmt_discard: Count of Layer 2 management frames (eg. pause frames,
 *	   Link Aggregation Control Protocol (LACP) frames, etc.) that are
 *	   discarded.
 * @rx_rts_discard: Count of received frames that are discarded by the receive
 *	   traffic steering (RTS) logic. Includes those frame discarded
 *	   because the SSC response contradicted the switch table, because
 *	   the SSC timed out, or because the target queue could not fit the
 *	   frame.
 * @rx_trash_discard: Count of received frames that are discarded because
 *	   receive traffic steering (RTS) steered the frame to the trash
 *	   queue.
 * @rx_buff_full_discard: Count of received frames that are discarded because
 *	   internal buffers are full. Includes frames discarded because the
 *	   RTS logic is waiting for an SSC lookup that has no timeout bound.
 *	   Also, includes frames that are dropped because the MAC2FAU buffer
 *	   is nearly full -- this can happen if the external receive buffer
 *	   is full and the receive path is backing up.
 * @rx_red_discard: Count of received frames that are discarded because of RED
 *	   (Random Early Discard).
 * @rx_xgmii_ctrl_err_cnt: Maintains a count of unexpected or misplaced control
 *	   characters occuring between times of normal data transmission
 *	   (i.e. not included in RX_XGMII_DATA_ERR_CNT). This counter is
 *	   incremented when either -
 *	   1) The Reconciliation Sublayer (RS) is expecting one control
 *		  character and gets another (i.e. is expecting a Start
 *		  character, but gets another control character).
 *	   2) Start control character is not in lane 0
 *	   Only increments the count by one for each XGMII column.
 * @rx_xgmii_data_err_cnt: Maintains a count of unexpected control characters
 *	   during normal data transmission. If the Reconciliation Sublayer
 *	   (RS) receives a control character, other than a terminate control
 *	   character, during receipt of data octets then this register is
 *	   incremented. Also increments if the start frame delimiter is not
 *	   found in the correct location. Only increments the count by one
 *	   for each XGMII column.
 * @rx_xgmii_char1_match: Maintains a count of the number of XGMII characters
 *	   that match a pattern that is programmable through register
 *	   XMAC_STATS_RX_XGMII_CHAR_PORTn. By default, the pattern is set
 *	   to /E/ (i.e. the error character), thus the statistic tracks the
 *	   number of Error characters received at any time.
 * @rx_xgmii_err_sym: Count of the number of symbol errors in the received
 *	   XGMII data (i.e. PHY indicates "Receive Error" on the XGMII).
 *	   Only includes symbol errors that are observed between the XGMII
 *	   Start Frame Delimiter and End Frame Delimiter, inclusive. And
 *	   only increments the count by one for each frame.
 * @rx_xgmii_column1_match: Maintains a count of the number of XGMII columns
 *	   that match a pattern that is programmable through register
 *	   XMAC_STATS_RX_XGMII_COLUMN1_PORTn. By default, the pattern is set
 *	   to 4 x /E/ (i.e. a column containing all error characters), thus
 *	   the statistic tracks the number of Error columns received at any
 *	   time.
 * @rx_xgmii_char2_match: Maintains a count of the number of XGMII characters
 *	   that match a pattern that is programmable through register
 *	   XMAC_STATS_RX_XGMII_CHAR_PORTn. By default, the pattern is set
 *	   to /E/ (i.e. the error character), thus the statistic tracks the
 *	   number of Error characters received at any time.
 * @rx_local_fault: Maintains a count of the number of times that link
 *	   transitioned from "up" to "down" due to a local fault.
 * @rx_xgmii_column2_match: Maintains a count of the number of XGMII columns
 *	   that match a pattern that is programmable through register
 *	   XMAC_STATS_RX_XGMII_COLUMN2_PORTn. By default, the pattern is set
 *	   to 4 x /E/ (i.e. a column containing all error characters), thus
 *	   the statistic tracks the number of Error columns received at any
 *	   time. If XMAC_STATS_RX_XGMII_BEHAV_COLUMN2_PORTn.NEAR_COL1 is set
 *	   to 1, then this stat increments when COLUMN2 is found within 'n'
 *	   clocks after COLUMN1. Here, 'n' is defined by
 *	   XMAC_STATS_RX_XGMII_BEHAV_COLUMN2_PORTn.NUM_COL (if 'n' is set to
 *	   0, then it means to search anywhere for COLUMN2).
 * @rx_jettison: Count of received frames that are jettisoned because internal
 *	   buffers are full.
 * @rx_remote_fault: Maintains a count of the number of times that link
 *	   transitioned from "up" to "down" due to a remote fault.
 *
 * XMAC Port Statistics.
 */
#pragma pack(1)
typedef struct vxge_hal_xmac_port_stats_t {
/* 0x000 */		u64	tx_ttl_frms;
/* 0x008 */		u64	tx_ttl_octets;
/* 0x010 */		u64	tx_data_octets;
/* 0x018 */		u64	tx_mcast_frms;
/* 0x020 */		u64	tx_bcast_frms;
/* 0x028 */		u64	tx_ucast_frms;
/* 0x030 */		u64	tx_tagged_frms;
/* 0x038 */		u64	tx_vld_ip;
/* 0x040 */		u64	tx_vld_ip_octets;
/* 0x048 */		u64	tx_icmp;
/* 0x050 */		u64	tx_tcp;
/* 0x058 */		u64	tx_rst_tcp;
/* 0x060 */		u64	tx_udp;
/* 0x068 */		u32	tx_parse_error;
/* 0x06c */		u32	tx_unknown_protocol;
/* 0x070 */		u64	tx_pause_ctrl_frms;
/* 0x078 */		u32	tx_marker_pdu_frms;
/* 0x07c */		u32	tx_lacpdu_frms;
/* 0x080 */		u32	tx_drop_ip;
/* 0x084 */		u32	tx_marker_resp_pdu_frms;
/* 0x088 */		u32	tx_xgmii_char2_match;
/* 0x08c */		u32	tx_xgmii_char1_match;
/* 0x090 */		u32	tx_xgmii_column2_match;
/* 0x094 */		u32	tx_xgmii_column1_match;
/* 0x098 */		u32	unused1;
/* 0x09c */		u16	tx_any_err_frms;
/* 0x09e */		u16	tx_drop_frms;
/* 0x0a0 */		u64	rx_ttl_frms;
/* 0x0a8 */		u64	rx_vld_frms;
/* 0x0b0 */		u64	rx_offload_frms;
/* 0x0b8 */		u64	rx_ttl_octets;
/* 0x0c0 */		u64	rx_data_octets;
/* 0x0c8 */		u64	rx_offload_octets;
/* 0x0d0 */		u64	rx_vld_mcast_frms;
/* 0x0d8 */		u64	rx_vld_bcast_frms;
/* 0x0e0 */		u64	rx_accepted_ucast_frms;
/* 0x0e8 */		u64	rx_accepted_nucast_frms;
/* 0x0f0 */		u64	rx_tagged_frms;
/* 0x0f8 */		u64	rx_long_frms;
/* 0x100 */		u64	rx_usized_frms;
/* 0x108 */		u64	rx_osized_frms;
/* 0x110 */		u64	rx_frag_frms;
/* 0x118 */		u64	rx_jabber_frms;
/* 0x120 */		u64	rx_ttl_64_frms;
/* 0x128 */		u64	rx_ttl_65_127_frms;
/* 0x130 */		u64	rx_ttl_128_255_frms;
/* 0x138 */		u64	rx_ttl_256_511_frms;
/* 0x140 */		u64	rx_ttl_512_1023_frms;
/* 0x148 */		u64	rx_ttl_1024_1518_frms;
/* 0x150 */		u64	rx_ttl_1519_4095_frms;
/* 0x158 */		u64	rx_ttl_4096_8191_frms;
/* 0x160 */		u64	rx_ttl_8192_max_frms;
/* 0x168 */		u64	rx_ttl_gt_max_frms;
/* 0x170 */		u64	rx_ip;
/* 0x178 */		u64	rx_accepted_ip;
/* 0x180 */		u64	rx_ip_octets;
/* 0x188 */		u64	rx_err_ip;
/* 0x190 */		u64	rx_icmp;
/* 0x198 */		u64	rx_tcp;
/* 0x1a0 */		u64	rx_udp;
/* 0x1a8 */		u64	rx_err_tcp;
/* 0x1b0 */		u64	rx_pause_count;
/* 0x1b8 */		u64	rx_pause_ctrl_frms;
/* 0x1c0 */		u64	rx_unsup_ctrl_frms;
/* 0x1c8 */		u64	rx_fcs_err_frms;
/* 0x1d0 */		u64	rx_in_rng_len_err_frms;
/* 0x1d8 */		u64	rx_out_rng_len_err_frms;
/* 0x1e0 */		u64	rx_drop_frms;
/* 0x1e8 */		u64	rx_discarded_frms;
/* 0x1f0 */		u64	rx_drop_ip;
/* 0x1f8 */		u64	rx_drop_udp;
/* 0x200 */		u32	rx_marker_pdu_frms;
/* 0x204 */		u32	rx_lacpdu_frms;
/* 0x208 */		u32	rx_unknown_pdu_frms;
/* 0x20c */		u32	rx_marker_resp_pdu_frms;
/* 0x210 */		u32	rx_fcs_discard;
/* 0x214 */		u32	rx_illegal_pdu_frms;
/* 0x218 */		u32	rx_switch_discard;
/* 0x21c */		u32	rx_len_discard;
/* 0x220 */		u32	rx_rpa_discard;
/* 0x224 */		u32	rx_l2_mgmt_discard;
/* 0x228 */		u32	rx_rts_discard;
/* 0x22c */		u32	rx_trash_discard;
/* 0x230 */		u32	rx_buff_full_discard;
/* 0x234 */		u32	rx_red_discard;
/* 0x238 */		u32	rx_xgmii_ctrl_err_cnt;
/* 0x23c */		u32	rx_xgmii_data_err_cnt;
/* 0x240 */		u32	rx_xgmii_char1_match;
/* 0x244 */		u32	rx_xgmii_err_sym;
/* 0x248 */		u32	rx_xgmii_column1_match;
/* 0x24c */		u32	rx_xgmii_char2_match;
/* 0x250 */		u32	rx_local_fault;
/* 0x254 */		u32	rx_xgmii_column2_match;
/* 0x258 */		u32	rx_jettison;
/* 0x25c */		u32	rx_remote_fault;
} vxge_hal_xmac_port_stats_t;

#pragma pack()

/*
 * struct vxge_hal_mrpcim_xmac_stats_t - XMAC Statistics
 *
 * @aggr_stats: Statistics on aggregate port(port 0, port 1)
 * @port_stats: Staticstics on ports(wire 0, wire 1, lag)
 *
 * XMAC Statistics.
 */
typedef struct vxge_hal_mrpcim_xmac_stats_t {
	vxge_hal_xmac_aggr_stats_t	aggr_stats[VXGE_HAL_MAC_MAX_AGGR_PORTS];
	vxge_hal_xmac_port_stats_t	port_stats[VXGE_HAL_MAC_MAX_PORTS];
} vxge_hal_mrpcim_xmac_stats_t;

/*
 * struct vxge_hal_xmac_vpath_tx_stats_t - XMAC Vpath Tx Statistics
 *
 * @tx_ttl_eth_frms: Count of successfully transmitted MAC frames.
 * @tx_ttl_eth_octets: Count of total octets of transmitted frames,
 *		not including framing characters (i.e. less framing bits).
 *		To determine the total octets of transmitted frames, including
 *		framing characters, multiply TX_TTL_ETH_FRMS by 8 and add it to
 *		this stat (the device always prepends 8 bytes of preamble for
 *		each frame)
 * @tx_data_octets: Count of data and padding octets of successfully transmitted
 *		frames.
 * @tx_mcast_frms: Count of successfully transmitted frames to a group address
 *		other than the broadcast address.
 * @tx_bcast_frms: Count of successfully transmitted frames to the broadcast
 *		group address.
 * @tx_ucast_frms: Count of transmitted frames containing a unicast address.
 *		Includes discarded frames that are not sent to the network.
 * @tx_tagged_frms: Count of transmitted frames containing a VLAN tag.
 * @tx_vld_ip: Count of transmitted IP datagrams that are passed to the network.
 * @tx_vld_ip_octets: Count of total octets of transmitted IP datagrams that
 *	   are passed to the network.
 * @tx_icmp: Count of transmitted ICMP messages. Includes messages not sent due
 *	   to problems within ICMP.
 * @tx_tcp: Count of transmitted TCP segments. Does not include segments
 *	   containing retransmitted octets.
 * @tx_rst_tcp: Count of transmitted TCP segments containing the RST flag.
 * @tx_udp: Count of transmitted UDP datagrams.
 * @tx_unknown_protocol: Increments when the TPA encounters an unknown protocol,
 *	   such as a new IPv6 extension header, or an unsupported Routing
 *	   Type. The packet still has a checksum calculated but it may be
 *	   incorrect.
 * @tx_lost_ip: Count of transmitted IP datagrams that could not be passed
 *	   to the network. Increments because of: 1) An internal processing
 *	   error (such as an uncorrectable ECC error). 2) A frame parsing
 *	   error during IP checksum calculation.
 * @unused1: Reserved.
 * @tx_parse_error: Increments when the TPA is unable to parse a packet. This
 *	   generally occurs when a packet is corrupt somehow, including
 *	   packets that have IP version mismatches, invalid Layer 2 control
 *	   fields, etc. L3/L4 checksums are not offloaded, but the packet
 *	   is still be transmitted.
 * @tx_tcp_offload: For frames belonging to offloaded sessions only, a count
 *	   of transmitted TCP segments. Does not include segments containing
 *	   retransmitted octets.
 * @tx_retx_tcp_offload: For frames belonging to offloaded sessions only, the
 *	   total number of segments retransmitted. Retransmitted segments
 *	   that are sourced by the host are counted by the host.
 * @tx_lost_ip_offload: For frames belonging to offloaded sessions only, a count
 *	   of transmitted IP datagrams that could not be passed to the
 *	   network.
 *
 * XMAC Vpath TX Statistics.
 */
#pragma pack(1)
typedef struct vxge_hal_xmac_vpath_tx_stats_t {
	u64	tx_ttl_eth_frms;
	u64	tx_ttl_eth_octets;
	u64	tx_data_octets;
	u64	tx_mcast_frms;
	u64	tx_bcast_frms;
	u64	tx_ucast_frms;
	u64	tx_tagged_frms;
	u64	tx_vld_ip;
	u64	tx_vld_ip_octets;
	u64	tx_icmp;
	u64	tx_tcp;
	u64	tx_rst_tcp;
	u64	tx_udp;
	u32	tx_unknown_protocol;
	u32	tx_lost_ip;
	u32	unused1;
	u32	tx_parse_error;
	u64	tx_tcp_offload;
	u64	tx_retx_tcp_offload;
	u64	tx_lost_ip_offload;
} vxge_hal_xmac_vpath_tx_stats_t;

#pragma pack()

/*
 * struct vxge_hal_xmac_vpath_rx_stats_t - XMAC Vpath RX Statistics
 *
 * @rx_ttl_eth_frms: Count of successfully received MAC frames.
 * @rx_vld_frms: Count of successfully received MAC frames. Does not include
 *	   frames received with frame-too-long, FCS, or length errors.
 * @rx_offload_frms: Count of offloaded received frames that are passed to
 *	   the host.
 * @rx_ttl_eth_octets: Count of total octets of received frames, not including
 *	   framing characters (i.e. less framing bits). Only counts octets
 *	   of frames that are at least 14 bytes (18 bytes for VLAN-tagged)
 *	   before FCS. To determine the total octets of received frames,
 *	   including framing characters, multiply RX_TTL_ETH_FRMS by 8 and
 *	   add it to this stat (the stat RX_TTL_ETH_FRMS only counts frames
 *	   that have the required 8 bytes of preamble).
 * @rx_data_octets: Count of data and padding octets of successfully received
 *	   frames. Does not include frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_offload_octets: Count of total octets, not including framing characters,
 *	   of offloaded received frames that are passed to the host.
 * @rx_vld_mcast_frms: Count of successfully received MAC frames containing a
 *	   nonbroadcast group address. Does not include frames received with
 *	   frame-too-long, FCS, or length errors.
 * @rx_vld_bcast_frms: Count of successfully received MAC frames containing the
 *	   broadcast group address. Does not include frames received with
 *	   frame-too-long, FCS, or length errors.
 * @rx_accepted_ucast_frms: Count of successfully received frames containing
 *	   a unicast address. Only includes frames that are passed to the
 *	   system.
 * @rx_accepted_nucast_frms: Count of successfully received frames containing
 *	   a non-unicast (broadcast or multicast) address. Only includes
 *	   frames that are passed to the system. Could include, for instance,
 *	   non-unicast frames that contain FCS errors if the MAC_ERROR_CFG
 *	   register is set to pass FCS-errored frames to the host.
 * @rx_tagged_frms: Count of received frames containing a VLAN tag.
 * @rx_long_frms: Count of received frames that are longer than RX_MAX_PYLD_LEN
 *	   + 18 bytes (+ 22 bytes if VLAN-tagged).
 * @rx_usized_frms: Count of received frames of length (including FCS, but not
 *	   framing bits) less than 64 octets, that are otherwise well-formed.
 *	   In other words, counts runts.
 * @rx_osized_frms: Count of received frames of length (including FCS, but not
 *	   framing bits) more than 1518 octets, that are otherwise
 *	   well-formed.
 * @rx_frag_frms: Count of received frames of length (including FCS, but not
 *	   framing bits) less than 64 octets that had bad FCS. In other words,
 *	   counts fragments.
 * @rx_jabber_frms: Count of received frames of length (including FCS, but not
 *	   framing bits) more than 1518 octets that had bad FCS. In other
 *	   words, counts jabbers.
 * @rx_ttl_64_frms: Count of total received MAC frames with length (including
 *	   FCS, but not framing bits) of exactly 64 octets. Includes frames
 *	   received with frame-too-long, FCS, or length errors.
 * @rx_ttl_65_127_frms: Count of total received MAC frames with length(including
 *	   FCS, but not framing bits) of between 65 and 127 octets inclusive.
 *	   Includes frames received with frame-too-long, FCS, or length errors.
 * @rx_ttl_128_255_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 128 and 255 octets
 *	   inclusive. Includes frames received with frame-too-long, FCS,
 *	   or length errors.
 * @rx_ttl_256_511_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 256 and 511 octets
 *	   inclusive. Includes frames received with frame-too-long, FCS, or
 *	   length errors.
 * @rx_ttl_512_1023_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 512 and 1023
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_1024_1518_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 1024 and 1518
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_1519_4095_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 1519 and 4095
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_4096_8191_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 4096 and 8191
 *	   octets inclusive. Includes frames received with frame-too-long,
 *	   FCS, or length errors.
 * @rx_ttl_8192_max_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) of between 8192 and
 *	   RX_MAX_PYLD_LEN+18 octets inclusive. Includes frames received
 *	   with frame-too-long, FCS, or length errors.
 * @rx_ttl_gt_max_frms: Count of total received MAC frames with length
 *	   (including FCS, but not framing bits) exceeding RX_MAX_PYLD_LEN+18
 *	   (+22 bytes if VLAN-tagged) octets inclusive. Includes frames
 *	   received with frame-too-long, FCS, or length errors.
 * @rx_ip: Count of received IP datagrams. Includes errored IP datagrams.
 * @rx_accepted_ip: Count of received IP datagrams that are passed to the system
 * @rx_ip_octets: Count of number of octets in received IP datagrams.
 *	   Includes errored IP datagrams.
 * @rx_err_ip: Count of received IP datagrams containing errors. For example,
 *	   bad IP checksum.
 * @rx_icmp: Count of received ICMP messages. Includes errored ICMP messages.
 * @rx_tcp: Count of received TCP segments. Includes errored TCP segments.
 *		Note: This stat contains a count of all received TCP segments,
 *		regardless of whether or not they pertain to an established
 *		connection.
 * @rx_udp: Count of received UDP datagrams.
 * @rx_err_tcp: Count of received TCP segments containing errors. For example,
 *		bad TCP checksum.
 * @rx_lost_frms: Count of received frames that could not be passed to the host.
 *		See RX_QUEUE_FULL_DISCARD and RX_RED_DISCARD for list of reasons
 * @rx_lost_ip: Count of received IP datagrams that could not be passed to
 *		the host. See RX_LOST_FRMS for a list of reasons.
 * @rx_lost_ip_offload: For frames belonging to offloaded sessions only, a count
 *		of received IP datagrams that could not be passed to the host.
 *		See RX_LOST_FRMS for a list of reasons.
 * @rx_various_discard: Count of received frames that are discarded because
 *		the target receive queue is full.
 * @rx_sleep_discard: Count of received frames that are discarded because the
 *	   target VPATH is asleep (a Wake-on-LAN magic packet can be used
 *	   to awaken the VPATH).
 * @rx_red_discard: Count of received frames that are discarded because of RED
 *	   (Random Early Discard).
 * @rx_queue_full_discard: Count of received frames that are discarded because
 *		the target receive queue is full.
 * @rx_mpa_ok_frms: Count of received frames that pass the MPA checks.
 *
 * XMAC Vpath RX Statistics.
 */
#pragma pack(1)
typedef struct vxge_hal_xmac_vpath_rx_stats_t {
	u64	rx_ttl_eth_frms;
	u64	rx_vld_frms;
	u64	rx_offload_frms;
	u64	rx_ttl_eth_octets;
	u64	rx_data_octets;
	u64	rx_offload_octets;
	u64	rx_vld_mcast_frms;
	u64	rx_vld_bcast_frms;
	u64	rx_accepted_ucast_frms;
	u64	rx_accepted_nucast_frms;
	u64	rx_tagged_frms;
	u64	rx_long_frms;
	u64	rx_usized_frms;
	u64	rx_osized_frms;
	u64	rx_frag_frms;
	u64	rx_jabber_frms;
	u64	rx_ttl_64_frms;
	u64	rx_ttl_65_127_frms;
	u64	rx_ttl_128_255_frms;
	u64	rx_ttl_256_511_frms;
	u64	rx_ttl_512_1023_frms;
	u64	rx_ttl_1024_1518_frms;
	u64	rx_ttl_1519_4095_frms;
	u64	rx_ttl_4096_8191_frms;
	u64	rx_ttl_8192_max_frms;
	u64	rx_ttl_gt_max_frms;
	u64	rx_ip;
	u64	rx_accepted_ip;
	u64	rx_ip_octets;
	u64	rx_err_ip;
	u64	rx_icmp;
	u64	rx_tcp;
	u64	rx_udp;
	u64	rx_err_tcp;
	u64	rx_lost_frms;
	u64	rx_lost_ip;
	u64	rx_lost_ip_offload;
	u16	rx_various_discard;
	u16	rx_sleep_discard;
	u16	rx_red_discard;
	u16	rx_queue_full_discard;
	u64	rx_mpa_ok_frms;
} vxge_hal_xmac_vpath_rx_stats_t;

#pragma pack()

/*
 * struct vxge_hal_device_xmac_stats_t - XMAC Statistics
 *
 * @vpath_tx_stats: Per vpath XMAC TX stats
 * @vpath_rx_stats: Per vpath XMAC RX stats
 *
 * XMAC Statistics.
 */
typedef struct vxge_hal_device_xmac_stats_t {
	vxge_hal_xmac_vpath_tx_stats_t vpath_tx_stats[VXGE_HAL_MAX_VIRTUAL_PATHS];
	vxge_hal_xmac_vpath_rx_stats_t vpath_rx_stats[VXGE_HAL_MAX_VIRTUAL_PATHS];
} vxge_hal_device_xmac_stats_t;

/*
 * struct vxge_hal_vpath_stats_hw_info_t - X3100 vpath hardware statistics.
 * @ini_num_mwr_sent: The number of PCI memory writes initiated by the PIC block
 *		for the given VPATH
 * @unused1: Reserved
 * @ini_num_mrd_sent: The number of PCI memory reads initiated by the PIC block
 * @unused2: Reserved
 * @ini_num_cpl_rcvd: The number of PCI read completions received by the
 *		PIC block
 * @unused3: Reserved
 * @ini_num_mwr_byte_sent: The number of PCI memory write bytes sent by the PIC
 *		block to the host
 * @ini_num_cpl_byte_rcvd: The number of PCI read completion bytes received by
 *		the PIC block
 * @wrcrdtarb_xoff: TBD
 * @unused4: Reserved
 * @rdcrdtarb_xoff: TBD
 * @unused5: Reserved
 * @vpath_genstats_count0: Configurable statistic #1. Refer to the GENSTATS0_CFG
 *		for information on configuring this statistic
 * @vpath_genstats_count1: Configurable statistic #2. Refer to the GENSTATS1_CFG
 *		for information on configuring this statistic
 * @vpath_genstats_count2: Configurable statistic #3. Refer to the GENSTATS2_CFG
 *		for information on configuring this statistic
 * @vpath_genstats_count3: Configurable statistic #4. Refer to the GENSTATS3_CFG
 *		for information on configuring this statistic
 * @vpath_genstats_count4: Configurable statistic #5. Refer to the GENSTATS4_CFG
 *		for information on configuring this statistic
 * @unused6: Reserved
 * @vpath_gennstats_count5: Configurable statistic #6. Refer to the
 *		GENSTATS5_CFG for information on configuring this statistic
 * @unused7: Reserved
 * @tx_stats: Transmit stats
 * @rx_stats: Receive stats
 * @unused9: Reserved
 * @prog_event_vnum1: Programmable statistic. Increments when internal logic
 *		detects a certain event. See register
 *		XMAC_STATS_CFG.EVENT_VNUM1_CFG for more information.
 * @prog_event_vnum0: Programmable statistic. Increments when internal logic
 *		detects a certain event. See register
 *		XMAC_STATS_CFG.EVENT_VNUM0_CFG for more information.
 * @prog_event_vnum3: Programmable statistic. Increments when internal logic
 *		detects a certain event. See register
 *		XMAC_STATS_CFG.EVENT_VNUM3_CFG for more information.
 * @prog_event_vnum2: Programmable statistic. Increments when internal logic
 *		detects a certain event. See register
 *		XMAC_STATS_CFG.EVENT_VNUM2_CFG for more information.
 * @rx_multi_cast_frame_discard: TBD
 * @unused10: Reserved
 * @rx_frm_transferred: TBD
 * @unused11: Reserved
 * @rxd_returned: TBD
 * @unused12: Reserved
 * @rx_mpa_len_fail_frms: Count of received frames failed the MPA length check
 * @rx_mpa_mrk_fail_frms: Count of received frames failed the MPA marker check
 * @rx_mpa_crc_fail_frms: Count of received frames failed the MPA CRC check
 * @rx_permitted_frms: Count of frames that pass through the FAU and on to the
 *		frame buffer (and subsequently to the host).
 * @rx_vp_reset_discarded_frms: Count of receive frames that are discarded
 *		because the VPATH is in reset
 * @rx_wol_frms: Count of received "magic packet" frames. Stat increments
 *		whenever the received frame matches the VPATH's Wake-on-LAN
 *		signature(s) CRC.
 * @tx_vp_reset_discarded_frms: Count of transmit frames that are discarded
 *		because the VPATH is in reset.Includes frames that are discarded
 *		because the current VPIN does not match that VPIN of the frame
 *
 * X3100 vpath hardware statistics.
 */
#pragma pack(1)
typedef struct vxge_hal_vpath_stats_hw_info_t {
/* 0x000 */	u32 ini_num_mwr_sent;
/* 0x004 */	u32 unused1;
/* 0x008 */	u32 ini_num_mrd_sent;
/* 0x00c */	u32 unused2;
/* 0x010 */	u32 ini_num_cpl_rcvd;
/* 0x014 */	u32 unused3;
/* 0x018 */	u64 ini_num_mwr_byte_sent;
/* 0x020 */	u64 ini_num_cpl_byte_rcvd;
/* 0x028 */	u32 wrcrdtarb_xoff;
/* 0x02c */	u32 unused4;
/* 0x030 */	u32 rdcrdtarb_xoff;
/* 0x034 */	u32 unused5;
/* 0x038 */	u32 vpath_genstats_count0;
/* 0x03c */	u32 vpath_genstats_count1;
/* 0x040 */	u32 vpath_genstats_count2;
/* 0x044 */	u32 vpath_genstats_count3;
/* 0x048 */	u32 vpath_genstats_count4;
/* 0x04c */	u32 unused6;
/* 0x050 */	u32 vpath_genstats_count5;
/* 0x054 */	u32 unused7;
/* 0x058 */	vxge_hal_xmac_vpath_tx_stats_t tx_stats;
/* 0x0e8 */	vxge_hal_xmac_vpath_rx_stats_t rx_stats;
/* 0x220 */	u64 unused9;
/* 0x228 */	u32 prog_event_vnum1;
/* 0x22c */	u32 prog_event_vnum0;
/* 0x230 */	u32 prog_event_vnum3;
/* 0x234 */	u32 prog_event_vnum2;
/* 0x238 */	u16 rx_multi_cast_frame_discard;
/* 0x23a */	u8 unused10[6];
/* 0x240 */	u32 rx_frm_transferred;
/* 0x244 */	u32 unused11;
/* 0x248 */	u16 rxd_returned;
/* 0x24a */	u8 unused12[6];
/* 0x252 */	u16 rx_mpa_len_fail_frms;
/* 0x254 */	u16 rx_mpa_mrk_fail_frms;
/* 0x256 */	u16 rx_mpa_crc_fail_frms;
/* 0x258 */	u16 rx_permitted_frms;
/* 0x25c */	u64 rx_vp_reset_discarded_frms;
/* 0x25e */	u64 rx_wol_frms;
/* 0x260 */	u64 tx_vp_reset_discarded_frms;
} vxge_hal_vpath_stats_hw_info_t;

#pragma pack()

/*
 * struct vxge_hal_device_stats_mrpcim_info_t - X3100 mrpcim hardware
 *					    statistics.
 * @pic_ini_rd_drop: Number of DMA reads initiated by the adapter that were
 *		discarded because the VPATH is out of service
 * @pic_ini_wr_drop: Number of DMA writes initiated by the adapter that were
 *		discared because the VPATH is out of service
 * @pic_wrcrdtarb_ph_crdt_depleted: Number of times the posted header credits
 *		for upstream PCI writes were depleted
 * @unused1: Reserved
 * @pic_wrcrdtarb_ph_crdt_depleted_vplane: Array of structures containing above
 *		two fields.
 * @pic_wrcrdtarb_pd_crdt_depleted: Number of times the posted data credits for
 *		upstream PCI writes were depleted
 * @unused2: Reserved
 * @pic_wrcrdtarb_pd_crdt_depleted_vplane: Array of structures containing above
 *		two fields.
 * @pic_rdcrdtarb_nph_crdt_depleted: Number of times the non-posted header
 *		credits for upstream PCI reads were depleted
 * @unused3: Reserved
 * @pic_rdcrdtarb_nph_crdt_depleted_vplane: Array of structures containing above
 *		two fields.
 * @pic_ini_rd_vpin_drop: Number of DMA reads initiated by the adapter that were
 *		discarded because the VPATH instance number does not match
 * @pic_ini_wr_vpin_drop: Number of DMA writes initiated by the adapter that
 *		were discarded because the VPATH instance number does not match
 * @pic_genstats_count0: Configurable statistic #1. Refer to the GENSTATS0_CFG
 *		for information on configuring this statistic
 * @pic_genstats_count1: Configurable statistic #2. Refer to the GENSTATS1_CFG
 *		for information on configuring this statistic
 * @pic_genstats_count2: Configurable statistic #3. Refer to the GENSTATS2_CFG
 *		for information on configuring this statistic
 * @pic_genstats_count3: Configurable statistic #4. Refer to the GENSTATS3_CFG
 *		for information on configuring this statistic
 * @pic_genstats_count4: Configurable statistic #5. Refer to the GENSTATS4_CFG
 *		for information on configuring this statistic
 * @unused4: Reserved
 * @pic_genstats_count5: Configurable statistic #6. Refer to the GENSTATS5_CFG
 *		for information on configuring this statistic
 * @unused5: Reserved
 * @pci_rstdrop_cpl: TBD
 * @pci_rstdrop_msg: TBD
 * @pci_rstdrop_client1: TBD
 * @pci_rstdrop_client0: TBD
 * @pci_rstdrop_client2: TBD
 * @unused6: Reserved
 * @unused7: Reserved
 * @pci_depl_cplh: Number of times completion header credits were depleted
 * @pci_depl_nph: Number of times non posted header credits were depleted
 * @pci_depl_ph: Number of times the posted header credits were depleted
 * @pci_depl_h_vplane: Array of structures containing above four fields.
 * @unused8: Reserved
 * @pci_depl_cpld: Number of times completion data credits were depleted
 * @pci_depl_npd: Number of times non posted data credits were depleted
 * @pci_depl_pd: Number of times the posted data credits were depleted
 * @pci_depl_d_vplane: Array of structures containing above four fields.
 * @xgmac_port: Array of xmac port stats
 * @xgmac_aggr: Array of aggr port stats
 * @xgmac_global_prog_event_gnum0: Programmable statistic. Increments when
 *		internal logic detects a certain event. See register
 *		XMAC_STATS_GLOBAL_CFG.EVENT_GNUM0_CFG for more information.
 * @xgmac_global_prog_event_gnum1: Programmable statistic. Increments when
 *		internal logic detects a certain event. See register
 *		XMAC_STATS_GLOBAL_CFG.EVENT_GNUM1_CFG for more information.
 * @unused9: Reserved
 * @xgmac.orp_lro_events: TBD
 * @xgmac.orp_bs_events: TBD
 * @xgmac.orp_iwarp_events: TBD
 * @unused10: Reserved
 * @xgmac.tx_permitted_frms: TBD
 * @unused11: Reserved
 * @unused12: Reserved
 * @xgmac.port2_tx_any_frms: TBD
 * @xgmac.port1_tx_any_frms: TBD
 * @xgmac.port0_tx_any_frms: TBD
 * @unused13: Reserved
 * @unused14: Reserved
 * @xgmac.port2_rx_any_frms: TBD
 * @xgmac.port1_rx_any_frms: TBD
 * @xgmac.port0_rx_any_frms: TBD
 *
 * X3100 mrpcim hardware statistics.
 */
#pragma pack(1)
typedef struct vxge_hal_mrpcim_stats_hw_info_t {
/* 0x0000 */	u32	pic_ini_rd_drop;
/* 0x0004 */	u32	pic_ini_wr_drop;
/* 0x0008 */	struct {
	/* 0x0000 */	u32	pic_wrcrdtarb_ph_crdt_depleted;
	/* 0x0004 */	u32	unused1;
		} pic_wrcrdtarb_ph_crdt_depleted_vplane[17];
/* 0x0090 */	struct {
	/* 0x0000 */	u32	pic_wrcrdtarb_pd_crdt_depleted;
	/* 0x0004 */	u32	unused2;
		} pic_wrcrdtarb_pd_crdt_depleted_vplane[17];
/* 0x0118 */	struct {
	/* 0x0000 */	u32	pic_rdcrdtarb_nph_crdt_depleted;
	/* 0x0004 */	u32	unused3;
		} pic_rdcrdtarb_nph_crdt_depleted_vplane[17];
/* 0x01a0 */	u32	pic_ini_rd_vpin_drop;
/* 0x01a4 */	u32	pic_ini_wr_vpin_drop;
/* 0x01a8 */	u32	pic_genstats_count0;
/* 0x01ac */	u32	pic_genstats_count1;
/* 0x01b0 */	u32	pic_genstats_count2;
/* 0x01b4 */	u32	pic_genstats_count3;
/* 0x01b8 */	u32	pic_genstats_count4;
/* 0x01bc */	u32	unused4;
/* 0x01c0 */	u32	pic_genstats_count5;
/* 0x01c4 */	u32	unused5;
/* 0x01c8 */	u32	pci_rstdrop_cpl;
/* 0x01cc */	u32	pci_rstdrop_msg;
/* 0x01d0 */	u32	pci_rstdrop_client1;
/* 0x01d4 */	u32	pci_rstdrop_client0;
/* 0x01d8 */	u32	pci_rstdrop_client2;
/* 0x01dc */	u32	unused6;
/* 0x01e0 */	struct {
	/* 0x0000 */	u16	unused7;
	/* 0x0002 */	u16	pci_depl_cplh;
	/* 0x0004 */	u16	pci_depl_nph;
	/* 0x0006 */	u16	pci_depl_ph;
		} pci_depl_h_vplane[17];
/* 0x0268 */	struct {
	/* 0x0000 */	u16	unused8;
	/* 0x0002 */	u16	pci_depl_cpld;
	/* 0x0004 */	u16	pci_depl_npd;
	/* 0x0006 */	u16	pci_depl_pd;
		} pci_depl_d_vplane[17];
/* 0x02f0 */	vxge_hal_xmac_port_stats_t xgmac_port[3];
/* 0x0a10 */	vxge_hal_xmac_aggr_stats_t xgmac_aggr[2];
/* 0x0ae0 */	u64	xgmac_global_prog_event_gnum0;
/* 0x0ae8 */	u64	xgmac_global_prog_event_gnum1;
/* 0x0af0 */	u64	unused9;
/* 0x0af8 */	u64	xgmac_orp_lro_events;
/* 0x0b00 */	u64	xgmac_orp_bs_events;
/* 0x0b08 */	u64	xgmac_orp_iwarp_events;
/* 0x0b10 */	u32	unused10;
/* 0x0b14 */	u32	xgmac_tx_permitted_frms;
/* 0x0b18 */	u32	unused11;
/* 0x0b1c */	u8	unused12;
/* 0x0b1d */	u8	xgmac_port2_tx_any_frms;
/* 0x0b1e */	u8	xgmac_port1_tx_any_frms;
/* 0x0b1f */	u8	xgmac_port0_tx_any_frms;
/* 0x0b20 */	u32	unused13;
/* 0x0b24 */	u8	unused14;
/* 0x0b25 */	u8	xgmac_port2_rx_any_frms;
/* 0x0b26 */	u8	xgmac_port1_rx_any_frms;
/* 0x0b27 */	u8	xgmac_port0_rx_any_frms;
} vxge_hal_mrpcim_stats_hw_info_t;

#pragma pack()

/*
 * struct vxge_hal_mrpcim_xpak_stats_t - HAL xpak stats
 * @excess_temp: excess transceiver_temperature count
 * @excess_bias_current: excess laser_bias_current count
 * @excess_laser_output: excess laser_output_power count
 * @alarm_transceiver_temp_high: alarm_transceiver_temp_high count value
 * @alarm_transceiver_temp_low : alarm_transceiver_temp_low count value
 * @alarm_laser_bias_current_high: alarm_laser_bias_current_high count value
 * @alarm_laser_bias_current_low: alarm_laser_bias_current_low count value
 * @alarm_laser_output_power_high: alarm_laser_output_power_high count value
 * @alarm_laser_output_power_low: alarm_laser_output_power_low count value
 * @warn_transceiver_temp_high: warn_transceiver_temp_high count value
 * @warn_transceiver_temp_low: warn_transceiver_temp_low count value
 * @warn_laser_bias_current_high: warn_laser_bias_current_high count value
 * @warn_laser_bias_current_low: warn_laser_bias_current_low count value
 * @warn_laser_output_power_high: warn_laser_output_power_high count value
 * @warn_laser_output_power_low: warn_laser_output_power_low count value
 */
typedef struct vxge_hal_mrpcim_xpak_stats_t {
	u32	 excess_temp;
	u32	 excess_bias_current;
	u32	 excess_laser_output;
	u16	 alarm_transceiver_temp_high;
	u16	 alarm_transceiver_temp_low;
	u16	 alarm_laser_bias_current_high;
	u16	 alarm_laser_bias_current_low;
	u16	 alarm_laser_output_power_high;
	u16	 alarm_laser_output_power_low;
	u16	 warn_transceiver_temp_high;
	u16	 warn_transceiver_temp_low;
	u16	 warn_laser_bias_current_high;
	u16	 warn_laser_bias_current_low;
	u16	 warn_laser_output_power_high;
	u16	 warn_laser_output_power_low;
} vxge_hal_mrpcim_xpak_stats_t;

/*
 * struct vxge_hal_device_stats_hw_info_t - X3100 hardware statistics.
 * @vpath_info: VPath statistics
 * @vpath_info_sav: Vpath statistics saved
 *
 * X3100 hardware statistics.
 */
typedef struct vxge_hal_device_stats_hw_info_t {
	vxge_hal_vpath_stats_hw_info_t *vpath_info[VXGE_HAL_MAX_VIRTUAL_PATHS];
	vxge_hal_vpath_stats_hw_info_t vpath_info_sav[VXGE_HAL_MAX_VIRTUAL_PATHS];
} vxge_hal_device_stats_hw_info_t;

/*
 * struct vxge_hal_vpath_stats_sw_common_info_t - HAL common stats for queues.
 * @full_cnt: Number of times the queue was full
 * @usage_cnt: usage count.
 * @usage_max: Maximum usage
 * @avg_compl_per_intr_cnt: Average number of completions per interrupt.
 *	   Note that a total number of completed descriptors
 *	   for the given channel can be calculated as
 *	   (@traffic_intr_cnt * @avg_compl_per_intr_cnt).
 * @total_compl_cnt: Total completion count.
 *	    @total_compl_cnt == (@traffic_intr_cnt * @avg_compl_per_intr_cnt).
 *
 * HAL common counters for queues
 * See also: vxge_hal_vpath_stats_sw_fifo_info_t {},
 *	  vxge_hal_vpath_stats_sw_ring_info_t {},
 *	  vxge_hal_vpath_stats_sw_dmq_info_t {},
 *	  vxge_hal_vpath_stats_sw_umq_info_t {},
 *	  vxge_hal_vpath_stats_sw_srq_info_t {},
 *	  vxge_hal_vpath_stats_sw_cqrq_info_t {}.
 */
typedef struct vxge_hal_vpath_stats_sw_common_info_t {
	u32	full_cnt;
	u32	usage_cnt;
	u32	usage_max;
	u32	avg_compl_per_intr_cnt;
	u32	total_compl_cnt;
} vxge_hal_vpath_stats_sw_common_info_t;

/*
 * struct vxge_hal_vpath_stats_sw_fifo_info_t - HAL fifo statistics
 * @common_stats: Common counters for all queues
 * @total_posts: Total number of postings on the queue.
 * @total_buffers: Total number of buffers posted.
 * @avg_buffers_per_post: Average number of buffers transferred in a single
 *	post operation. Calculated as @total_buffers/@total_posts.
 * @copied_buffers: Number of buffers copied
 * @avg_buffer_size: Average buffer size transferred by a single post
 *		operation. Calculated as a total number of transmitted octets
 *		divided by @total_buffers.
 * @avg_post_size: Average amount of data transferred by a single post.
 *		Calculated as a total number of transmitted octets divided by
 *		@total_posts.
 * @total_frags: Total number of fragments
 * @copied_frags: Number of fragments copied
 * @total_posts_dang_dtrs: Total number of posts involving dangling descriptors.
 * @total_posts_dang_frags: Total number of dangling fragments posted during
 *		 post request containing multiple descriptors.
 * @txd_t_code_err_cnt: Array of transmit transfer codes. The position
 * (index) in this array reflects the transfer code type, for instance
 * 0xA - "loss of link".
 * Value txd_t_code_err_cnt[i] reflects the
 * number of times the corresponding transfer code was encountered.
 *
 * HAL fifo counters
 * See also: vxge_hal_vpath_stats_sw_common_info_t {},
 *	     vxge_hal_vpath_stats_sw_ring_info_t {},
 *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
 *	     vxge_hal_vpath_stats_sw_umq_info_t {},
 *	     vxge_hal_vpath_stats_sw_sq_info_t {},
 *	     vxge_hal_vpath_stats_sw_srq_info_t {},
 *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
 */
typedef struct vxge_hal_vpath_stats_sw_fifo_info_t {
	vxge_hal_vpath_stats_sw_common_info_t common_stats;
	u32	total_posts;
	u32	total_buffers;
	u32	avg_buffers_per_post;
	u32	copied_buffers;
	u32	avg_buffer_size;
	u32	avg_post_size;
	u32	total_frags;
	u32	copied_frags;
	u32	total_posts_dang_dtrs;
	u32	total_posts_dang_frags;
	u32	txd_t_code_err_cnt[16];
} vxge_hal_vpath_stats_sw_fifo_info_t;

/*
 * struct vxge_hal_vpath_stats_sw_ring_info_t - HAL ring statistics
 * @common_stats: Common counters for all queues
 * @rxd_t_code_err_cnt: Array of receive transfer codes. The position
 *		(index) in this array reflects the transfer code type,
 *		for instance
 *		0x7 - for "invalid receive buffer size", or 0x8 - for ECC.
 *		Value rxd_t_code_err_cnt[i] reflects the
 *		number of times the corresponding transfer code was encountered.
 * @lro_clubbed_frms_cnt: Total no of Aggregated packets
 * @lro_sending_both: Number of times the aggregation of packets broken
 * @lro_outof_sequence_pkts: Number of out of order packets
 * @lro_flush_max_pkts: Number of times we reached upper packet limit for
 *		aggregation per session
 * @lro_sum_avg_pkts_aggregated: Total number of packets considered for
 *		aggregation
 * @lro_num_aggregations: Number of packets sent to the stack
 * @lro_max_pkts_aggr: Max number of aggr packet  per ring
 * @lro_avg_agr_pkts: Average Aggregate packet
 *
 * HAL ring counters
 * See also: vxge_hal_vpath_stats_sw_common_info_t {},
 *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
 *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
 *	     vxge_hal_vpath_stats_sw_umq_info_t {},
 *	     vxge_hal_vpath_stats_sw_sq_info_t {},
 *	     vxge_hal_vpath_stats_sw_srq_info_t {},
 *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
 */
typedef struct vxge_hal_vpath_stats_sw_ring_info_t {
	vxge_hal_vpath_stats_sw_common_info_t common_stats;
	u32	rxd_t_code_err_cnt[16];
} vxge_hal_vpath_stats_sw_ring_info_t;

/*
 * struct vxge_hal_vpath_stats_sw_dmq_info_t - HAL dmq statistics
 * @common_stats: Common counters for all queues
 *
 * HAL dmq counters
 * See also: vxge_hal_vpath_stats_sw_common_info_t {},
 *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
 *	     vxge_hal_vpath_stats_sw_ring_info_t {},
 *	     vxge_hal_vpath_stats_sw_umq_info_t {},
 *	     vxge_hal_vpath_stats_sw_sq_info_t {},
 *	     vxge_hal_vpath_stats_sw_srq_info_t {},
 *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
 */
typedef struct vxge_hal_vpath_stats_sw_dmq_info_t {
	vxge_hal_vpath_stats_sw_common_info_t common_stats;
} vxge_hal_vpath_stats_sw_dmq_info_t;

/*
 * struct vxge_hal_vpath_stats_sw_umq_info_t - HAL umq statistics
 * @common_stats: Common counters for all queues
 *
 * HAL dmq counters
 * See also: vxge_hal_vpath_stats_sw_common_info_t {},
 *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
 *	     vxge_hal_vpath_stats_sw_ring_info_t {},
 *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
 *	     vxge_hal_vpath_stats_sw_sq_info_t {},
 *	     vxge_hal_vpath_stats_sw_srq_info_t {},
 *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
 */
typedef struct vxge_hal_vpath_stats_sw_umq_info_t {
	vxge_hal_vpath_stats_sw_common_info_t common_stats;
} vxge_hal_vpath_stats_sw_umq_info_t;

/*
 * struct vxge_hal_vpath_stats_sw_sq_info_t - HAL sq statistics
 * @common_stats: Common counters for all queues
 *
 * HAL srq counters
 * See also: vxge_hal_vpath_stats_sw_common_info_t {},
 *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
 *	     vxge_hal_vpath_stats_sw_ring_info_t {},
 *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
 *	     vxge_hal_vpath_stats_sw_umq_info_t {},
 *	     vxge_hal_vpath_stats_sw_srq_info_t {},
 *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
 */
typedef struct vxge_hal_vpath_stats_sw_sq_info_t {
	vxge_hal_vpath_stats_sw_common_info_t common_stats;
} vxge_hal_vpath_stats_sw_sq_info_t;

/*
 * struct vxge_hal_vpath_stats_sw_srq_info_t - HAL srq statistics
 * @common_stats: Common counters for all queues
 *
 * HAL srq counters
 * See also: vxge_hal_vpath_stats_sw_common_info_t {},
 *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
 *	     vxge_hal_vpath_stats_sw_ring_info_t {},
 *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
 *	     vxge_hal_vpath_stats_sw_umq_info_t {},
 *	     vxge_hal_vpath_stats_sw_sq_info_t {},
 *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
 */
typedef struct vxge_hal_vpath_stats_sw_srq_info_t {
	vxge_hal_vpath_stats_sw_common_info_t common_stats;
} vxge_hal_vpath_stats_sw_srq_info_t;

/*
 * struct vxge_hal_vpath_stats_sw_cqrq_info_t - HAL cqrq statistics
 * @common_stats: Common counters for all queues
 *
 * HAL cqrq counters
 * See also: vxge_hal_vpath_stats_sw_common_info_t {},
 *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
 *	     vxge_hal_vpath_stats_sw_ring_info_t {},
 *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
 *	     vxge_hal_vpath_stats_sw_umq_info_t {},
 *	     vxge_hal_vpath_stats_sw_sq_info_t {},
 *	     vxge_hal_vpath_stats_sw_srq_info_t {}.
 */
typedef struct vxge_hal_vpath_stats_sw_cqrq_info_t {
	vxge_hal_vpath_stats_sw_common_info_t common_stats;
} vxge_hal_vpath_stats_sw_cqrq_info_t;

/*
 * struct vxge_hal_vpath_sw_obj_count_t - Usage count of obj ids in virtual path
 *
 * @no_nces: Number of NCEs on Adapter in this VP
 * @no_sqs: Number of SQs on Adapter in this VP
 * @no_srqs: Number of SRQs on Adapter in this VP
 * @no_cqrqs: Number of CQRQs on Adapter in this VP
 * @no_sessions: Number of sessions on Adapter in this VP
 *
 * This structure contains fields to keep the usage count of objects in
 * a virtual path
 */
typedef struct vxge_hal_vpath_sw_obj_count_t {
	u32	no_nces;
	u32	no_sqs;
	u32	no_srqs;
	u32	no_cqrqs;
	u32	no_sessions;
} vxge_hal_vpath_sw_obj_count_t;

/*
 * struct vxge_hal_vpath_stats_sw_err_t - HAL vpath error statistics
 * @unknown_alarms: Unknown Alarm count
 * @network_sustained_fault: Network sustained fault count
 * @network_sustained_ok: Network sustained ok count
 * @kdfcctl_fifo0_overwrite: Fifo 0 overwrite count
 * @kdfcctl_fifo0_poison: Fifo 0 poison count
 * @kdfcctl_fifo0_dma_error: Fifo 0 dma error count
 * @kdfcctl_fifo1_overwrite: Fifo 1 overwrite count
 * @kdfcctl_fifo1_poison: Fifo 1 poison count
 * @kdfcctl_fifo1_dma_error: Fifo 1 dma error count
 * @kdfcctl_fifo2_overwrite: Fifo 2 overwrite count
 * @kdfcctl_fifo2_poison: Fifo 2 overwrite count
 * @kdfcctl_fifo2_dma_error: Fifo 2 dma error count
 * @dblgen_fifo0_overflow: Dblgen Fifo 0 overflow count
 * @dblgen_fifo1_overflow: Dblgen Fifo 1 overflow count
 * @dblgen_fifo2_overflow: Dblgen Fifo 2 overflow count
 * @statsb_pif_chain_error: Statsb pif chain error count
 * @statsb_drop_timeout: Statsb drop timeout count
 * @target_illegal_access: Target illegal access count
 * @ini_serr_det: Serious error detected count
 * @pci_config_status_err: PCI config status error count
 * @pci_config_uncor_err: PCI config uncorrectable error count
 * @pci_config_cor_err: PCI config correctable error count
 * @mrpcim_to_vpath_alarms: MRPCIM to vpath alarm count
 * @srpcim_to_vpath_alarms: SRPCIM to vpath alarm count
 * @srpcim_msg_to_vpath: SRPCIM to vpath message count
 * @prc_ring_bumps: Ring controller ring bumps count
 * @prc_rxdcm_sc_err: Ring controller rxdsm sc error count
 * @prc_rxdcm_sc_abort: Ring controller rxdsm sc abort count
 * @prc_quanta_size_err: Ring controller quanta size count
 *
 * HAL vpath error statistics
 */
typedef struct vxge_hal_vpath_stats_sw_err_t {
	u32	unknown_alarms;
	u32	network_sustained_fault;
	u32	network_sustained_ok;
	u32	kdfcctl_fifo0_overwrite;
	u32	kdfcctl_fifo0_poison;
	u32	kdfcctl_fifo0_dma_error;
	u32	kdfcctl_fifo1_overwrite;
	u32	kdfcctl_fifo1_poison;
	u32	kdfcctl_fifo1_dma_error;
	u32	kdfcctl_fifo2_overwrite;
	u32	kdfcctl_fifo2_poison;
	u32	kdfcctl_fifo2_dma_error;
	u32	dblgen_fifo0_overflow;
	u32	dblgen_fifo1_overflow;
	u32	dblgen_fifo2_overflow;
	u32	statsb_pif_chain_error;
	u32	statsb_drop_timeout;
	u32	target_illegal_access;
	u32	ini_serr_det;
	u32	pci_config_status_err;
	u32	pci_config_uncor_err;
	u32	pci_config_cor_err;
	u32	mrpcim_to_vpath_alarms;
	u32	srpcim_to_vpath_alarms;
	u32	srpcim_msg_to_vpath;
	u32	prc_ring_bumps;
	u32	prc_rxdcm_sc_err;
	u32	prc_rxdcm_sc_abort;
	u32	prc_quanta_size_err;
} vxge_hal_vpath_stats_sw_err_t;

/*
 * struct vxge_hal_vpath_stats_sw_info_t - HAL vpath sw statistics
 * @soft_reset_cnt: Number of times soft reset is done on this vpath.
 * @obj_counts: Statistics for the VP
 * @error_stats: error counters for the vpath
 * @ring_stats: counters for ring belonging to the vpath
 * @fifo_stats: counters for fifo belonging to the vpath
 * @dmq_stats: counters for dmq belonging to the vpath
 * @umq_stats: counters for umq belonging to the vpath
 *
 * HAL vpath sw statistics
 * See also: vxge_hal_device_info_t {}}.
 */
typedef struct vxge_hal_vpath_stats_sw_info_t {
	u32					soft_reset_cnt;
	vxge_hal_vpath_sw_obj_count_t		obj_counts;
	vxge_hal_vpath_stats_sw_err_t		error_stats;
	vxge_hal_vpath_stats_sw_ring_info_t	ring_stats;
	vxge_hal_vpath_stats_sw_fifo_info_t	fifo_stats;
	vxge_hal_vpath_stats_sw_dmq_info_t	dmq_stats;
	vxge_hal_vpath_stats_sw_umq_info_t	umq_stats;
} vxge_hal_vpath_stats_sw_info_t;

/*
 * struct vxge_hal_device_stats_sw_info_t - HAL own per-device statistics.
 *
 * @soft_reset_cnt: Number of times soft reset is done on this device.
 * @vpath_info: please see vxge_hal_vpath_stats_sw_info_t {}
 * HAL per-device statistics.
 */
typedef struct vxge_hal_device_stats_sw_info_t {
	u32	soft_reset_cnt;
	vxge_hal_vpath_stats_sw_info_t vpath_info[VXGE_HAL_MAX_VIRTUAL_PATHS];
} vxge_hal_device_stats_sw_info_t;

/*
 * struct vxge_hal_device_stats_sw_err_t - HAL device error statistics.
 * @mrpcim_alarms: Number of mrpcim alarms
 * @srpcim_alarms: Number of srpcim alarms
 * @vpath_alarms: Number of vpath alarms
 *
 * HAL Device error stats
 */
typedef struct vxge_hal_device_stats_sw_err_t {
	u32	mrpcim_alarms;
	u32	srpcim_alarms;
	u32	vpath_alarms;
} vxge_hal_device_stats_sw_err_t;

/*
 * struct vxge_hal_device_stats_t - Contains HAL per-device statistics,
 * including hw.
 * @devh: HAL device handle.
 *
 * @hw_dev_info_stats: X3100 statistics maintained by the hardware.
 * @sw_dev_err_stats: HAL's "soft" device error statistics.
 * @sw_dev_info_stats: HAL's "soft" device informational statistics, e.g. number
 *			of completions per interrupt.
 *
 * @is_enabled: True, if device stats collection is enabled.
 *
 * Structure-container of HAL per-device statistics. Note that per-channel
 * statistics are kept in separate structures under HAL's fifo and ring
 * channels.
 */
typedef struct vxge_hal_device_stats_t {
	/* handles */
	vxge_hal_device_h		devh;

	/* HAL device hardware statistics */
	vxge_hal_device_stats_hw_info_t	hw_dev_info_stats;

	/* HAL device "soft" stats */
	vxge_hal_device_stats_sw_err_t  sw_dev_err_stats;
	vxge_hal_device_stats_sw_info_t sw_dev_info_stats;

	/* flags */
	int				is_enabled;
} vxge_hal_device_stats_t;

/*
 * vxge_hal_vpath_hw_stats_enable - Enable vpath h/w statistics.
 * @vpath_handle: Virtual Path handle.
 *
 * Enable the DMA vpath statistics. The function is to be called to re-enable
 * the adapter to update stats into the host memory
 *
 * See also: vxge_hal_vpath_hw_stats_disable()
 */
vxge_hal_status_e
vxge_hal_vpath_hw_stats_enable(
    vxge_hal_vpath_h vpath_handle);

/*
 * vxge_hal_vpath_hw_stats_disable - Disable vpath h/w statistics.
 * @vpath_handle: Virtual Path handle.
 *
 * Enable the DMA vpath statistics. The function is to be called to disable
 * the adapter to update stats into the host memory. This function is not
 * needed to be called, normally.
 *
 * See also: vxge_hal_vpath_hw_stats_enable()
 */
vxge_hal_status_e
vxge_hal_vpath_hw_stats_disable(
    vxge_hal_vpath_h vpath_handle);

/*
 * vxge_hal_vpath_hw_stats_get - Get the vpath hw statistics.
 * @vpath_handle: Virtual Path handle.
 * @hw_stats: Hardware stats
 *
 * Returns the vpath h/w stats.
 *
 * See also: vxge_hal_vpath_hw_stats_enable(), vxge_hal_vpath_hw_stats_disable()
 */
vxge_hal_status_e
vxge_hal_vpath_hw_stats_get(
    vxge_hal_vpath_h vpath_handle,
    vxge_hal_vpath_stats_hw_info_t *hw_stats);

/*
 * vxge_hal_vpath_sw_stats_get - Get the vpath sw statistics.
 * @vpath_handle: Virtual Path handle.
 * @sw_stats: Software stats
 *
 * Returns the vpath s/w stats.
 *
 * See also: vxge_hal_vpath_hw_stats_get()
 */
vxge_hal_status_e
vxge_hal_vpath_sw_stats_get(
    vxge_hal_vpath_h vpath_handle,
    vxge_hal_vpath_stats_sw_info_t *sw_stats);

/*
 * vxge_hal_vpath_stats_access - Get the statistics from the given location
 *			  and offset and perform an operation
 * @vpath_handle: Virtual path handle.
 * @operation: Operation to be performed
 * @offset: Offset with in the location
 * @stat: Pointer to a buffer to return the value
 *
 * Get the statistics from the given location and offset.
 *
 */
vxge_hal_status_e
vxge_hal_vpath_stats_access(
    vxge_hal_vpath_h vpath_handle,
    u32 operation,
    u32 offset,
    u64 *stat);

/*
 * vxge_hal_vpath_xmac_tx_stats_get - Get the TX Statistics of a vpath
 * @virtual_path: vpath handle.
 * @vpath_tx_stats: Buffer to return TX Statistics of vpath.
 *
 * Get the TX Statistics of a vpath
 *
 */
vxge_hal_status_e
vxge_hal_vpath_xmac_tx_stats_get(vxge_hal_vpath_h virtual_path,
    vxge_hal_xmac_vpath_tx_stats_t *vpath_tx_stats);

/*
 * vxge_hal_vpath_xmac_rx_stats_get - Get the RX Statistics of a vpath
 * @virtual_path: vpath handle.
 * @vpath_rx_stats: Buffer to return RX Statistics of vpath.
 *
 * Get the RX Statistics of a vpath
 *
 */
vxge_hal_status_e
vxge_hal_vpath_xmac_rx_stats_get(vxge_hal_vpath_h virtual_path,
    vxge_hal_xmac_vpath_rx_stats_t *vpath_rx_stats);

/*
 * vxge_hal_vpath_stats_clear - Clear all the statistics of vpath
 * @vpath_handle: Virtual path handle.
 *
 * Clear the statistics of the given vpath.
 *
 */
vxge_hal_status_e
vxge_hal_vpath_stats_clear(
    vxge_hal_vpath_h vpath_handle);

/*
 * vxge_hal_device_hw_stats_enable - Enable device h/w statistics.
 * @devh: HAL Device.
 *
 * Enable the DMA vpath statistics for the device. The function is to be called
 * to re-enable the adapter to update stats into the host memory
 *
 * See also: vxge_hal_device_hw_stats_disable()
 */
vxge_hal_status_e
vxge_hal_device_hw_stats_enable(
    vxge_hal_device_h devh);

/*
 * vxge_hal_device_hw_stats_disable - Disable device h/w statistics.
 * @devh: HAL Device.
 *
 * Enable the DMA vpath statistics for the device. The function is to be called
 * to disable the adapter to update stats into the host memory. This function
 * is not needed to be called, normally.
 *
 * See also: vxge_hal_device_hw_stats_enable()
 */
vxge_hal_status_e
vxge_hal_device_hw_stats_disable(
    vxge_hal_device_h devh);

/*
 * vxge_hal_device_hw_stats_get - Get the device hw statistics.
 * @devh: HAL Device.
 * @hw_stats: Hardware stats
 *
 * Returns the vpath h/w stats for the device.
 *
 * See also: vxge_hal_device_hw_stats_enable(),
 *	     vxge_hal_device_hw_stats_disable(),
 *	     vxge_hal_device_sw_stats_get(),
 *	     vxge_hal_device_stats_get()
 */
vxge_hal_status_e
vxge_hal_device_hw_stats_get(
    vxge_hal_device_h devh,
    vxge_hal_device_stats_hw_info_t *hw_stats);

/*
 * vxge_hal_device_sw_stats_get - Get the device sw statistics.
 * @devh: HAL Device.
 * @sw_stats: Software stats
 *
 * Returns the device s/w stats for the device.
 *
 * See also: vxge_hal_device_hw_stats_get(), vxge_hal_device_stats_get()
 */
vxge_hal_status_e
vxge_hal_device_sw_stats_get(
    vxge_hal_device_h devh,
    vxge_hal_device_stats_sw_info_t *sw_stats);

/*
 * vxge_hal_device_stats_get - Get the device statistics.
 * @devh: HAL Device.
 * @stats: Device stats
 *
 * Returns the device stats for the device.
 *
 * See also: vxge_hal_device_hw_stats_get(), vxge_hal_device_sw_stats_get()
 */
vxge_hal_status_e
vxge_hal_device_stats_get(
    vxge_hal_device_h devh,
    vxge_hal_device_stats_t *stats);

/*
 * vxge_hal_device_xmac_stats_get - Get the XMAC Statistics
 * @devh: HAL device handle.
 * @xmac_stats: Buffer to return XMAC Statistics.
 *
 * Get the XMAC Statistics
 *
 */
vxge_hal_status_e
vxge_hal_device_xmac_stats_get(vxge_hal_device_h devh,
    vxge_hal_device_xmac_stats_t *xmac_stats);

/*
 * vxge_hal_mrpcim_stats_enable - Enable mrpcim statistics.
 * @devh: HAL Device.
 *
 * Enable the DMA mrpcim statistics for the device. The function is to be called
 * to re-enable the adapter to update stats into the host memory
 *
 * See also: vxge_hal_mrpcim_stats_disable()
 */
vxge_hal_status_e
vxge_hal_mrpcim_stats_enable(
    vxge_hal_device_h devh);

/*
 * vxge_hal_mrpcim_stats_disable - Disable mrpcim statistics.
 * @devh: HAL Device.
 *
 * Enable the DMA mrpcim statistics for the device. The function is to be called
 * to disable the adapter to update stats into the host memory. This function
 * is not needed to be called, normally.
 *
 * See also: vxge_hal_mrpcim_stats_enable()
 */
vxge_hal_status_e
vxge_hal_mrpcim_stats_disable(
    vxge_hal_device_h devh);

/*
 * vxge_hal_mrpcim_stats_get - Get the mrpcim statistics.
 * @devh: HAL Device.
 * @stats: mrpcim stats
 *
 * Returns the device mrpcim stats for the device.
 *
 * See also: vxge_hal_device_stats_get()
 */
vxge_hal_status_e
vxge_hal_mrpcim_stats_get(
    vxge_hal_device_h devh,
    vxge_hal_mrpcim_stats_hw_info_t *stats);

/*
 * vxge_hal_mrpcim_stats_access - Access the statistics from the given location
 *			  and offset and perform an operation
 * @devh: HAL Device handle.
 * @operation: Operation to be performed
 * @location: Location (one of vpath id, aggregate or port)
 * @offset: Offset with in the location
 * @stat: Pointer to a buffer to return the value
 *
 * Get the statistics from the given location and offset.
 *
 */
vxge_hal_status_e
vxge_hal_mrpcim_stats_access(
    vxge_hal_device_h devh,
    u32 operation,
    u32 location,
    u32 offset,
    u64 *stat);

/*
 * vxge_hal_mrpcim_xmac_aggr_stats_get - Get the Statistics on aggregate port
 * @devh: HAL device handle.
 * @port: Number of the port (0 or 1)
 * @aggr_stats: Buffer to return Statistics on aggregate port.
 *
 * Get the Statistics on aggregate port
 *
 */
vxge_hal_status_e
vxge_hal_mrpcim_xmac_aggr_stats_get(vxge_hal_device_h devh,
    u32 port,
    vxge_hal_xmac_aggr_stats_t *aggr_stats);

/*
 * vxge_hal_mrpcim_xmac_port_stats_get - Get the Statistics on a port
 * @devh: HAL device handle.
 * @port: Number of the port (wire 0, wire 1 or LAG)
 * @port_stats: Buffer to return Statistics on a port.
 *
 * Get the Statistics on port
 *
 */
vxge_hal_status_e
vxge_hal_mrpcim_xmac_port_stats_get(vxge_hal_device_h devh,
    u32 port,
    vxge_hal_xmac_port_stats_t *port_stats);

/*
 * vxge_hal_mrpcim_xmac_stats_get - Get the XMAC Statistics
 * @devh: HAL device handle.
 * @xmac_stats: Buffer to return XMAC Statistics.
 *
 * Get the XMAC Statistics
 *
 */
vxge_hal_status_e
vxge_hal_mrpcim_xmac_stats_get(vxge_hal_device_h devh,
    vxge_hal_mrpcim_xmac_stats_t *xmac_stats);

/*
 * vxge_hal_mrpcim_stats_clear - Clear the statistics of the device
 * @devh: HAL Device handle.
 *
 * Clear the statistics of the given Device.
 *
 */
vxge_hal_status_e
vxge_hal_mrpcim_stats_clear(
    vxge_hal_device_h devh);

/*
 * vxge_hal_mrpcim_xpak_stats_poll -  Poll and update the Xpak error count.
 * @devh: HAL device handle
 * @port: Port number
 *
 * It is used to update the xpak stats value. Called by ULD periodically
 */
vxge_hal_status_e
vxge_hal_mrpcim_xpak_stats_poll(
    vxge_hal_device_h devh, u32 port);

__EXTERN_END_DECLS

#endif	/* VXGE_HAL_STATS_H */

Man Man