text: /*-
   * 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: releng/9.3/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 */
  