xref: /freebsd-11-stable/sys/dev/vxge/include/vxgehal-stats.h (revision 4ab2e064d7950be84256d671a7ae93f87cc6aa36)
1 /*-
2  * Copyright(c) 2002-2011 Exar Corp.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification are permitted provided the following conditions are met:
7  *
8  *    1. Redistributions of source code must retain the above copyright notice,
9  *       this list of conditions and the following disclaimer.
10  *
11  *    2. Redistributions in binary form must reproduce the above copyright
12  *       notice, this list of conditions and the following disclaimer in the
13  *       documentation and/or other materials provided with the distribution.
14  *
15  *    3. Neither the name of the Exar Corporation nor the names of its
16  *       contributors may be used to endorse or promote products derived from
17  *       this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 /*$FreeBSD$*/
32 
33 #ifndef	VXGE_HAL_STATS_H
34 #define	VXGE_HAL_STATS_H
35 
36 __EXTERN_BEGIN_DECLS
37 
38 #define	VXGE_HAL_STATS_OP_READ						0
39 #define	VXGE_HAL_STATS_OP_CLEAR_STAT					1
40 #define	VXGE_HAL_STATS_OP_CLEAR_ALL_VPATH_STATS				2
41 #define	VXGE_HAL_STATS_OP_CLEAR_ALL_STATS_OF_LOC			2
42 #define	VXGE_HAL_STATS_OP_CLEAR_ALL_STATS				3
43 
44 #define	VXGE_HAL_STATS_LOC_VPATH(n)					n
45 #define	VXGE_HAL_STATS_LOC_AGGR						17
46 #define	VXGE_HAL_STATS_LOC_PORT						17
47 
48 #define	VXGE_HAL_STATS_AGGRn_TX_FRMS_OFFSET(n)		    ((0x720+(104*n))>>3)
49 #define	VXGE_HAL_STATS_GET_AGGRn_TX_FRMS(bits)		    bits
50 
51 #define	VXGE_HAL_STATS_AGGRn_TX_DATA_OCTETS_OFFSET(n)	    ((0x728+(104*n))>>3)
52 #define	VXGE_HAL_STATS_GET_AGGRn_TX_DATA_OCTETS(bits)	    bits
53 
54 #define	VXGE_HAL_STATS_AGGRn_TX_MCAST_FRMS_OFFSET(n)	    ((0x730+(104*n))>>3)
55 #define	VXGE_HAL_STATS_GET_AGGRn_TX_MCAST_FRMS(bits)	    bits
56 
57 #define	VXGE_HAL_STATS_AGGRn_TX_BCAST_FRMS_OFFSET(n)	    ((0x738+(104*n))>>3)
58 #define	VXGE_HAL_STATS_GET_AGGRn_TX_BCAST_FRMS(bits)	    bits
59 
60 #define	VXGE_HAL_STATS_AGGRn_TX_DISCARDED_FRMS_OFFSET(n)    ((0x740+(104*n))>>3)
61 #define	VXGE_HAL_STATS_GET_AGGRn_TX_DISCARDED_FRMS(bits)    bits
62 
63 #define	VXGE_HAL_STATS_AGGRn_TX_ERRORED_FRMS_OFFSET(n)	    ((0x748+(104*n))>>3)
64 #define	VXGE_HAL_STATS_GET_AGGRn_TX_ERRORED_FRMS(bits)	    bits
65 
66 #define	VXGE_HAL_STATS_AGGRn_RX_FRMS_OFFSET(n)		    ((0x750+(104*n))>>3)
67 #define	VXGE_HAL_STATS_GET_AGGRn_RX_FRMS(bits)		    bits
68 
69 #define	VXGE_HAL_STATS_AGGRn_RX_DATA_OCTETS_OFFSET(n)	    ((0x758+(104*n))>>3)
70 #define	VXGE_HAL_STATS_GET_AGGRn_RX_DATA_OCTETS(bits)	    bits
71 
72 #define	VXGE_HAL_STATS_AGGRn_RX_MCAST_FRMS_OFFSET(n)	    ((0x760+(104*n))>>3)
73 #define	VXGE_HAL_STATS_GET_AGGRn_RX_MCAST_FRMS(bits)	    bits
74 
75 #define	VXGE_HAL_STATS_AGGRn_RX_BCAST_FRMS_OFFSET(n)	    ((0x768+(104*n))>>3)
76 #define	VXGE_HAL_STATS_GET_AGGRn_RX_BCAST_FRMS(bits)	    bits
77 
78 #define	VXGE_HAL_STATS_AGGRn_RX_DISCARDED_FRMS_OFFSET(n)    ((0x770+(104*n))>>3)
79 #define	VXGE_HAL_STATS_GET_AGGRn_RX_DISCARDED_FRMS(bits)    bits
80 
81 #define	VXGE_HAL_STATS_AGGRn_RX_ERRORED_FRMS_OFFSET(n)	    ((0x778+(104*n))>>3)
82 #define	VXGE_HAL_STATS_GET_AGGRn_RX_ERRORED_FRMS(bits)	    bits
83 
84 #define	VXGE_HAL_STATS_AGGRn_RX_U_SLOW_PROTO_FRMS_OFFSET(n) ((0x780+(104*n))>>3)
85 #define	VXGE_HAL_STATS_GET_AGGRn_RX_U_SLOW_PROTO_FRMS(bits) bits
86 
87 #define	VXGE_HAL_STATS_GLOBAL_PROG_EVENT_GNUM0_OFFSET	    (0x7f0>>3)
88 #define	VXGE_HAL_STATS_GET_GLOBAL_PROG_EVENT_GNUM0(bits)    bits
89 
90 #define	VXGE_HAL_STATS_GLOBAL_PROG_EVENT_GNUM1_OFFSET	    (0x7f8>>3)
91 #define	VXGE_HAL_STATS_GET_GLOBAL_PROG_EVENT_GNUM1(bits)    bits
92 
93 #define	VXGE_HAL_STATS_PORTn_TX_TTL_FRMS_OFFSET(n)	    ((0x000+(608*n))>>3)
94 #define	VXGE_HAL_STATS_GET_PORTn_TX_TTL_FRMS(bits)	    bits
95 
96 #define	VXGE_HAL_STATS_PORTn_TX_TTL_OCTETS_OFFSET(n)	    ((0x008+(608*n))>>3)
97 #define	VXGE_HAL_STATS_GET_PORTn_TX_TTL_OCTETS(bits)	    bits
98 
99 #define	VXGE_HAL_STATS_PORTn_TX_DATA_OCTETS_OFFSET(n)	    ((0x010+(608*n))>>3)
100 #define	VXGE_HAL_STATS_GET_PORTn_TX_DATA_OCTETS(bits)	    bits
101 
102 #define	VXGE_HAL_STATS_PORTn_TX_MCAST_FRMS_OFFSET(n)	    ((0x018+(608*n))>>3)
103 #define	VXGE_HAL_STATS_GET_PORTn_TX_MCAST_FRMS(bits)	    bits
104 
105 #define	VXGE_HAL_STATS_PORTn_TX_BCAST_FRMS_OFFSET(n)	    ((0x020+(608*n))>>3)
106 #define	VXGE_HAL_STATS_GET_PORTn_TX_BCAST_FRMS(bits)	    bits
107 
108 #define	VXGE_HAL_STATS_PORTn_TX_UCAST_FRMS_OFFSET(n)	    ((0x028+(608*n))>>3)
109 #define	VXGE_HAL_STATS_GET_PORTn_TX_UCAST_FRMS(bits)	    bits
110 
111 #define	VXGE_HAL_STATS_PORTn_TX_TAGGED_FRMS_OFFSET(n)	    ((0x030+(608*n))>>3)
112 #define	VXGE_HAL_STATS_GET_PORTn_TX_TAGGED_FRMS(bits)	    bits
113 
114 #define	VXGE_HAL_STATS_PORTn_TX_VLD_IP_OFFSET(n)	    ((0x038+(608*n))>>3)
115 #define	VXGE_HAL_STATS_GET_PORTn_TX_VLD_IP(bits)	    bits
116 
117 #define	VXGE_HAL_STATS_PORTn_TX_VLD_IP_OCTETS_OFFSET(n)	    ((0x040+(608*n))>>3)
118 #define	VXGE_HAL_STATS_GET_PORTn_TX_VLD_IP_OCTETS(bits)	    bits
119 
120 #define	VXGE_HAL_STATS_PORTn_TX_ICMP_OFFSET(n)		    ((0x048+(608*n))>>3)
121 #define	VXGE_HAL_STATS_GET_PORTn_TX_ICMP(bits)		    bits
122 
123 #define	VXGE_HAL_STATS_PORTn_TX_TCP_OFFSET(n)		    ((0x050+(608*n))>>3)
124 #define	VXGE_HAL_STATS_GET_PORTn_TX_TCP(bits)		    bits
125 
126 #define	VXGE_HAL_STATS_PORTn_TX_RST_TCP_OFFSET(n)	    ((0x058+(608*n))>>3)
127 #define	VXGE_HAL_STATS_GET_PORTn_TX_RST_TCP(bits)	    bits
128 
129 #define	VXGE_HAL_STATS_PORTn_TX_UDP_OFFSET(n)		    ((0x060+(608*n))>>3)
130 #define	VXGE_HAL_STATS_GET_PORTn_TX_UDP(bits)		    bits
131 
132 #define	VXGE_HAL_STATS_PORTn_TX_UNKNOWN_PROTOCOL_OFFSET(n)  ((0x068+(608*n))>>3)
133 #define	VXGE_HAL_STATS_GET_PORTn_TX_UNKNOWN_PROTOCOL(bits)  bits
134 
135 #define	VXGE_HAL_STATS_PORTn_TX_PARSE_ERROR_OFFSET(n)	    ((0x068+(608*n))>>3)
136 #define	VXGE_HAL_STATS_GET_PORTn_TX_PARSE_ERROR(bits)	    bits
137 
138 #define	VXGE_HAL_STATS_PORTn_TX_PAUSE_CTRL_FRMS_OFFSET(n)   ((0x070+(608*n))>>3)
139 #define	VXGE_HAL_STATS_GET_PORTn_TX_PAUSE_CTRL_FRMS(bits)   bits
140 
141 #define	VXGE_HAL_STATS_PORTn_TX_LACPDU_FRMS_OFFSET(n)	    ((0x078+(608*n))>>3)
142 #define	VXGE_HAL_STATS_GET_PORTn_TX_LACPDU_FRMS(bits)	    bits
143 
144 #define	VXGE_HAL_STATS_PORTn_TX_MRKR_PDU_FRMS_OFFSET(n)	   ((0x078+(608*n))>>3)
145 #define	VXGE_HAL_STATS_GET_PORTn_TX_MRKR_PDU_FRMS(bits)	   bits
146 
147 #define	VXGE_HAL_STATS_PORTn_TX_MRKR_RESP_PDU_FRMS_OFFSET(n)\
148 							    ((0x080+(608*n))>>3)
149 #define	VXGE_HAL_STATS_GET_PORTn_TX_MRKR_RESP_PDU_FRMS(bits) bVAL32(bits, 0)
150 
151 #define	VXGE_HAL_STATS_PORTn_TX_DROP_IP_OFFSET(n)	    ((0x080+(608*n))>>3)
152 #define	VXGE_HAL_STATS_GET_PORTn_TX_DROP_IP(bits)	    bVAL32(bits, 32)
153 
154 #define	VXGE_HAL_STATS_PORTn_TX_XGMII_CHAR1_MATCH_OFFSET(n) ((0x088+(608*n))>>3)
155 #define	VXGE_HAL_STATS_GET_PORTn_TX_XGMII_CHAR1_MATCH(bits) bVAL32(bits, 0)
156 
157 #define	VXGE_HAL_STATS_PORTn_TX_XGMII_CHAR2_MATCH_OFFSET(n) ((0x088+(608*n))>>3)
158 #define	VXGE_HAL_STATS_GET_PORTn_TX_XGMII_CHAR2_MATCH(bits) bVAL32(bits, 32)
159 
160 #define	VXGE_HAL_STATS_PORTn_TX_XGMII_COL1_MATCH_OFFSET(n)  ((0x090+(608*n))>>3)
161 #define	VXGE_HAL_STATS_GET_PORTn_TX_XGMII_COL1_MATCH(bits)  bVAL32(bits, 0)
162 
163 #define	VXGE_HAL_STATS_PORTn_TX_XGMII_COL2_MATCH_OFFSET(n)  ((0x090+(608*n))>>3)
164 #define	VXGE_HAL_STATS_GET_PORTn_TX_XGMII_COL2_MATCH(bits)  bVAL32(bits, 32)
165 
166 #define	VXGE_HAL_STATS_PORTn_TX_DROP_FRMS_OFFSET(n)	    ((0x098+(608*n))>>3)
167 #define	VXGE_HAL_STATS_GET_PORTn_TX_DROP_FRMS(bits)	    bVAL32(bits, 0)
168 
169 #define	VXGE_HAL_STATS_PORTn_TX_ANY_ERR_FRMS_OFFSET(n)	    ((0x098+(608*n))>>3)
170 #define	VXGE_HAL_STATS_GET_PORTn_TX_ANY_ERR_FRMS(bits)	    bVAL32(bits, 32)
171 
172 #define	VXGE_HAL_STATS_PORTn_RX_TTL_FRMS_OFFSET(n)	    ((0x0a0+(608*n))>>3)
173 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_FRMS(bits)	    bits
174 
175 #define	VXGE_HAL_STATS_PORTn_RX_VLD_FRMS_OFFSET(n)	    ((0x0a8+(608*n))>>3)
176 #define	VXGE_HAL_STATS_GET_PORTn_RX_VLD_FRMS(bits)	    bits
177 
178 #define	VXGE_HAL_STATS_PORTn_RX_OFFLOAD_FRMS_OFFSET(n)	    ((0x0b0+(608*n))>>3)
179 #define	VXGE_HAL_STATS_GET_PORTn_RX_OFFLOAD_FRMS(bits)	    bits
180 
181 #define	VXGE_HAL_STATS_PORTn_RX_TTL_OCTETS_OFFSET(n)	    ((0x0b8+(608*n))>>3)
182 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_OCTETS(bits)	    bits
183 
184 #define	VXGE_HAL_STATS_PORTn_RX_DATA_OCTETS_OFFSET(n)	    ((0x0c0+(608*n))>>3)
185 #define	VXGE_HAL_STATS_GET_PORTn_RX_DATA_OCTETS(bits)	    bits
186 
187 #define	VXGE_HAL_STATS_PORTn_RX_OFFLOAD_OCTETS_OFFSET(n)    ((0x0c8+(608*n))>>3)
188 #define	VXGE_HAL_STATS_GET_PORTn_RX_OFFLOAD_OCTETS(bits)    bits
189 
190 #define	VXGE_HAL_STATS_PORTn_RX_VLD_MCAST_FRMS_OFFSET(n)    ((0x0d0+(608*n))>>3)
191 #define	VXGE_HAL_STATS_GET_PORTn_RX_VLD_MCAST_FRMS(bits)    bits
192 
193 #define	VXGE_HAL_STATS_PORTn_RX_VLD_BCAST_FRMS_OFFSET(n)    ((0x0d8+(608*n))>>3)
194 #define	VXGE_HAL_STATS_GET_PORTn_RX_VLD_BCAST_FRMS(bits)    bits
195 
196 #define	VXGE_HAL_STATS_PORTn_RX_ACC_UCAST_FRMS_OFFSET(n)    ((0x0e0+(608*n))>>3)
197 #define	VXGE_HAL_STATS_GET_PORTn_RX_ACC_UCAST_FRMS(bits)    bits
198 
199 #define	VXGE_HAL_STATS_PORTn_RX_ACC_NUCAST_FRMS_OFFSET(n)   ((0x0e8+(608*n))>>3)
200 #define	VXGE_HAL_STATS_GET_PORTn_RX_ACC_NUCAST_FRMS(bits)   bits
201 
202 #define	VXGE_HAL_STATS_PORTn_RX_TAGGED_FRMS_OFFSET(n)	    ((0x0f0+(608*n))>>3)
203 #define	VXGE_HAL_STATS_GET_PORTn_RX_TAGGED_FRMS(bits)	    bits
204 
205 #define	VXGE_HAL_STATS_PORTn_RX_LONG_FRMS_OFFSET(n)	    ((0x0f8+(608*n))>>3)
206 #define	VXGE_HAL_STATS_GET_PORTn_RX_LONG_FRMS(bits)	    bits
207 
208 #define	VXGE_HAL_STATS_PORTn_RX_USIZED_FRMS_OFFSET(n)	    ((0x100+(608*n))>>3)
209 #define	VXGE_HAL_STATS_GET_PORTn_RX_USIZED_FRMS(bits)	    bits
210 
211 #define	VXGE_HAL_STATS_PORTn_RX_OSIZED_FRMS_OFFSET(n)	    ((0x108+(608*n))>>3)
212 #define	VXGE_HAL_STATS_GET_PORTn_RX_OSIZED_FRMS(bits)	    bits
213 
214 #define	VXGE_HAL_STATS_PORTn_RX_FRAG_FRMS_OFFSET(n)	    ((0x110+(608*n))>>3)
215 #define	VXGE_HAL_STATS_GET_PORTn_RX_FRAG_FRMS(bits)	    bits
216 
217 #define	VXGE_HAL_STATS_PORTn_RX_JABBER_FRMS_OFFSET(n)	    ((0x118+(608*n))>>3)
218 #define	VXGE_HAL_STATS_GET_PORTn_RX_JABBER_FRMS(bits)	    bits
219 
220 #define	VXGE_HAL_STATS_PORTn_RX_TTL_64_FRMS_OFFSET(n)	    ((0x120+(608*n))>>3)
221 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_64_FRMS(bits)	    bits
222 
223 #define	VXGE_HAL_STATS_PORTn_RX_TTL_65_127_FRMS_OFFSET(n)   ((0x128+(608*n))>>3)
224 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_65_127_FRMS(bits)   bits
225 
226 #define	VXGE_HAL_STATS_PORTn_RX_TTL_128_255_FRMS_OFFSET(n)  ((0x130+(608*n))>>3)
227 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_128_255_FRMS(bits)  bits
228 
229 #define	VXGE_HAL_STATS_PORTn_RX_TTL_256_511_FRMS_OFFSET(n)  ((0x138+(608*n))>>3)
230 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_256_511_FRMS(bits)  bits
231 
232 #define	VXGE_HAL_STATS_PORTn_RX_TTL_512_1023_FRMS_OFFSET(n) ((0x140+(608*n))>>3)
233 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_512_1023_FRMS(bits) bits
234 
235 #define	VXGE_HAL_STATS_PORTn_RX_TTL_1024_1518_FRMS_OFFSET(n)\
236 							    ((0x148+(608*n))>>3)
237 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_1024_1518_FRMS(bits) bits
238 
239 #define	VXGE_HAL_STATS_PORTn_RX_TTL_1519_4095_FRMS_OFFSET(n)\
240 							    ((0x150+(608*n))>>3)
241 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_1519_4095_FRMS(bits) bits
242 
243 #define	VXGE_HAL_STATS_PORTn_RX_TTL_4096_81915_FRMS_OFFSET(n)\
244 							    ((0x158+(608*n))>>3)
245 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_4096_8191_FRMS(bits) bits
246 
247 #define	VXGE_HAL_STATS_PORTn_RX_TTL_8192_MAX_FRMS_OFFSET(n) ((0x160+(608*n))>>3)
248 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_8192_MAX_FRMS(bits) bits
249 
250 #define	VXGE_HAL_STATS_PORTn_RX_TTL_GT_MAX_FRMS_OFFSET(n)   ((0x168+(608*n))>>3)
251 #define	VXGE_HAL_STATS_GET_PORTn_RX_TTL_GT_MAX_FRMS(bits)   bits
252 
253 #define	VXGE_HAL_STATS_PORTn_RX_IP_OFFSET(n)		    ((0x170+(608*n))>>3)
254 #define	VXGE_HAL_STATS_GET_PORTn_RX_IP(bits)		    bits
255 
256 #define	VXGE_HAL_STATS_PORTn_RX_ACC_IP_OFFSET(n)	    ((0x178+(608*n))>>3)
257 #define	VXGE_HAL_STATS_GET_PORTn_RX_ACC_IP(bits)	    bits
258 
259 #define	VXGE_HAL_STATS_PORTn_RX_IP_OCTETS_OFFSET(n)	    ((0x180+(608*n))>>3)
260 #define	VXGE_HAL_STATS_GET_PORTn_RX_IP_OCTETS(bits)	    bits
261 
262 #define	VXGE_HAL_STATS_PORTn_RX_ERR_IP_OFFSET(n)	    ((0x188+(608*n))>>3)
263 #define	VXGE_HAL_STATS_GET_PORTn_RX_ERR_IP(bits)	    bits
264 
265 #define	VXGE_HAL_STATS_PORTn_RX_ICMP_OFFSET(n)		    ((0x190+(608*n))>>3)
266 #define	VXGE_HAL_STATS_GET_PORTn_RX_ICMP(bits)		    bits
267 
268 #define	VXGE_HAL_STATS_PORTn_RX_TCP_OFFSET(n)		    ((0x198+(608*n))>>3)
269 #define	VXGE_HAL_STATS_GET_PORTn_RX_TCP(bits)		    bits
270 
271 #define	VXGE_HAL_STATS_PORTn_RX_UDP_OFFSET(n)		    ((0x1a0+(608*n))>>3)
272 #define	VXGE_HAL_STATS_GET_PORTn_RX_UDP(bits)		    bits
273 
274 #define	VXGE_HAL_STATS_PORTn_RX_ERR_TCP_OFFSET(n)	    ((0x1a8+(608*n))>>3)
275 #define	VXGE_HAL_STATS_GET_PORTn_RX_ERR_TCP(bits)	    bits
276 
277 #define	VXGE_HAL_STATS_PORTn_RX_PAUSE_CNT_OFFSET(n)	    ((0x1b0+(608*n))>>3)
278 #define	VXGE_HAL_STATS_GET_PORTn_RX_PAUSE_CNT(bits)	    bits
279 
280 #define	VXGE_HAL_STATS_PORTn_RX_PAUSE_CTRL_FRMS_OFFSET(n)   ((0x1b8+(608*n))>>3)
281 #define	VXGE_HAL_STATS_GET_PORTn_RX_PAUSE_CTRL_FRMS(bits)   bits
282 
283 #define	VXGE_HAL_STATS_PORTn_RX_UNSUP_CTRL_FRMS_OFFSET(n)   ((0x1c0+(608*n))>>3)
284 #define	VXGE_HAL_STATS_GET_PORTn_RX_UNSUP_CTRL_FRMS(bits)   bits
285 
286 #define	VXGE_HAL_STATS_PORTn_RX_FCS_ERR_FRMS_OFFSET(n)	    ((0x1c8+(608*n))>>3)
287 #define	VXGE_HAL_STATS_GET_PORTn_RX_FCS_ERR_FRMS(bits)	    bits
288 
289 #define	VXGE_HAL_STATS_PORTn_RX_IN_RNG_LEN_ERR_FRMS_OFFSET(n)\
290 							    ((0x1d0+(608*n))>>3)
291 #define	VXGE_HAL_STATS_GET_PORTn_RX_IN_RNG_LEN_ERR_FRMS(bits) bits
292 
293 #define	VXGE_HAL_STATS_PORTn_RX_OUT_RNG_LEN_ERR_FRMS_OFFSET(n)\
294 							    ((0x1d8+(608*n))>>3)
295 #define	VXGE_HAL_STATS_GET_PORTn_RX_OUT_RNG_LEN_ERR_FRMS(bits) bits
296 
297 #define	VXGE_HAL_STATS_PORTn_RX_DROP_FRMS_OFFSET(n)	    ((0x1e0+(608*n))>>3)
298 #define	VXGE_HAL_STATS_GET_PORTn_RX_DROP_FRMS(bits)	    bits
299 
300 #define	VXGE_HAL_STATS_PORTn_RX_DISCARDED_FRMS_OFFSET(n)    ((0x1e8+(608*n))>>3)
301 #define	VXGE_HAL_STATS_GET_PORTn_RX_DISCARDED_FRMS(bits)    bits
302 
303 #define	VXGE_HAL_STATS_PORTn_RX_DROP_IP_OFFSET(n)	    ((0x1f0+(608*n))>>3)
304 #define	VXGE_HAL_STATS_GET_PORTn_RX_DROP_IP(bits)	    bits
305 
306 #define	VXGE_HAL_STATS_PORTn_RX_DRP_UDP_OFFSET(n)	    ((0x1f8+(608*n))>>3)
307 #define	VXGE_HAL_STATS_GET_PORTn_RX_DRP_UDP(bits)	    bits
308 
309 #define	VXGE_HAL_STATS_PORTn_RX_LACPDU_FRMS_OFFSET(n)	    ((0x200+(608*n))>>3)
310 #define	VXGE_HAL_STATS_GET_PORTn_RX_LACPDU_FRMS(bits)	    bVAL32(bits, 0)
311 
312 #define	VXGE_HAL_STATS_PORTn_RX_MRKR_PDU_FRMS_OFFSET(n)	    ((0x200+(608*n))>>3)
313 #define	VXGE_HAL_STATS_GET_PORTn_RX_MRKR_PDU_FRMS(bits)	    bVAL32(bits, 32)
314 
315 #define	VXGE_HAL_STATS_PORTn_RX_MRKR_RESP_PDU_FRMS_OFFSET(n)\
316 							    ((0x208+(608*n))>>3)
317 #define	VXGE_HAL_STATS_GET_PORTn_RX_MRKR_RESP_PDU_FRMS(bits) bVAL32(bits, 0)
318 
319 #define	VXGE_HAL_STATS_PORTn_RX_UNKNOWN_PDU_FRMS_OFFSET(n)  ((0x208+(608*n))>>3)
320 #define	VXGE_HAL_STATS_GET_PORTn_RX_UNKNOWN_PDU_FRMS(bits)  bVAL32(bits, 32)
321 
322 #define	VXGE_HAL_STATS_PORTn_RX_ILLEGAL_PDU_FRMS_OFFSET(n)  ((0x210+(608*n))>>3)
323 #define	VXGE_HAL_STATS_GET_PORTn_RX_ILLEGAL_PDU_FRMS(bits)  bVAL32(bits, 0)
324 
325 #define	VXGE_HAL_STATS_PORTn_RX_FCS_DISCARD_OFFSET(n)	    ((0x210+(608*n))>>3)
326 #define	VXGE_HAL_STATS_GET_PORTn_RX_FCS_DISCARD(bits)	    bVAL32(bits, 32)
327 
328 #define	VXGE_HAL_STATS_PORTn_RX_LEN_DISCARD_OFFSET(n)	    ((0x218+(608*n))>>3)
329 #define	VXGE_HAL_STATS_GET_PORTn_RX_LEN_DISCARD(bits)	    bVAL32(bits, 0)
330 
331 #define	VXGE_HAL_STATS_PORTn_RX_SWITCH_DISCARD_OFFSET(n)    ((0x218+(608*n))>>3)
332 #define	VXGE_HAL_STATS_GET_PORTn_RX_SWITCH_DISCARD(bits)    bVAL32(bits, 32)
333 
334 #define	VXGE_HAL_STATS_PORTn_RX_L2_MGMT_DISCARD_OFFSET(n)   ((0x220+(608*n))>>3)
335 #define	VXGE_HAL_STATS_GET_PORTn_RX_L2_MGMT_DISCARD(bits)   bVAL32(bits, 0)
336 
337 #define	VXGE_HAL_STATS_PORTn_RX_RPA_DISCARD_OFFSET(n)	    ((0x220+(608*n))>>3)
338 #define	VXGE_HAL_STATS_GET_PORTn_RX_RPA_DISCARD(bits)	    bVAL32(bits, 32)
339 
340 #define	VXGE_HAL_STATS_PORTn_RX_TRASH_DISCARD_OFFSET(n)	    ((0x228+(608*n))>>3)
341 #define	VXGE_HAL_STATS_GET_PORTn_RX_TRASH_DISCARD(bits)	    bVAL32(bits, 0)
342 
343 #define	VXGE_HAL_STATS_PORTn_RX_RTS_DISCARD_OFFSET(n)	    ((0x228+(608*n))>>3)
344 #define	VXGE_HAL_STATS_GET_PORTn_RX_RTS_DISCARD(bits)	    bVAL32(bits, 32)
345 
346 #define	VXGE_HAL_STATS_PORTn_RX_RED_DISCARD_OFFSET(n)	    ((0x230+(608*n))>>3)
347 #define	VXGE_HAL_STATS_GET_PORTn_RX_RED_DISCARD(bits)	    bVAL32(bits, 0)
348 
349 #define	VXGE_HAL_STATS_PORTn_RX_BUFF_FULL_DISCARD_OFFSET(n) ((0x230+(608*n))>>3)
350 #define	VXGE_HAL_STATS_GET_PORTn_RX_BUFF_FULL_DISCARD(bits) bVAL32(bits, 32)
351 
352 #define	VXGE_HAL_STATS_PORTn_RX_XGMII_DATA_ERR_CNT_OFFSET(n)\
353 							    ((0x238+(608*n))>>3)
354 #define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_DATA_ERR_CNT(bits) bVAL32(bits, 0)
355 
356 #define	VXGE_HAL_STATS_PORTn_RX_XGMII_CTRL_ERR_CNT_OFFSET(n)\
357 							    ((0x238+(608*n))>>3)
358 #define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CTRL_ERR_CNT(bits) bVAL32(bits, 32)
359 
360 #define	VXGE_HAL_STATS_PORTn_RX_XGMII_ERR_SYM_OFFSET(n)	    ((0x240+(608*n))>>3)
361 #define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_ERR_SYM(bits)	    bVAL32(bits, 0)
362 
363 #define	VXGE_HAL_STATS_PORTn_RX_XGMII_CHAR1_MATCH_OFFSET(n) ((0x240+(608*n))>>3)
364 #define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CHAR1_MATCH(bits) bVAL32(bits, 32)
365 
366 #define	VXGE_HAL_STATS_PORTn_RX_XGMII_CHAR2_MATCH_OFFSET(n) ((0x248+(608*n))>>3)
367 #define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_CHAR2_MATCH(bits) bVAL32(bits, 0)
368 
369 #define	VXGE_HAL_STATS_PORTn_RX_XGMII_COL1_MATCH_OFFSET(n)  ((0x248+(608*n))>>3)
370 #define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_COL1_MATCH(bits)  bVAL32(bits, 32)
371 
372 #define	VXGE_HAL_STATS_PORTn_RX_XGMII_COL2_MATCH_OFFSET(n)  ((0x250+(608*n))>>3)
373 #define	VXGE_HAL_STATS_GET_PORTn_RX_XGMII_COL2_MATCH(bits)  bVAL32(bits, 0)
374 
375 #define	VXGE_HAL_STATS_PORTn_RX_LOCAL_FAULT_OFFSET(n)	    ((0x250+(608*n))>>3)
376 #define	VXGE_HAL_STATS_GET_PORTn_RX_LOCAL_FAULT(bits)	    bVAL32(bits, 32)
377 
378 #define	VXGE_HAL_STATS_PORTn_RX_REMOTE_FAULT_OFFSET(n)	    ((0x258+(608*n))>>3)
379 #define	VXGE_HAL_STATS_GET_PORTn_RX_REMOTE_FAULT(bits)	    bVAL32(bits, 0)
380 
381 #define	VXGE_HAL_STATS_PORTn_RX_JETTISON_OFFSET(n)	    ((0x258+(608*n))>>3)
382 #define	VXGE_HAL_STATS_GET_PORTn_RX_JETTISON(bits)	    bVAL32(bits, 32)
383 
384 #define	VXGE_HAL_STATS_VPATH_TX_TTL_ETH_FRMS_OFFSET	    (0x000>>3)
385 #define	VXGE_HAL_STATS_GET_VPATH_TX_TTL_ETH_FRMS(bits)	    bits
386 
387 #define	VXGE_HAL_STATS_VPATH_TX_TTL_ETH_OCTETS_OFFSET	    (0x008>>3)
388 #define	VXGE_HAL_STATS_GET_VPATH_TX_TTL_ETH_OCTETS(bits)    bits
389 
390 #define	VXGE_HAL_STATS_VPATH_TX_DATA_OCTETS_OFFSET	    (0x010>>3)
391 #define	VXGE_HAL_STATS_GET_VPATH_TX_DATA_OCTETS(bits)	    bits
392 
393 #define	VXGE_HAL_STATS_VPATH_TX_MCAST_FRMS_OFFSET	    (0x018>>3)
394 #define	VXGE_HAL_STATS_GET_VPATH_TX_MCAST_FRMS(bits)	    bits
395 
396 #define	VXGE_HAL_STATS_VPATH_TX_BCAST_FRMS_OFFSET	    (0x020>>3)
397 #define	VXGE_HAL_STATS_GET_VPATH_TX_BCAST_FRMS(bits)	    bits
398 
399 #define	VXGE_HAL_STATS_VPATH_TX_UCAST_FRMS_OFFSET	    (0x028>>3)
400 #define	VXGE_HAL_STATS_GET_VPATH_TX_UCAST_FRMS(bits)	    bits
401 
402 #define	VXGE_HAL_STATS_VPATH_TX_TAGGED_FRMS_OFFSET	    (0x030>>3)
403 #define	VXGE_HAL_STATS_GET_VPATH_TX_TAGGED_FRMS(bits)	    bits
404 
405 #define	VXGE_HAL_STATS_VPATH_TX_VLD_IP_OFFSET		    (0x038>>3)
406 #define	VXGE_HAL_STATS_GET_VPATH_TX_VLD_IP(bits)	    bits
407 
408 #define	VXGE_HAL_STATS_VPATH_TX_VLD_IP_OCTETS_OFFSET	    (0x040>>3)
409 #define	VXGE_HAL_STATS_GET_VPATH_TX_VLD_IP_OCTETS(bits)	    bits
410 
411 #define	VXGE_HAL_STATS_VPATH_TX_ICMP_OFFSET		    (0x048>>3)
412 #define	VXGE_HAL_STATS_GET_VPATH_TX_ICMP(bits)		    bits
413 
414 #define	VXGE_HAL_STATS_VPATH_TX_TCP_OFFSET		    (0x050>>3)
415 #define	VXGE_HAL_STATS_GET_VPATH_TX_TCP(bits)		    bits
416 
417 #define	VXGE_HAL_STATS_VPATH_TX_RST_TCP_OFFSET		    (0x058>>3)
418 #define	VXGE_HAL_STATS_GET_VPATH_TX_RST_TCP(bits)	    bits
419 
420 #define	VXGE_HAL_STATS_VPATH_TX_UDP_OFFSET		    (0x060>>3)
421 #define	VXGE_HAL_STATS_GET_VPATH_TX_UDP(bits)		    bits
422 
423 #define	VXGE_HAL_STATS_VPATH_TX_LOST_IP_OFFSET		    (0x068>>3)
424 #define	VXGE_HAL_STATS_GET_VPATH_TX_LOST_IP(bits)	    bits
425 
426 #define	VXGE_HAL_STATS_VPATH_TX_UNKNOWN_PROTOCOL_OFFSET	    (0x068>>3)
427 #define	VXGE_HAL_STATS_GET_VPATH_TX_UNKNOWN_PROTOCOL(bits)  bits
428 
429 #define	VXGE_HAL_STATS_VPATH_TX_PARSE_ERROR_OFFSET	    (0x070>>3)
430 #define	VXGE_HAL_STATS_GET_VPATH_TX_PARSE_ERROR(bits)	    bits
431 
432 #define	VXGE_HAL_STATS_VPATH_TX_TCP_OFFLOAD_OFFSET	    (0x078>>3)
433 #define	VXGE_HAL_STATS_GET_VPATH_TX_TCP_OFFLOAD(bits)	    bits
434 
435 #define	VXGE_HAL_STATS_VPATH_TX_RETX_TCP_OFFLOAD_OFFSET	    (0x080>>3)
436 #define	VXGE_HAL_STATS_GET_VPATH_TX_RETX_TCP_OFFLOAD(bits)  bits
437 
438 #define	VXGE_HAL_STATS_VPATH_TX_LOST_IP_OFFLOAD_OFFSET	    (0x088>>3)
439 #define	VXGE_HAL_STATS_GET_VPATH_TX_LOST_IP_OFFLOAD(bits)   bits
440 
441 #define	VXGE_HAL_STATS_VPATH_RX_TTL_ETH_FRMS_OFFSET	    (0x090>>3)
442 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_ETH_FRMS(bits)	    bits
443 
444 #define	VXGE_HAL_STATS_VPATH_RX_VLD_FRMS_OFFSET		    (0x098>>3)
445 #define	VXGE_HAL_STATS_GET_VPATH_RX_VLD_FRMS(bits)	    bits
446 
447 #define	VXGE_HAL_STATS_VPATH_RX_OFFLOAD_FRMS_OFFSET	    (0x0a0>>3)
448 #define	VXGE_HAL_STATS_GET_VPATH_RX_OFFLOAD_FRMS(bits)	    bits
449 
450 #define	VXGE_HAL_STATS_VPATH_RX_TTL_ETH_OCTETS_OFFSET	    (0x0a8>>3)
451 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_ETH_OCTETS(bits)    bits
452 
453 #define	VXGE_HAL_STATS_VPATH_RX_DATA_OCTETS_OFFSET	    (0x0b0>>3)
454 #define	VXGE_HAL_STATS_GET_VPATH_RX_DATA_OCTETS(bits)	    bits
455 
456 #define	VXGE_HAL_STATS_VPATH_RX_OFFLOAD_OCTETS_OFFSET	    (0x0b8>>3)
457 #define	VXGE_HAL_STATS_GET_VPATH_RX_OFFLOAD_OCTETS(bits)    bits
458 
459 #define	VXGE_HAL_STATS_VPATH_RX_VLD_MCAST_FRMS_OFFSET	    (0x0c0>>3)
460 #define	VXGE_HAL_STATS_GET_VPATH_RX_VLD_MCAST_FRMS(bits)    bits
461 
462 #define	VXGE_HAL_STATS_VPATH_RX_VLD_BCAST_FRMS_OFFSET	    (0x0c8>>3)
463 #define	VXGE_HAL_STATS_GET_VPATH_RX_VLD_BCAST_FRMS(bits)    bits
464 
465 #define	VXGE_HAL_STATS_VPATH_RX_ACC_UCAST_FRMS_OFFSET	    (0x0d0>>3)
466 #define	VXGE_HAL_STATS_GET_VPATH_RX_ACC_UCAST_FRMS(bits)    bits
467 
468 #define	VXGE_HAL_STATS_VPATH_RX_ACC_NUCAST_FRMS_OFFSET	    (0x0d8>>3)
469 #define	VXGE_HAL_STATS_GET_VPATH_RX_ACC_NUCAST_FRMS(bits)   bits
470 
471 #define	VXGE_HAL_STATS_VPATH_RX_TAGGED_FRMS_OFFSET	    (0x0e0>>3)
472 #define	VXGE_HAL_STATS_GET_VPATH_RX_TAGGED_FRMS(bits)	    bits
473 
474 #define	VXGE_HAL_STATS_VPATH_RX_LONG_FRMS_OFFSET	    (0x0e8>>3)
475 #define	VXGE_HAL_STATS_GET_VPATH_RX_LONG_FRMS(bits)	    bits
476 
477 #define	VXGE_HAL_STATS_VPATH_RX_USIZED_FRMS_OFFSET	    (0x0f0>>3)
478 #define	VXGE_HAL_STATS_GET_VPATH_RX_USIZED_FRMS(bits)	    bits
479 
480 #define	VXGE_HAL_STATS_VPATH_RX_OSIZED_FRMS_OFFSET	    (0x0f8>>3)
481 #define	VXGE_HAL_STATS_GET_VPATH_RX_OSIZED_FRMS(bits)	    bits
482 
483 #define	VXGE_HAL_STATS_VPATH_RX_FRAG_FRMS_OFFSET	    (0x100>>3)
484 #define	VXGE_HAL_STATS_GET_VPATH_RX_FRAG_FRMS(bits)	    bits
485 
486 #define	VXGE_HAL_STATS_VPATH_RX_JABBER_FRMS_OFFSET	    (0x108>>3)
487 #define	VXGE_HAL_STATS_GET_VPATH_RX_JABBER_FRMS(bits)	    bits
488 
489 #define	VXGE_HAL_STATS_VPATH_RX_TTL_64_FRMS_OFFSET	    (0x110>>3)
490 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_64_FRMS(bits)	    bits
491 
492 #define	VXGE_HAL_STATS_VPATH_RX_TTL_65_127_FRMS_OFFSET	    (0x118>>3)
493 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_65_127_FRMS(bits)   bits
494 
495 #define	VXGE_HAL_STATS_VPATH_RX_TTL_128_255_FRMS_OFFSET	    (0x120>>3)
496 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_128_255_FRMS(bits)   bits
497 
498 #define	VXGE_HAL_STATS_VPATH_RX_TTL_256_511_FRMS_OFFSET	    (0x128>>3)
499 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_256_511_FRMS(bits)   bits
500 
501 #define	VXGE_HAL_STATS_VPATH_RX_TTL_512_1023_FRMS_OFFSET    (0x130>>3)
502 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_512_1023_FRMS(bits) bits
503 
504 #define	VXGE_HAL_STATS_VPATH_RX_TTL_1024_1518_FRMS_OFFSET   (0x138>>3)
505 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_1024_1518_FRMS(bits) bits
506 
507 #define	VXGE_HAL_STATS_VPATH_RX_TTL_1519_4095_FRMS_OFFSET   (0x140>>3)
508 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_1519_4095_FRMS(bits) bits
509 
510 #define	VXGE_HAL_STATS_VPATH_RX_TTL_4096_8191_FRMS_OFFSET   (0x148>>3)
511 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_4096_8191_FRMS(bits) bits
512 
513 #define	VXGE_HAL_STATS_VPATH_RX_TTL_8192_MAX_FRMS_OFFSET    (0x150>>3)
514 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_8192_MAX_FRMS(bits) bits
515 
516 #define	VXGE_HAL_STATS_VPATH_RX_TTL_GT_MAX_FRMS_OFFSET	    (0x158>>3)
517 #define	VXGE_HAL_STATS_GET_VPATH_RX_TTL_GT_MAX_FRMS(bits)   bits
518 
519 #define	VXGE_HAL_STATS_VPATH_RX_IP_OFFSET		    (0x160>>3)
520 #define	VXGE_HAL_STATS_GET_VPATH_RX_IP(bits)		    bits
521 
522 #define	VXGE_HAL_STATS_VPATH_RX_ACC_IP_OFFSET		    (0x168>>3)
523 #define	VXGE_HAL_STATS_GET_VPATH_RX_ACC_IP(bits)	    bits
524 
525 #define	VXGE_HAL_STATS_VPATH_RX_IP_OCTETS_OFFSET	    (0x170>>3)
526 #define	VXGE_HAL_STATS_GET_VPATH_RX_IP_OCTETS(bits)	    bits
527 
528 #define	VXGE_HAL_STATS_VPATH_RX_ERR_IP_OFFSET		    (0x178>>3)
529 #define	VXGE_HAL_STATS_GET_VPATH_RX_ERR_IP(bits)	    bits
530 
531 #define	VXGE_HAL_STATS_VPATH_RX_ICMP_OFFSET		    (0x180>>3)
532 #define	VXGE_HAL_STATS_GET_VPATH_RX_ICMP(bits)		    bits
533 
534 #define	VXGE_HAL_STATS_VPATH_RX_TCP_OFFSET		    (0x188>>3)
535 #define	VXGE_HAL_STATS_GET_VPATH_RX_TCP(bits)		    bits
536 
537 #define	VXGE_HAL_STATS_VPATH_RX_UDP_OFFSET		    (0x190>>3)
538 #define	VXGE_HAL_STATS_GET_VPATH_RX_UDP(bits)		    bits
539 
540 #define	VXGE_HAL_STATS_VPATH_RX_ERR_TCP_OFFSET		    (0x198>>3)
541 #define	VXGE_HAL_STATS_GET_VPATH_RX_ERR_TCP(bits)	    bits
542 
543 #define	VXGE_HAL_STATS_VPATH_RX_LOST_FRMS_OFFSET	    (0x1a0>>3)
544 #define	VXGE_HAL_STATS_GET_VPATH_RX_LOST_FRMS(bits)	    bits
545 
546 #define	VXGE_HAL_STATS_VPATH_RX_LOST_IP_OFFSET		    (0x1a8>>3)
547 #define	VXGE_HAL_STATS_GET_VPATH_RX_LOST_IP(bits)	    bits
548 
549 #define	VXGE_HAL_STATS_VPATH_RX_LOST_IP_OFFLOAD_OFFSET	    (0x1b0>>3)
550 #define	VXGE_HAL_STATS_GET_VPATH_RX_LOST_IP_OFFLOAD(bits)   bits
551 
552 #define	VXGE_HAL_STATS_VPATH_RX_QUEUE_FULL_DISCARD_OFFSET   (0x1b8>>3)
553 #define	VXGE_HAL_STATS_GET_VPATH_RX_QUEUE_FULL_DISCARD(bits) bVAL16(bits, 8)
554 
555 #define	VXGE_HAL_STATS_VPATH_RX_RED_DISCARD_OFFSET	    (0x1b8>>3)
556 #define	VXGE_HAL_STATS_GET_VPATH_RX_RED_DISCARD(bits)	    bVAL16(bits, 24)
557 
558 #define	VXGE_HAL_STATS_VPATH_RX_SLEEP_DISCARD_OFFSET	    (0x1b8>>3)
559 #define	VXGE_HAL_STATS_GET_VPATH_RX_SLEEP_DISCARD(bits)	    bVAL16(bits, 42)
560 
561 #define	VXGE_HAL_STATS_VPATH_RX_MPA_OK_FRMS_OFFSET	    (0x1c0>>3)
562 #define	VXGE_HAL_STATS_GET_VPATH_RX_MPA_OK_FRMS(bits)	    bits
563 
564 #define	VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM0_OFFSET	    (0x1d0>>3)
565 #define	VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM0(bits)	    bVAL32(bits, 0)
566 
567 #define	VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM1_OFFSET	    (0x1d0>>3)
568 #define	VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM1(bits)	    bVAL32(bits, 32)
569 
570 #define	VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM2_OFFSET	    (0x1d8>>3)
571 #define	VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM2(bits)	    bVAL32(bits, 0)
572 
573 #define	VXGE_HAL_STATS_VPATH_PROG_EVENT_VNUM3_OFFSET	    (0x1d8>>3)
574 #define	VXGE_HAL_STATS_GET_VPATH_PROG_EVENT_VNUM3(bits)	    bVAL32(bits, 32)
575 
576 /*
577  * struct vxge_hal_xmac_aggr_stats_t - Per-Aggregator XMAC Statistics
578  *
579  * @tx_frms: Count of data frames transmitted on this Aggregator on all
580  *		its Aggregation ports. Does not include LACPDUs or Marker PDUs.
581  *		However, does include frames discarded by the Distribution
582  *		function.
583  * @tx_data_octets: Count of data and padding octets of frames transmitted
584  *		on this Aggregator on all its Aggregation ports.Does not include
585  *		octets of LACPDUs or Marker PDUs. However,does include octets of
586  *		frames discarded by the Distribution function.
587  * @tx_mcast_frms: Count of data frames transmitted (to a group destination
588  *		address other than the broadcast address) on this Aggregator on
589  *		all its Aggregation ports. Does not include LACPDUs or Marker
590  *		PDUs. However, does include frames discarded by the Distribution
591  *		function.
592  * @tx_bcast_frms: Count of broadcast data frames transmitted on this Aggregator
593  *		on all its Aggregation ports. Does not include LACPDUs or Marker
594  *		PDUs. However, does include frames discarded by the Distribution
595  *		function.
596  * @tx_discarded_frms: Count of data frames to be transmitted on this Aggregator
597  *		that are discarded by the Distribution function.This occurs when
598  *		conversation are allocated to different ports and have to be
599  *		flushed on old ports
600  * @tx_errored_frms: Count of data frames transmitted on this Aggregator that
601  *		experience transmission errors on its Aggregation ports.
602  * @rx_frms: Count of data frames received on this Aggregator on all its
603  *		Aggregation ports. Does not include LACPDUs or Marker PDUs.
604  *		Also, does not include frames discarded by the Collection
605  *		function.
606  * @rx_data_octets: Count of data and padding octets of frames received on this
607  *		Aggregator on all its Aggregation ports. Does not include octets
608  *		of LACPDUs or Marker PDUs.Also,does not include octets of frames
609  *		discarded by the Collection function.
610  * @rx_mcast_frms: Count of data frames received (from a group destination
611  *		address other than the broadcast address) on this Aggregator on
612  *		all its Aggregation ports. Does not include LACPDUs or Marker
613  *		PDUs. Also, does not include frames discarded by the Collection
614  *		function.
615  * @rx_bcast_frms: Count of broadcast data frames received on this Aggregator on
616  *		all its Aggregation ports. Does not include LACPDUs or Marker
617  *		PDUs. Also, does not include frames discarded by the Collection
618  *		function.
619  * @rx_discarded_frms: Count of data frames received on this Aggregator that are
620  *		discarded by the Collection function because the Collection
621  *		function was disabled on the port which the frames are received.
622  * @rx_errored_frms: Count of data frames received on this Aggregator that are
623  *		discarded by its Aggregation ports, or are discarded by the
624  *		Collection function of the Aggregator, or that are discarded by
625  *		the Aggregator due to detection of an illegal Slow Protocols PDU
626  * @rx_unknown_slow_proto_frms: Count of data frames received on this Aggregator
627  *		that are discarded by its Aggregation ports due to detection of
628  *		an unknown Slow Protocols PDU.
629  *
630  * Per aggregator XMAC RX statistics.
631  */
632 #pragma pack(1)
633 typedef struct vxge_hal_xmac_aggr_stats_t {
634 /* 0x000 */		u64	tx_frms;
635 /* 0x008 */		u64	tx_data_octets;
636 /* 0x010 */		u64	tx_mcast_frms;
637 /* 0x018 */		u64	tx_bcast_frms;
638 /* 0x020 */		u64	tx_discarded_frms;
639 /* 0x028 */		u64	tx_errored_frms;
640 /* 0x030 */		u64	rx_frms;
641 /* 0x038 */		u64	rx_data_octets;
642 /* 0x040 */		u64	rx_mcast_frms;
643 /* 0x048 */		u64	rx_bcast_frms;
644 /* 0x050 */		u64	rx_discarded_frms;
645 /* 0x058 */		u64	rx_errored_frms;
646 /* 0x060 */		u64	rx_unknown_slow_proto_frms;
647 } vxge_hal_xmac_aggr_stats_t;
648 
649 #pragma pack()
650 
651 /*
652  * struct vxge_hal_xmac_port_stats_t - XMAC Port Statistics
653  *
654  * @tx_ttl_frms: Count of successfully transmitted MAC frames
655  * @tx_ttl_octets: Count of total octets of transmitted frames, not including
656  *	   framing characters (i.e. less framing bits). To determine the
657  *	   total octets of transmitted frames, including framing characters,
658  *	   multiply PORTn_TX_TTL_FRMS by 8 and add it to this stat (unless
659  *	   otherwise configured, this stat only counts frames that have
660  *	   8 bytes of preamble for each frame). This stat can be configured
661  *	   (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count everything
662  *	   including the preamble octets.
663  * @tx_data_octets: Count of data and padding octets of successfully transmitted
664  *	   frames.
665  * @tx_mcast_frms: Count of successfully transmitted frames to a group address
666  *	   other than the broadcast address.
667  * @tx_bcast_frms: Count of successfully transmitted frames to the broadcast
668  *	   group address.
669  * @tx_ucast_frms: Count of transmitted frames containing a unicast address.
670  *	   Includes discarded frames that are not sent to the network.
671  * @tx_tagged_frms: Count of transmitted frames containing a VLAN tag.
672  * @tx_vld_ip: Count of transmitted IP datagrams that are passed to the network.
673  * @tx_vld_ip_octets: Count of total octets of transmitted IP datagrams that
674  *	   are passed to the network.
675  * @tx_icmp: Count of transmitted ICMP messages. Includes messages not sent
676  *	   due to problems within ICMP.
677  * @tx_tcp: Count of transmitted TCP segments. Does not include segments
678  *	   containing retransmitted octets.
679  * @tx_rst_tcp: Count of transmitted TCP segments containing the RST flag.
680  * @tx_udp: Count of transmitted UDP datagrams.
681  * @tx_parse_error: Increments when the TPA is unable to parse a packet. This
682  *	   generally occurs when a packet is corrupt somehow, including
683  *	   packets that have IP version mismatches, invalid Layer 2 control
684  *	   fields, etc. L3/L4 checksums are not offloaded, but the packet
685  *	   is still be transmitted.
686  * @tx_unknown_protocol: Increments when the TPA encounters an unknown
687  *	   protocol, such as a new IPv6 extension header, or an unsupported
688  *	   Routing Type. The packet still has a checksum calculated but it
689  *	   may be incorrect.
690  * @tx_pause_ctrl_frms: Count of MAC PAUSE control frames that are transmitted.
691  *	   Since, the only control frames supported by this device are
692  *	   PAUSE frames, this register is a count of all transmitted MAC
693  *	   control frames.
694  * @tx_marker_pdu_frms: Count of Marker PDUs transmitted on this Aggr port
695  * @tx_lacpdu_frms: Count of LACPDUs transmitted on this Aggregation port.
696  * @tx_drop_ip: Count of transmitted IP datagrams that could not be passed to
697  *	   the network. Increments because of: 1) An internal processing error
698  *	   (such as an uncorrectable ECC error). 2) A frame parsing error
699  *	   during IP checksum calculation.
700  * @tx_marker_resp_pdu_frms: Count of Marker Response PDUs transmitted on this
701  *	   Aggregation port.
702  * @tx_xgmii_char2_match: Maintains a count of the number of transmitted XGMII
703  *	   characters that match a pattern that is programmable through
704  *	   register XMAC_STATS_TX_XGMII_CHAR_PORTn. By default, the pattern
705  *	   is set to /T/ (i.e. the terminate character), thus the statistic
706  *	   tracks the number of transmitted Terminate characters.
707  * @tx_xgmii_char1_match: Maintains a count of the number of transmitted XGMII
708  *	   characters that match a pattern that is programmable through
709  *	   register XMAC_STATS_TX_XGMII_CHAR_PORTn. By default, the pattern
710  *	   is set to /S/ (i.e. the start character), thus the statistic tracks
711  *	   the number of transmitted Start characters.
712  * @tx_xgmii_column2_match: Maintains a count of the number of transmitted XGMII
713  *	   columns that match a pattern that is programmable through register
714  *	   XMAC_STATS_TX_XGMII_COLUMN2_PORTn. By default, the pattern is set
715  *	   to 4 x /E/ (i.e. a column containing all error characters), thus
716  *	   the statistic tracks the number of Error columns transmitted at
717  *	   any time. If XMAC_STATS_TX_XGMII_BEHAV_COLUMN2_PORTn.NEAR_COL1 is
718  *	   set to 1, then this stat increments when COLUMN2 is found within
719  *	   'n' clocks after COLUMN1. Here, 'n' is defined by
720  *	   XMAC_STATS_TX_XGMII_BEHAV_COLUMN2_PORTn.NUM_COL (if 'n' is set
721  *	   to 0, then it means to search anywhere for COLUMN2).
722  * @tx_xgmii_column1_match: Maintains a count of the number of transmitted XGMII
723  *	   columns that match a pattern that is programmable through register
724  *	   XMAC_STATS_TX_XGMII_COLUMN1_PORTn. By default, the pattern is set
725  *	   to 4 x /I/ (i.e. a column containing all idle characters), thus the
726  *	   statistic tracks the number of transmitted Idle columns.
727  * @unused1: Reserved
728  * @tx_any_err_frms: Count of transmitted frames containing any error that
729  *	   prevents them from being passed to the network. Increments if
730  *	   there is an ECC while reading the frame out of the transmit
731  *	   buffer. Also increments if the transmit protocol assist (TPA)
732  *	   block determines that the frame should not be sent.
733  * @tx_drop_frms: Count of frames that could not be sent for no other reason
734  *	   than internal MAC processing. Increments once whenever the
735  *	   transmit buffer is flushed (due to an ECC error on a memory
736  *	   descriptor).
737  * @rx_ttl_frms: Count of total received MAC frames, including frames received
738  *	   with frame-too-long, FCS, or length errors. This stat can be
739  *	   configured (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count
740  *	   everything, even "frames" as small one byte of preamble.
741  * @rx_vld_frms: Count of successfully received MAC frames. Does not include
742  *	   frames received with frame-too-long, FCS, or length errors.
743  * @rx_offload_frms: Count of offloaded received frames that are passed to
744  *	   the host.
745  * @rx_ttl_octets: Count of total octets of received frames, not including
746  *	   framing characters (i.e. less framing bits). To determine the
747  *	   total octets of received frames, including framing characters,
748  *	   multiply PORTn_RX_TTL_FRMS by 8 and add it to this stat (unless
749  *	   otherwise configured, this stat only counts frames that have 8
750  *	   bytes of preamble for each frame). This stat can be configured
751  *	   (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count everything,
752  *	   even the preamble octets of "frames" as small one byte of preamble.
753  * @rx_data_octets: Count of data and padding octets of successfully received
754  *	   frames. Does not include frames received with frame-too-long,
755  *	   FCS, or length errors.
756  * @rx_offload_octets: Count of total octets, not including framing
757  *	   characters, of offloaded received frames that are passed
758  *	   to the host.
759  * @rx_vld_mcast_frms: Count of successfully received MAC frames containing a
760  *		 nonbroadcast group address. Does not include frames received
761  *	   with frame-too-long, FCS, or length errors.
762  * @rx_vld_bcast_frms: Count of successfully received MAC frames containing
763  *	   the broadcast group address. Does not include frames received
764  *	   with frame-too-long, FCS, or length errors.
765  * @rx_accepted_ucast_frms: Count of successfully received frames containing
766  *	   a unicast address. Only includes frames that are passed to
767  *	   the system.
768  * @rx_accepted_nucast_frms: Count of successfully received frames containing
769  *	   a non-unicast (broadcast or multicast) address. Only includes
770  *	   frames that are passed to the system. Could include, for instance,
771  *	   non-unicast frames that contain FCS errors if the MAC_ERROR_CFG
772  *	   register is set to pass FCS-errored frames to the host.
773  * @rx_tagged_frms: Count of received frames containing a VLAN tag.
774  * @rx_long_frms: Count of received frames that are longer than RX_MAX_PYLD_LEN
775  *	   + 18 bytes (+ 22 bytes if VLAN-tagged).
776  * @rx_usized_frms: Count of received frames of length (including FCS, but not
777  *	   framing bits) less than 64 octets, that are otherwise well-formed.
778  *	   In other words, counts runts.
779  * @rx_osized_frms: Count of received frames of length (including FCS, but not
780  *	   framing bits) more than 1518 octets, that are otherwise
781  *	   well-formed. Note: If register XMAC_STATS_GLOBAL_CFG.VLAN_HANDLING
782  *	   is set to 1, then "more than 1518 octets" becomes "more than 1518
783  *	   (1522 if VLAN-tagged) octets".
784  * @rx_frag_frms: Count of received frames of length (including FCS, but not
785  *	   framing bits) less than 64 octets that had bad FCS. In other
786  *	   words, counts fragments.
787  * @rx_jabber_frms: Count of received frames of length (including FCS, but not
788  *	   framing bits) more than 1518 octets that had bad FCS. In other
789  *	   words, counts jabbers. Note: If register
790  *	   XMAC_STATS_GLOBAL_CFG.VLAN_HANDLING is set to 1, then "more than
791  *	   1518 octets" becomes "more than 1518 (1522 if VLAN-tagged) octets".
792  * @rx_ttl_64_frms: Count of total received MAC frames with length (including
793  *	   FCS, but not framing bits) of exactly 64 octets. Includes frames
794  *	   received with frame-too-long, FCS, or length errors.
795  * @rx_ttl_65_127_frms: Count of total received MAC frames with length
796  *	   (including FCS, but not framing bits) of between 65 and 127
797  *	   octets inclusive. Includes frames received with frame-too-long,
798  *	   FCS, or length errors.
799  * @rx_ttl_128_255_frms: Count of total received MAC frames with length
800  *	   (including FCS, but not framing bits) of between 128 and 255
801  *	   octets inclusive. Includes frames received with frame-too-long,
802  *	   FCS, or length errors.
803  * @rx_ttl_256_511_frms: Count of total received MAC frames with length
804  *	   (including FCS, but not framing bits) of between 256 and 511
805  *	   octets inclusive. Includes frames received with frame-too-long,
806  *	   FCS, or length errors.
807  * @rx_ttl_512_1023_frms: Count of total received MAC frames with length
808  *	   (including FCS, but not framing bits) of between 512 and 1023
809  *	   octets inclusive. Includes frames received with frame-too-long,
810  *	   FCS, or length errors.
811  * @rx_ttl_1024_1518_frms: Count of total received MAC frames with length
812  *	   (including FCS, but not framing bits) of between 1024 and 1518
813  *	   octets inclusive. Includes frames received with frame-too-long,
814  *	   FCS, or length errors.
815  * @rx_ttl_1519_4095_frms: Count of total received MAC frames with length
816  *	   (including FCS, but not framing bits) of between 1519 and 4095
817  *	   octets inclusive. Includes frames received with frame-too-long,
818  *	   FCS, or length errors.
819  * @rx_ttl_4096_8191_frms: Count of total received MAC frames with length
820  *	   (including FCS, but not framing bits) of between 4096 and 8191
821  *	   octets inclusive. Includes frames received with frame-too-long,
822  *	   FCS, or length errors.
823  * @rx_ttl_8192_max_frms: Count of total received MAC frames with length
824  *	   (including FCS, but not framing bits) of between 8192 and
825  *	   RX_MAX_PYLD_LEN+18 octets inclusive. Includes frames received
826  *	   with frame-too-long, FCS, or length errors.
827  * @rx_ttl_gt_max_frms: Count of total received MAC frames with length
828  *	   (including FCS, but not framing bits) exceeding
829  *	   RX_MAX_PYLD_LEN+18 (+22 bytes if VLAN-tagged) octets inclusive.
830  *	   Includes frames received with frame-too-long, FCS, or length errors.
831  * @rx_ip: Count of received IP datagrams. Includes errored IP datagrams.
832  * @rx_accepted_ip: Count of received IP datagrams that are passed to the system
833  * @rx_ip_octets: Count of number of octets in received IP datagrams. Includes
834  *	   errored IP datagrams.
835  * @rx_err_ip:	Count of received IP datagrams containing errors. For example,
836  *	   bad IP checksum.
837  * @rx_icmp: Count of received ICMP messages. Includes errored ICMP messages.
838  * @rx_tcp: Count of received TCP segments. Includes errored TCP segments.
839  *	   Note: This stat contains a count of all received TCP segments,
840  *	   regardless of whether or not they pertain to an established
841  *	   connection.
842  * @rx_udp: Count of received UDP datagrams.
843  * @rx_err_tcp: Count of received TCP segments containing errors. For example,
844  *	   bad TCP checksum.
845  * @rx_pause_count: Count of number of pause quanta that the MAC has been in
846  *	   the paused state. Recall, one pause quantum equates to 512
847  *	   bit times.
848  * @rx_pause_ctrl_frms: Count of received MAC PAUSE control frames.
849  * @rx_unsup_ctrl_frms: Count of received MAC control frames that do not
850  *	   contain the PAUSE opcode. The sum of RX_PAUSE_CTRL_FRMS and
851  *	   this register is a count of all received MAC control frames.
852  *	   Note: This stat may be configured to count all layer 2 errors
853  *	   (i.e. length errors and FCS errors).
854  * @rx_fcs_err_frms: Count of received MAC frames that do not pass FCS. Does
855  *	   not include frames received with frame-too-long or
856  *	   frame-too-short error.
857  * @rx_in_rng_len_err_frms: Count of received frames with a length/type field
858  *	   value between 46 (42 for VLAN-tagged frames) and 1500 (also 1500
859  *	   for VLAN-tagged frames), inclusive, that does not match the
860  *	   number of data octets (including pad) received. Also contains
861  *	   a count of received frames with a length/type field less than
862  *	   46 (42 for VLAN-tagged frames) and the number of data octets
863  *	   (including pad) received is greater than 46 (42 for VLAN-tagged
864  *	   frames).
865  * @rx_out_rng_len_err_frms:  Count of received frames with length/type field
866  *	   between 1501 and 1535 decimal, inclusive.
867  * @rx_drop_frms: Count of received frames that could not be passed to the host.
868  *	   See PORTn_RX_L2_MGMT_DISCARD, PORTn_RX_RPA_DISCARD,
869  *	   PORTn_RX_TRASH_DISCARD, PORTn_RX_RTS_DISCARD, PORTn_RX_RED_DISCARD
870  *	   for a list of reasons. Because the RMAC drops one frame at a time,
871  *	   this stat also indicates the number of drop events.
872  * @rx_discarded_frms: Count of received frames containing error that prevents
873  *	   them from being passed to the system. See PORTn_RX_FCS_DISCARD,
874  *	   PORTn_RX_LEN_DISCARD, and PORTn_RX_SWITCH_DISCARD for a list of
875  *	   reasons.
876  * @rx_drop_ip: Count of received IP datagrams that could not be passed to the
877  *	   host. See PORTn_RX_DROP_FRMS for a list of reasons.
878  * @rx_drop_udp: Count of received UDP datagrams that are not delivered to the
879  *	   host. See PORTn_RX_DROP_FRMS for a list of reasons.
880  * @rx_marker_pdu_frms: Count of valid Marker PDUs received on this Aggregation
881  *	   port.
882  * @rx_lacpdu_frms: Count of valid LACPDUs received on this Aggregation port.
883  * @rx_unknown_pdu_frms: Count of received frames (on this Aggregation port)
884  *	   that carry the Slow Protocols EtherType, but contain an unknown
885  *	   PDU. Or frames that contain the Slow Protocols group MAC address,
886  *	   but do not carry the Slow Protocols EtherType.
887  * @rx_marker_resp_pdu_frms: Count of valid Marker Response PDUs received on
888  *	   this Aggregation port.
889  * @rx_fcs_discard: Count of received frames that are discarded because the
890  *	   FCS check failed.
891  * @rx_illegal_pdu_frms: Count of received frames (on this Aggregation port)
892  *	   that carry the Slow Protocols EtherType, but contain a badly
893  *	   formed PDU. Or frames that carry the Slow Protocols EtherType,
894  *	   but contain an illegal value of Protocol Subtype.
895  * @rx_switch_discard: Count of received frames that are discarded by the
896  *	   internal switch because they did not have an entry in the
897  *	   Filtering Database. This includes frames that had an invalid
898  *	   destination MAC address or VLAN ID. It also includes frames are
899  *	   discarded because they did not satisfy the length requirements
900  *	   of the target VPATH.
901  * @rx_len_discard: Count of received frames that are discarded because of an
902  *	   invalid frame length (includes fragments, oversized frames and
903  *	   mismatch between frame length and length/type field). This stat
904  *	   can be configured (see XMAC_STATS_GLOBAL_CFG.LEN_DISCARD_HANDLING).
905  * @rx_rpa_discard: Count of received frames that were discarded because the
906  *	   receive protocol assist (RPA) discovered and error in the frame
907  *	   or was unable to parse the frame.
908  * @rx_l2_mgmt_discard: Count of Layer 2 management frames (eg. pause frames,
909  *	   Link Aggregation Control Protocol (LACP) frames, etc.) that are
910  *	   discarded.
911  * @rx_rts_discard: Count of received frames that are discarded by the receive
912  *	   traffic steering (RTS) logic. Includes those frame discarded
913  *	   because the SSC response contradicted the switch table, because
914  *	   the SSC timed out, or because the target queue could not fit the
915  *	   frame.
916  * @rx_trash_discard: Count of received frames that are discarded because
917  *	   receive traffic steering (RTS) steered the frame to the trash
918  *	   queue.
919  * @rx_buff_full_discard: Count of received frames that are discarded because
920  *	   internal buffers are full. Includes frames discarded because the
921  *	   RTS logic is waiting for an SSC lookup that has no timeout bound.
922  *	   Also, includes frames that are dropped because the MAC2FAU buffer
923  *	   is nearly full -- this can happen if the external receive buffer
924  *	   is full and the receive path is backing up.
925  * @rx_red_discard: Count of received frames that are discarded because of RED
926  *	   (Random Early Discard).
927  * @rx_xgmii_ctrl_err_cnt: Maintains a count of unexpected or misplaced control
928  *	   characters occurring between times of normal data transmission
929  *	   (i.e. not included in RX_XGMII_DATA_ERR_CNT). This counter is
930  *	   incremented when either -
931  *	   1) The Reconciliation Sublayer (RS) is expecting one control
932  *		  character and gets another (i.e. is expecting a Start
933  *		  character, but gets another control character).
934  *	   2) Start control character is not in lane 0
935  *	   Only increments the count by one for each XGMII column.
936  * @rx_xgmii_data_err_cnt: Maintains a count of unexpected control characters
937  *	   during normal data transmission. If the Reconciliation Sublayer
938  *	   (RS) receives a control character, other than a terminate control
939  *	   character, during receipt of data octets then this register is
940  *	   incremented. Also increments if the start frame delimiter is not
941  *	   found in the correct location. Only increments the count by one
942  *	   for each XGMII column.
943  * @rx_xgmii_char1_match: Maintains a count of the number of XGMII characters
944  *	   that match a pattern that is programmable through register
945  *	   XMAC_STATS_RX_XGMII_CHAR_PORTn. By default, the pattern is set
946  *	   to /E/ (i.e. the error character), thus the statistic tracks the
947  *	   number of Error characters received at any time.
948  * @rx_xgmii_err_sym: Count of the number of symbol errors in the received
949  *	   XGMII data (i.e. PHY indicates "Receive Error" on the XGMII).
950  *	   Only includes symbol errors that are observed between the XGMII
951  *	   Start Frame Delimiter and End Frame Delimiter, inclusive. And
952  *	   only increments the count by one for each frame.
953  * @rx_xgmii_column1_match: Maintains a count of the number of XGMII columns
954  *	   that match a pattern that is programmable through register
955  *	   XMAC_STATS_RX_XGMII_COLUMN1_PORTn. By default, the pattern is set
956  *	   to 4 x /E/ (i.e. a column containing all error characters), thus
957  *	   the statistic tracks the number of Error columns received at any
958  *	   time.
959  * @rx_xgmii_char2_match: Maintains a count of the number of XGMII characters
960  *	   that match a pattern that is programmable through register
961  *	   XMAC_STATS_RX_XGMII_CHAR_PORTn. By default, the pattern is set
962  *	   to /E/ (i.e. the error character), thus the statistic tracks the
963  *	   number of Error characters received at any time.
964  * @rx_local_fault: Maintains a count of the number of times that link
965  *	   transitioned from "up" to "down" due to a local fault.
966  * @rx_xgmii_column2_match: Maintains a count of the number of XGMII columns
967  *	   that match a pattern that is programmable through register
968  *	   XMAC_STATS_RX_XGMII_COLUMN2_PORTn. By default, the pattern is set
969  *	   to 4 x /E/ (i.e. a column containing all error characters), thus
970  *	   the statistic tracks the number of Error columns received at any
971  *	   time. If XMAC_STATS_RX_XGMII_BEHAV_COLUMN2_PORTn.NEAR_COL1 is set
972  *	   to 1, then this stat increments when COLUMN2 is found within 'n'
973  *	   clocks after COLUMN1. Here, 'n' is defined by
974  *	   XMAC_STATS_RX_XGMII_BEHAV_COLUMN2_PORTn.NUM_COL (if 'n' is set to
975  *	   0, then it means to search anywhere for COLUMN2).
976  * @rx_jettison: Count of received frames that are jettisoned because internal
977  *	   buffers are full.
978  * @rx_remote_fault: Maintains a count of the number of times that link
979  *	   transitioned from "up" to "down" due to a remote fault.
980  *
981  * XMAC Port Statistics.
982  */
983 #pragma pack(1)
984 typedef struct vxge_hal_xmac_port_stats_t {
985 /* 0x000 */		u64	tx_ttl_frms;
986 /* 0x008 */		u64	tx_ttl_octets;
987 /* 0x010 */		u64	tx_data_octets;
988 /* 0x018 */		u64	tx_mcast_frms;
989 /* 0x020 */		u64	tx_bcast_frms;
990 /* 0x028 */		u64	tx_ucast_frms;
991 /* 0x030 */		u64	tx_tagged_frms;
992 /* 0x038 */		u64	tx_vld_ip;
993 /* 0x040 */		u64	tx_vld_ip_octets;
994 /* 0x048 */		u64	tx_icmp;
995 /* 0x050 */		u64	tx_tcp;
996 /* 0x058 */		u64	tx_rst_tcp;
997 /* 0x060 */		u64	tx_udp;
998 /* 0x068 */		u32	tx_parse_error;
999 /* 0x06c */		u32	tx_unknown_protocol;
1000 /* 0x070 */		u64	tx_pause_ctrl_frms;
1001 /* 0x078 */		u32	tx_marker_pdu_frms;
1002 /* 0x07c */		u32	tx_lacpdu_frms;
1003 /* 0x080 */		u32	tx_drop_ip;
1004 /* 0x084 */		u32	tx_marker_resp_pdu_frms;
1005 /* 0x088 */		u32	tx_xgmii_char2_match;
1006 /* 0x08c */		u32	tx_xgmii_char1_match;
1007 /* 0x090 */		u32	tx_xgmii_column2_match;
1008 /* 0x094 */		u32	tx_xgmii_column1_match;
1009 /* 0x098 */		u32	unused1;
1010 /* 0x09c */		u16	tx_any_err_frms;
1011 /* 0x09e */		u16	tx_drop_frms;
1012 /* 0x0a0 */		u64	rx_ttl_frms;
1013 /* 0x0a8 */		u64	rx_vld_frms;
1014 /* 0x0b0 */		u64	rx_offload_frms;
1015 /* 0x0b8 */		u64	rx_ttl_octets;
1016 /* 0x0c0 */		u64	rx_data_octets;
1017 /* 0x0c8 */		u64	rx_offload_octets;
1018 /* 0x0d0 */		u64	rx_vld_mcast_frms;
1019 /* 0x0d8 */		u64	rx_vld_bcast_frms;
1020 /* 0x0e0 */		u64	rx_accepted_ucast_frms;
1021 /* 0x0e8 */		u64	rx_accepted_nucast_frms;
1022 /* 0x0f0 */		u64	rx_tagged_frms;
1023 /* 0x0f8 */		u64	rx_long_frms;
1024 /* 0x100 */		u64	rx_usized_frms;
1025 /* 0x108 */		u64	rx_osized_frms;
1026 /* 0x110 */		u64	rx_frag_frms;
1027 /* 0x118 */		u64	rx_jabber_frms;
1028 /* 0x120 */		u64	rx_ttl_64_frms;
1029 /* 0x128 */		u64	rx_ttl_65_127_frms;
1030 /* 0x130 */		u64	rx_ttl_128_255_frms;
1031 /* 0x138 */		u64	rx_ttl_256_511_frms;
1032 /* 0x140 */		u64	rx_ttl_512_1023_frms;
1033 /* 0x148 */		u64	rx_ttl_1024_1518_frms;
1034 /* 0x150 */		u64	rx_ttl_1519_4095_frms;
1035 /* 0x158 */		u64	rx_ttl_4096_8191_frms;
1036 /* 0x160 */		u64	rx_ttl_8192_max_frms;
1037 /* 0x168 */		u64	rx_ttl_gt_max_frms;
1038 /* 0x170 */		u64	rx_ip;
1039 /* 0x178 */		u64	rx_accepted_ip;
1040 /* 0x180 */		u64	rx_ip_octets;
1041 /* 0x188 */		u64	rx_err_ip;
1042 /* 0x190 */		u64	rx_icmp;
1043 /* 0x198 */		u64	rx_tcp;
1044 /* 0x1a0 */		u64	rx_udp;
1045 /* 0x1a8 */		u64	rx_err_tcp;
1046 /* 0x1b0 */		u64	rx_pause_count;
1047 /* 0x1b8 */		u64	rx_pause_ctrl_frms;
1048 /* 0x1c0 */		u64	rx_unsup_ctrl_frms;
1049 /* 0x1c8 */		u64	rx_fcs_err_frms;
1050 /* 0x1d0 */		u64	rx_in_rng_len_err_frms;
1051 /* 0x1d8 */		u64	rx_out_rng_len_err_frms;
1052 /* 0x1e0 */		u64	rx_drop_frms;
1053 /* 0x1e8 */		u64	rx_discarded_frms;
1054 /* 0x1f0 */		u64	rx_drop_ip;
1055 /* 0x1f8 */		u64	rx_drop_udp;
1056 /* 0x200 */		u32	rx_marker_pdu_frms;
1057 /* 0x204 */		u32	rx_lacpdu_frms;
1058 /* 0x208 */		u32	rx_unknown_pdu_frms;
1059 /* 0x20c */		u32	rx_marker_resp_pdu_frms;
1060 /* 0x210 */		u32	rx_fcs_discard;
1061 /* 0x214 */		u32	rx_illegal_pdu_frms;
1062 /* 0x218 */		u32	rx_switch_discard;
1063 /* 0x21c */		u32	rx_len_discard;
1064 /* 0x220 */		u32	rx_rpa_discard;
1065 /* 0x224 */		u32	rx_l2_mgmt_discard;
1066 /* 0x228 */		u32	rx_rts_discard;
1067 /* 0x22c */		u32	rx_trash_discard;
1068 /* 0x230 */		u32	rx_buff_full_discard;
1069 /* 0x234 */		u32	rx_red_discard;
1070 /* 0x238 */		u32	rx_xgmii_ctrl_err_cnt;
1071 /* 0x23c */		u32	rx_xgmii_data_err_cnt;
1072 /* 0x240 */		u32	rx_xgmii_char1_match;
1073 /* 0x244 */		u32	rx_xgmii_err_sym;
1074 /* 0x248 */		u32	rx_xgmii_column1_match;
1075 /* 0x24c */		u32	rx_xgmii_char2_match;
1076 /* 0x250 */		u32	rx_local_fault;
1077 /* 0x254 */		u32	rx_xgmii_column2_match;
1078 /* 0x258 */		u32	rx_jettison;
1079 /* 0x25c */		u32	rx_remote_fault;
1080 } vxge_hal_xmac_port_stats_t;
1081 
1082 #pragma pack()
1083 
1084 /*
1085  * struct vxge_hal_mrpcim_xmac_stats_t - XMAC Statistics
1086  *
1087  * @aggr_stats: Statistics on aggregate port(port 0, port 1)
1088  * @port_stats: Staticstics on ports(wire 0, wire 1, lag)
1089  *
1090  * XMAC Statistics.
1091  */
1092 typedef struct vxge_hal_mrpcim_xmac_stats_t {
1093 	vxge_hal_xmac_aggr_stats_t	aggr_stats[VXGE_HAL_MAC_MAX_AGGR_PORTS];
1094 	vxge_hal_xmac_port_stats_t	port_stats[VXGE_HAL_MAC_MAX_PORTS];
1095 } vxge_hal_mrpcim_xmac_stats_t;
1096 
1097 /*
1098  * struct vxge_hal_xmac_vpath_tx_stats_t - XMAC Vpath Tx Statistics
1099  *
1100  * @tx_ttl_eth_frms: Count of successfully transmitted MAC frames.
1101  * @tx_ttl_eth_octets: Count of total octets of transmitted frames,
1102  *		not including framing characters (i.e. less framing bits).
1103  *		To determine the total octets of transmitted frames, including
1104  *		framing characters, multiply TX_TTL_ETH_FRMS by 8 and add it to
1105  *		this stat (the device always prepends 8 bytes of preamble for
1106  *		each frame)
1107  * @tx_data_octets: Count of data and padding octets of successfully transmitted
1108  *		frames.
1109  * @tx_mcast_frms: Count of successfully transmitted frames to a group address
1110  *		other than the broadcast address.
1111  * @tx_bcast_frms: Count of successfully transmitted frames to the broadcast
1112  *		group address.
1113  * @tx_ucast_frms: Count of transmitted frames containing a unicast address.
1114  *		Includes discarded frames that are not sent to the network.
1115  * @tx_tagged_frms: Count of transmitted frames containing a VLAN tag.
1116  * @tx_vld_ip: Count of transmitted IP datagrams that are passed to the network.
1117  * @tx_vld_ip_octets: Count of total octets of transmitted IP datagrams that
1118  *	   are passed to the network.
1119  * @tx_icmp: Count of transmitted ICMP messages. Includes messages not sent due
1120  *	   to problems within ICMP.
1121  * @tx_tcp: Count of transmitted TCP segments. Does not include segments
1122  *	   containing retransmitted octets.
1123  * @tx_rst_tcp: Count of transmitted TCP segments containing the RST flag.
1124  * @tx_udp: Count of transmitted UDP datagrams.
1125  * @tx_unknown_protocol: Increments when the TPA encounters an unknown protocol,
1126  *	   such as a new IPv6 extension header, or an unsupported Routing
1127  *	   Type. The packet still has a checksum calculated but it may be
1128  *	   incorrect.
1129  * @tx_lost_ip: Count of transmitted IP datagrams that could not be passed
1130  *	   to the network. Increments because of: 1) An internal processing
1131  *	   error (such as an uncorrectable ECC error). 2) A frame parsing
1132  *	   error during IP checksum calculation.
1133  * @unused1: Reserved.
1134  * @tx_parse_error: Increments when the TPA is unable to parse a packet. This
1135  *	   generally occurs when a packet is corrupt somehow, including
1136  *	   packets that have IP version mismatches, invalid Layer 2 control
1137  *	   fields, etc. L3/L4 checksums are not offloaded, but the packet
1138  *	   is still be transmitted.
1139  * @tx_tcp_offload: For frames belonging to offloaded sessions only, a count
1140  *	   of transmitted TCP segments. Does not include segments containing
1141  *	   retransmitted octets.
1142  * @tx_retx_tcp_offload: For frames belonging to offloaded sessions only, the
1143  *	   total number of segments retransmitted. Retransmitted segments
1144  *	   that are sourced by the host are counted by the host.
1145  * @tx_lost_ip_offload: For frames belonging to offloaded sessions only, a count
1146  *	   of transmitted IP datagrams that could not be passed to the
1147  *	   network.
1148  *
1149  * XMAC Vpath TX Statistics.
1150  */
1151 #pragma pack(1)
1152 typedef struct vxge_hal_xmac_vpath_tx_stats_t {
1153 	u64	tx_ttl_eth_frms;
1154 	u64	tx_ttl_eth_octets;
1155 	u64	tx_data_octets;
1156 	u64	tx_mcast_frms;
1157 	u64	tx_bcast_frms;
1158 	u64	tx_ucast_frms;
1159 	u64	tx_tagged_frms;
1160 	u64	tx_vld_ip;
1161 	u64	tx_vld_ip_octets;
1162 	u64	tx_icmp;
1163 	u64	tx_tcp;
1164 	u64	tx_rst_tcp;
1165 	u64	tx_udp;
1166 	u32	tx_unknown_protocol;
1167 	u32	tx_lost_ip;
1168 	u32	unused1;
1169 	u32	tx_parse_error;
1170 	u64	tx_tcp_offload;
1171 	u64	tx_retx_tcp_offload;
1172 	u64	tx_lost_ip_offload;
1173 } vxge_hal_xmac_vpath_tx_stats_t;
1174 
1175 #pragma pack()
1176 
1177 /*
1178  * struct vxge_hal_xmac_vpath_rx_stats_t - XMAC Vpath RX Statistics
1179  *
1180  * @rx_ttl_eth_frms: Count of successfully received MAC frames.
1181  * @rx_vld_frms: Count of successfully received MAC frames. Does not include
1182  *	   frames received with frame-too-long, FCS, or length errors.
1183  * @rx_offload_frms: Count of offloaded received frames that are passed to
1184  *	   the host.
1185  * @rx_ttl_eth_octets: Count of total octets of received frames, not including
1186  *	   framing characters (i.e. less framing bits). Only counts octets
1187  *	   of frames that are at least 14 bytes (18 bytes for VLAN-tagged)
1188  *	   before FCS. To determine the total octets of received frames,
1189  *	   including framing characters, multiply RX_TTL_ETH_FRMS by 8 and
1190  *	   add it to this stat (the stat RX_TTL_ETH_FRMS only counts frames
1191  *	   that have the required 8 bytes of preamble).
1192  * @rx_data_octets: Count of data and padding octets of successfully received
1193  *	   frames. Does not include frames received with frame-too-long,
1194  *	   FCS, or length errors.
1195  * @rx_offload_octets: Count of total octets, not including framing characters,
1196  *	   of offloaded received frames that are passed to the host.
1197  * @rx_vld_mcast_frms: Count of successfully received MAC frames containing a
1198  *	   nonbroadcast group address. Does not include frames received with
1199  *	   frame-too-long, FCS, or length errors.
1200  * @rx_vld_bcast_frms: Count of successfully received MAC frames containing the
1201  *	   broadcast group address. Does not include frames received with
1202  *	   frame-too-long, FCS, or length errors.
1203  * @rx_accepted_ucast_frms: Count of successfully received frames containing
1204  *	   a unicast address. Only includes frames that are passed to the
1205  *	   system.
1206  * @rx_accepted_nucast_frms: Count of successfully received frames containing
1207  *	   a non-unicast (broadcast or multicast) address. Only includes
1208  *	   frames that are passed to the system. Could include, for instance,
1209  *	   non-unicast frames that contain FCS errors if the MAC_ERROR_CFG
1210  *	   register is set to pass FCS-errored frames to the host.
1211  * @rx_tagged_frms: Count of received frames containing a VLAN tag.
1212  * @rx_long_frms: Count of received frames that are longer than RX_MAX_PYLD_LEN
1213  *	   + 18 bytes (+ 22 bytes if VLAN-tagged).
1214  * @rx_usized_frms: Count of received frames of length (including FCS, but not
1215  *	   framing bits) less than 64 octets, that are otherwise well-formed.
1216  *	   In other words, counts runts.
1217  * @rx_osized_frms: Count of received frames of length (including FCS, but not
1218  *	   framing bits) more than 1518 octets, that are otherwise
1219  *	   well-formed.
1220  * @rx_frag_frms: Count of received frames of length (including FCS, but not
1221  *	   framing bits) less than 64 octets that had bad FCS. In other words,
1222  *	   counts fragments.
1223  * @rx_jabber_frms: Count of received frames of length (including FCS, but not
1224  *	   framing bits) more than 1518 octets that had bad FCS. In other
1225  *	   words, counts jabbers.
1226  * @rx_ttl_64_frms: Count of total received MAC frames with length (including
1227  *	   FCS, but not framing bits) of exactly 64 octets. Includes frames
1228  *	   received with frame-too-long, FCS, or length errors.
1229  * @rx_ttl_65_127_frms: Count of total received MAC frames with length(including
1230  *	   FCS, but not framing bits) of between 65 and 127 octets inclusive.
1231  *	   Includes frames received with frame-too-long, FCS, or length errors.
1232  * @rx_ttl_128_255_frms: Count of total received MAC frames with length
1233  *	   (including FCS, but not framing bits) of between 128 and 255 octets
1234  *	   inclusive. Includes frames received with frame-too-long, FCS,
1235  *	   or length errors.
1236  * @rx_ttl_256_511_frms: Count of total received MAC frames with length
1237  *	   (including FCS, but not framing bits) of between 256 and 511 octets
1238  *	   inclusive. Includes frames received with frame-too-long, FCS, or
1239  *	   length errors.
1240  * @rx_ttl_512_1023_frms: Count of total received MAC frames with length
1241  *	   (including FCS, but not framing bits) of between 512 and 1023
1242  *	   octets inclusive. Includes frames received with frame-too-long,
1243  *	   FCS, or length errors.
1244  * @rx_ttl_1024_1518_frms: Count of total received MAC frames with length
1245  *	   (including FCS, but not framing bits) of between 1024 and 1518
1246  *	   octets inclusive. Includes frames received with frame-too-long,
1247  *	   FCS, or length errors.
1248  * @rx_ttl_1519_4095_frms: Count of total received MAC frames with length
1249  *	   (including FCS, but not framing bits) of between 1519 and 4095
1250  *	   octets inclusive. Includes frames received with frame-too-long,
1251  *	   FCS, or length errors.
1252  * @rx_ttl_4096_8191_frms: Count of total received MAC frames with length
1253  *	   (including FCS, but not framing bits) of between 4096 and 8191
1254  *	   octets inclusive. Includes frames received with frame-too-long,
1255  *	   FCS, or length errors.
1256  * @rx_ttl_8192_max_frms: Count of total received MAC frames with length
1257  *	   (including FCS, but not framing bits) of between 8192 and
1258  *	   RX_MAX_PYLD_LEN+18 octets inclusive. Includes frames received
1259  *	   with frame-too-long, FCS, or length errors.
1260  * @rx_ttl_gt_max_frms: Count of total received MAC frames with length
1261  *	   (including FCS, but not framing bits) exceeding RX_MAX_PYLD_LEN+18
1262  *	   (+22 bytes if VLAN-tagged) octets inclusive. Includes frames
1263  *	   received with frame-too-long, FCS, or length errors.
1264  * @rx_ip: Count of received IP datagrams. Includes errored IP datagrams.
1265  * @rx_accepted_ip: Count of received IP datagrams that are passed to the system
1266  * @rx_ip_octets: Count of number of octets in received IP datagrams.
1267  *	   Includes errored IP datagrams.
1268  * @rx_err_ip: Count of received IP datagrams containing errors. For example,
1269  *	   bad IP checksum.
1270  * @rx_icmp: Count of received ICMP messages. Includes errored ICMP messages.
1271  * @rx_tcp: Count of received TCP segments. Includes errored TCP segments.
1272  *		Note: This stat contains a count of all received TCP segments,
1273  *		regardless of whether or not they pertain to an established
1274  *		connection.
1275  * @rx_udp: Count of received UDP datagrams.
1276  * @rx_err_tcp: Count of received TCP segments containing errors. For example,
1277  *		bad TCP checksum.
1278  * @rx_lost_frms: Count of received frames that could not be passed to the host.
1279  *		See RX_QUEUE_FULL_DISCARD and RX_RED_DISCARD for list of reasons
1280  * @rx_lost_ip: Count of received IP datagrams that could not be passed to
1281  *		the host. See RX_LOST_FRMS for a list of reasons.
1282  * @rx_lost_ip_offload: For frames belonging to offloaded sessions only, a count
1283  *		of received IP datagrams that could not be passed to the host.
1284  *		See RX_LOST_FRMS for a list of reasons.
1285  * @rx_various_discard: Count of received frames that are discarded because
1286  *		the target receive queue is full.
1287  * @rx_sleep_discard: Count of received frames that are discarded because the
1288  *	   target VPATH is asleep (a Wake-on-LAN magic packet can be used
1289  *	   to awaken the VPATH).
1290  * @rx_red_discard: Count of received frames that are discarded because of RED
1291  *	   (Random Early Discard).
1292  * @rx_queue_full_discard: Count of received frames that are discarded because
1293  *		the target receive queue is full.
1294  * @rx_mpa_ok_frms: Count of received frames that pass the MPA checks.
1295  *
1296  * XMAC Vpath RX Statistics.
1297  */
1298 #pragma pack(1)
1299 typedef struct vxge_hal_xmac_vpath_rx_stats_t {
1300 	u64	rx_ttl_eth_frms;
1301 	u64	rx_vld_frms;
1302 	u64	rx_offload_frms;
1303 	u64	rx_ttl_eth_octets;
1304 	u64	rx_data_octets;
1305 	u64	rx_offload_octets;
1306 	u64	rx_vld_mcast_frms;
1307 	u64	rx_vld_bcast_frms;
1308 	u64	rx_accepted_ucast_frms;
1309 	u64	rx_accepted_nucast_frms;
1310 	u64	rx_tagged_frms;
1311 	u64	rx_long_frms;
1312 	u64	rx_usized_frms;
1313 	u64	rx_osized_frms;
1314 	u64	rx_frag_frms;
1315 	u64	rx_jabber_frms;
1316 	u64	rx_ttl_64_frms;
1317 	u64	rx_ttl_65_127_frms;
1318 	u64	rx_ttl_128_255_frms;
1319 	u64	rx_ttl_256_511_frms;
1320 	u64	rx_ttl_512_1023_frms;
1321 	u64	rx_ttl_1024_1518_frms;
1322 	u64	rx_ttl_1519_4095_frms;
1323 	u64	rx_ttl_4096_8191_frms;
1324 	u64	rx_ttl_8192_max_frms;
1325 	u64	rx_ttl_gt_max_frms;
1326 	u64	rx_ip;
1327 	u64	rx_accepted_ip;
1328 	u64	rx_ip_octets;
1329 	u64	rx_err_ip;
1330 	u64	rx_icmp;
1331 	u64	rx_tcp;
1332 	u64	rx_udp;
1333 	u64	rx_err_tcp;
1334 	u64	rx_lost_frms;
1335 	u64	rx_lost_ip;
1336 	u64	rx_lost_ip_offload;
1337 	u16	rx_various_discard;
1338 	u16	rx_sleep_discard;
1339 	u16	rx_red_discard;
1340 	u16	rx_queue_full_discard;
1341 	u64	rx_mpa_ok_frms;
1342 } vxge_hal_xmac_vpath_rx_stats_t;
1343 
1344 #pragma pack()
1345 
1346 /*
1347  * struct vxge_hal_device_xmac_stats_t - XMAC Statistics
1348  *
1349  * @vpath_tx_stats: Per vpath XMAC TX stats
1350  * @vpath_rx_stats: Per vpath XMAC RX stats
1351  *
1352  * XMAC Statistics.
1353  */
1354 typedef struct vxge_hal_device_xmac_stats_t {
1355 	vxge_hal_xmac_vpath_tx_stats_t vpath_tx_stats[VXGE_HAL_MAX_VIRTUAL_PATHS];
1356 	vxge_hal_xmac_vpath_rx_stats_t vpath_rx_stats[VXGE_HAL_MAX_VIRTUAL_PATHS];
1357 } vxge_hal_device_xmac_stats_t;
1358 
1359 /*
1360  * struct vxge_hal_vpath_stats_hw_info_t - X3100 vpath hardware statistics.
1361  * @ini_num_mwr_sent: The number of PCI memory writes initiated by the PIC block
1362  *		for the given VPATH
1363  * @unused1: Reserved
1364  * @ini_num_mrd_sent: The number of PCI memory reads initiated by the PIC block
1365  * @unused2: Reserved
1366  * @ini_num_cpl_rcvd: The number of PCI read completions received by the
1367  *		PIC block
1368  * @unused3: Reserved
1369  * @ini_num_mwr_byte_sent: The number of PCI memory write bytes sent by the PIC
1370  *		block to the host
1371  * @ini_num_cpl_byte_rcvd: The number of PCI read completion bytes received by
1372  *		the PIC block
1373  * @wrcrdtarb_xoff: TBD
1374  * @unused4: Reserved
1375  * @rdcrdtarb_xoff: TBD
1376  * @unused5: Reserved
1377  * @vpath_genstats_count0: Configurable statistic #1. Refer to the GENSTATS0_CFG
1378  *		for information on configuring this statistic
1379  * @vpath_genstats_count1: Configurable statistic #2. Refer to the GENSTATS1_CFG
1380  *		for information on configuring this statistic
1381  * @vpath_genstats_count2: Configurable statistic #3. Refer to the GENSTATS2_CFG
1382  *		for information on configuring this statistic
1383  * @vpath_genstats_count3: Configurable statistic #4. Refer to the GENSTATS3_CFG
1384  *		for information on configuring this statistic
1385  * @vpath_genstats_count4: Configurable statistic #5. Refer to the GENSTATS4_CFG
1386  *		for information on configuring this statistic
1387  * @unused6: Reserved
1388  * @vpath_gennstats_count5: Configurable statistic #6. Refer to the
1389  *		GENSTATS5_CFG for information on configuring this statistic
1390  * @unused7: Reserved
1391  * @tx_stats: Transmit stats
1392  * @rx_stats: Receive stats
1393  * @unused9: Reserved
1394  * @prog_event_vnum1: Programmable statistic. Increments when internal logic
1395  *		detects a certain event. See register
1396  *		XMAC_STATS_CFG.EVENT_VNUM1_CFG for more information.
1397  * @prog_event_vnum0: Programmable statistic. Increments when internal logic
1398  *		detects a certain event. See register
1399  *		XMAC_STATS_CFG.EVENT_VNUM0_CFG for more information.
1400  * @prog_event_vnum3: Programmable statistic. Increments when internal logic
1401  *		detects a certain event. See register
1402  *		XMAC_STATS_CFG.EVENT_VNUM3_CFG for more information.
1403  * @prog_event_vnum2: Programmable statistic. Increments when internal logic
1404  *		detects a certain event. See register
1405  *		XMAC_STATS_CFG.EVENT_VNUM2_CFG for more information.
1406  * @rx_multi_cast_frame_discard: TBD
1407  * @unused10: Reserved
1408  * @rx_frm_transferred: TBD
1409  * @unused11: Reserved
1410  * @rxd_returned: TBD
1411  * @unused12: Reserved
1412  * @rx_mpa_len_fail_frms: Count of received frames failed the MPA length check
1413  * @rx_mpa_mrk_fail_frms: Count of received frames failed the MPA marker check
1414  * @rx_mpa_crc_fail_frms: Count of received frames failed the MPA CRC check
1415  * @rx_permitted_frms: Count of frames that pass through the FAU and on to the
1416  *		frame buffer (and subsequently to the host).
1417  * @rx_vp_reset_discarded_frms: Count of receive frames that are discarded
1418  *		because the VPATH is in reset
1419  * @rx_wol_frms: Count of received "magic packet" frames. Stat increments
1420  *		whenever the received frame matches the VPATH's Wake-on-LAN
1421  *		signature(s) CRC.
1422  * @tx_vp_reset_discarded_frms: Count of transmit frames that are discarded
1423  *		because the VPATH is in reset.Includes frames that are discarded
1424  *		because the current VPIN does not match that VPIN of the frame
1425  *
1426  * X3100 vpath hardware statistics.
1427  */
1428 #pragma pack(1)
1429 typedef struct vxge_hal_vpath_stats_hw_info_t {
1430 /* 0x000 */	u32 ini_num_mwr_sent;
1431 /* 0x004 */	u32 unused1;
1432 /* 0x008 */	u32 ini_num_mrd_sent;
1433 /* 0x00c */	u32 unused2;
1434 /* 0x010 */	u32 ini_num_cpl_rcvd;
1435 /* 0x014 */	u32 unused3;
1436 /* 0x018 */	u64 ini_num_mwr_byte_sent;
1437 /* 0x020 */	u64 ini_num_cpl_byte_rcvd;
1438 /* 0x028 */	u32 wrcrdtarb_xoff;
1439 /* 0x02c */	u32 unused4;
1440 /* 0x030 */	u32 rdcrdtarb_xoff;
1441 /* 0x034 */	u32 unused5;
1442 /* 0x038 */	u32 vpath_genstats_count0;
1443 /* 0x03c */	u32 vpath_genstats_count1;
1444 /* 0x040 */	u32 vpath_genstats_count2;
1445 /* 0x044 */	u32 vpath_genstats_count3;
1446 /* 0x048 */	u32 vpath_genstats_count4;
1447 /* 0x04c */	u32 unused6;
1448 /* 0x050 */	u32 vpath_genstats_count5;
1449 /* 0x054 */	u32 unused7;
1450 /* 0x058 */	vxge_hal_xmac_vpath_tx_stats_t tx_stats;
1451 /* 0x0e8 */	vxge_hal_xmac_vpath_rx_stats_t rx_stats;
1452 /* 0x220 */	u64 unused9;
1453 /* 0x228 */	u32 prog_event_vnum1;
1454 /* 0x22c */	u32 prog_event_vnum0;
1455 /* 0x230 */	u32 prog_event_vnum3;
1456 /* 0x234 */	u32 prog_event_vnum2;
1457 /* 0x238 */	u16 rx_multi_cast_frame_discard;
1458 /* 0x23a */	u8 unused10[6];
1459 /* 0x240 */	u32 rx_frm_transferred;
1460 /* 0x244 */	u32 unused11;
1461 /* 0x248 */	u16 rxd_returned;
1462 /* 0x24a */	u8 unused12[6];
1463 /* 0x252 */	u16 rx_mpa_len_fail_frms;
1464 /* 0x254 */	u16 rx_mpa_mrk_fail_frms;
1465 /* 0x256 */	u16 rx_mpa_crc_fail_frms;
1466 /* 0x258 */	u16 rx_permitted_frms;
1467 /* 0x25c */	u64 rx_vp_reset_discarded_frms;
1468 /* 0x25e */	u64 rx_wol_frms;
1469 /* 0x260 */	u64 tx_vp_reset_discarded_frms;
1470 } vxge_hal_vpath_stats_hw_info_t;
1471 
1472 #pragma pack()
1473 
1474 /*
1475  * struct vxge_hal_device_stats_mrpcim_info_t - X3100 mrpcim hardware
1476  *					    statistics.
1477  * @pic_ini_rd_drop: Number of DMA reads initiated by the adapter that were
1478  *		discarded because the VPATH is out of service
1479  * @pic_ini_wr_drop: Number of DMA writes initiated by the adapter that were
1480  *		discared because the VPATH is out of service
1481  * @pic_wrcrdtarb_ph_crdt_depleted: Number of times the posted header credits
1482  *		for upstream PCI writes were depleted
1483  * @unused1: Reserved
1484  * @pic_wrcrdtarb_ph_crdt_depleted_vplane: Array of structures containing above
1485  *		two fields.
1486  * @pic_wrcrdtarb_pd_crdt_depleted: Number of times the posted data credits for
1487  *		upstream PCI writes were depleted
1488  * @unused2: Reserved
1489  * @pic_wrcrdtarb_pd_crdt_depleted_vplane: Array of structures containing above
1490  *		two fields.
1491  * @pic_rdcrdtarb_nph_crdt_depleted: Number of times the non-posted header
1492  *		credits for upstream PCI reads were depleted
1493  * @unused3: Reserved
1494  * @pic_rdcrdtarb_nph_crdt_depleted_vplane: Array of structures containing above
1495  *		two fields.
1496  * @pic_ini_rd_vpin_drop: Number of DMA reads initiated by the adapter that were
1497  *		discarded because the VPATH instance number does not match
1498  * @pic_ini_wr_vpin_drop: Number of DMA writes initiated by the adapter that
1499  *		were discarded because the VPATH instance number does not match
1500  * @pic_genstats_count0: Configurable statistic #1. Refer to the GENSTATS0_CFG
1501  *		for information on configuring this statistic
1502  * @pic_genstats_count1: Configurable statistic #2. Refer to the GENSTATS1_CFG
1503  *		for information on configuring this statistic
1504  * @pic_genstats_count2: Configurable statistic #3. Refer to the GENSTATS2_CFG
1505  *		for information on configuring this statistic
1506  * @pic_genstats_count3: Configurable statistic #4. Refer to the GENSTATS3_CFG
1507  *		for information on configuring this statistic
1508  * @pic_genstats_count4: Configurable statistic #5. Refer to the GENSTATS4_CFG
1509  *		for information on configuring this statistic
1510  * @unused4: Reserved
1511  * @pic_genstats_count5: Configurable statistic #6. Refer to the GENSTATS5_CFG
1512  *		for information on configuring this statistic
1513  * @unused5: Reserved
1514  * @pci_rstdrop_cpl: TBD
1515  * @pci_rstdrop_msg: TBD
1516  * @pci_rstdrop_client1: TBD
1517  * @pci_rstdrop_client0: TBD
1518  * @pci_rstdrop_client2: TBD
1519  * @unused6: Reserved
1520  * @unused7: Reserved
1521  * @pci_depl_cplh: Number of times completion header credits were depleted
1522  * @pci_depl_nph: Number of times non posted header credits were depleted
1523  * @pci_depl_ph: Number of times the posted header credits were depleted
1524  * @pci_depl_h_vplane: Array of structures containing above four fields.
1525  * @unused8: Reserved
1526  * @pci_depl_cpld: Number of times completion data credits were depleted
1527  * @pci_depl_npd: Number of times non posted data credits were depleted
1528  * @pci_depl_pd: Number of times the posted data credits were depleted
1529  * @pci_depl_d_vplane: Array of structures containing above four fields.
1530  * @xgmac_port: Array of xmac port stats
1531  * @xgmac_aggr: Array of aggr port stats
1532  * @xgmac_global_prog_event_gnum0: Programmable statistic. Increments when
1533  *		internal logic detects a certain event. See register
1534  *		XMAC_STATS_GLOBAL_CFG.EVENT_GNUM0_CFG for more information.
1535  * @xgmac_global_prog_event_gnum1: Programmable statistic. Increments when
1536  *		internal logic detects a certain event. See register
1537  *		XMAC_STATS_GLOBAL_CFG.EVENT_GNUM1_CFG for more information.
1538  * @unused9: Reserved
1539  * @xgmac.orp_lro_events: TBD
1540  * @xgmac.orp_bs_events: TBD
1541  * @xgmac.orp_iwarp_events: TBD
1542  * @unused10: Reserved
1543  * @xgmac.tx_permitted_frms: TBD
1544  * @unused11: Reserved
1545  * @unused12: Reserved
1546  * @xgmac.port2_tx_any_frms: TBD
1547  * @xgmac.port1_tx_any_frms: TBD
1548  * @xgmac.port0_tx_any_frms: TBD
1549  * @unused13: Reserved
1550  * @unused14: Reserved
1551  * @xgmac.port2_rx_any_frms: TBD
1552  * @xgmac.port1_rx_any_frms: TBD
1553  * @xgmac.port0_rx_any_frms: TBD
1554  *
1555  * X3100 mrpcim hardware statistics.
1556  */
1557 #pragma pack(1)
1558 typedef struct vxge_hal_mrpcim_stats_hw_info_t {
1559 /* 0x0000 */	u32	pic_ini_rd_drop;
1560 /* 0x0004 */	u32	pic_ini_wr_drop;
1561 /* 0x0008 */	struct {
1562 	/* 0x0000 */	u32	pic_wrcrdtarb_ph_crdt_depleted;
1563 	/* 0x0004 */	u32	unused1;
1564 		} pic_wrcrdtarb_ph_crdt_depleted_vplane[17];
1565 /* 0x0090 */	struct {
1566 	/* 0x0000 */	u32	pic_wrcrdtarb_pd_crdt_depleted;
1567 	/* 0x0004 */	u32	unused2;
1568 		} pic_wrcrdtarb_pd_crdt_depleted_vplane[17];
1569 /* 0x0118 */	struct {
1570 	/* 0x0000 */	u32	pic_rdcrdtarb_nph_crdt_depleted;
1571 	/* 0x0004 */	u32	unused3;
1572 		} pic_rdcrdtarb_nph_crdt_depleted_vplane[17];
1573 /* 0x01a0 */	u32	pic_ini_rd_vpin_drop;
1574 /* 0x01a4 */	u32	pic_ini_wr_vpin_drop;
1575 /* 0x01a8 */	u32	pic_genstats_count0;
1576 /* 0x01ac */	u32	pic_genstats_count1;
1577 /* 0x01b0 */	u32	pic_genstats_count2;
1578 /* 0x01b4 */	u32	pic_genstats_count3;
1579 /* 0x01b8 */	u32	pic_genstats_count4;
1580 /* 0x01bc */	u32	unused4;
1581 /* 0x01c0 */	u32	pic_genstats_count5;
1582 /* 0x01c4 */	u32	unused5;
1583 /* 0x01c8 */	u32	pci_rstdrop_cpl;
1584 /* 0x01cc */	u32	pci_rstdrop_msg;
1585 /* 0x01d0 */	u32	pci_rstdrop_client1;
1586 /* 0x01d4 */	u32	pci_rstdrop_client0;
1587 /* 0x01d8 */	u32	pci_rstdrop_client2;
1588 /* 0x01dc */	u32	unused6;
1589 /* 0x01e0 */	struct {
1590 	/* 0x0000 */	u16	unused7;
1591 	/* 0x0002 */	u16	pci_depl_cplh;
1592 	/* 0x0004 */	u16	pci_depl_nph;
1593 	/* 0x0006 */	u16	pci_depl_ph;
1594 		} pci_depl_h_vplane[17];
1595 /* 0x0268 */	struct {
1596 	/* 0x0000 */	u16	unused8;
1597 	/* 0x0002 */	u16	pci_depl_cpld;
1598 	/* 0x0004 */	u16	pci_depl_npd;
1599 	/* 0x0006 */	u16	pci_depl_pd;
1600 		} pci_depl_d_vplane[17];
1601 /* 0x02f0 */	vxge_hal_xmac_port_stats_t xgmac_port[3];
1602 /* 0x0a10 */	vxge_hal_xmac_aggr_stats_t xgmac_aggr[2];
1603 /* 0x0ae0 */	u64	xgmac_global_prog_event_gnum0;
1604 /* 0x0ae8 */	u64	xgmac_global_prog_event_gnum1;
1605 /* 0x0af0 */	u64	unused9;
1606 /* 0x0af8 */	u64	xgmac_orp_lro_events;
1607 /* 0x0b00 */	u64	xgmac_orp_bs_events;
1608 /* 0x0b08 */	u64	xgmac_orp_iwarp_events;
1609 /* 0x0b10 */	u32	unused10;
1610 /* 0x0b14 */	u32	xgmac_tx_permitted_frms;
1611 /* 0x0b18 */	u32	unused11;
1612 /* 0x0b1c */	u8	unused12;
1613 /* 0x0b1d */	u8	xgmac_port2_tx_any_frms;
1614 /* 0x0b1e */	u8	xgmac_port1_tx_any_frms;
1615 /* 0x0b1f */	u8	xgmac_port0_tx_any_frms;
1616 /* 0x0b20 */	u32	unused13;
1617 /* 0x0b24 */	u8	unused14;
1618 /* 0x0b25 */	u8	xgmac_port2_rx_any_frms;
1619 /* 0x0b26 */	u8	xgmac_port1_rx_any_frms;
1620 /* 0x0b27 */	u8	xgmac_port0_rx_any_frms;
1621 } vxge_hal_mrpcim_stats_hw_info_t;
1622 
1623 #pragma pack()
1624 
1625 /*
1626  * struct vxge_hal_mrpcim_xpak_stats_t - HAL xpak stats
1627  * @excess_temp: excess transceiver_temperature count
1628  * @excess_bias_current: excess laser_bias_current count
1629  * @excess_laser_output: excess laser_output_power count
1630  * @alarm_transceiver_temp_high: alarm_transceiver_temp_high count value
1631  * @alarm_transceiver_temp_low : alarm_transceiver_temp_low count value
1632  * @alarm_laser_bias_current_high: alarm_laser_bias_current_high count value
1633  * @alarm_laser_bias_current_low: alarm_laser_bias_current_low count value
1634  * @alarm_laser_output_power_high: alarm_laser_output_power_high count value
1635  * @alarm_laser_output_power_low: alarm_laser_output_power_low count value
1636  * @warn_transceiver_temp_high: warn_transceiver_temp_high count value
1637  * @warn_transceiver_temp_low: warn_transceiver_temp_low count value
1638  * @warn_laser_bias_current_high: warn_laser_bias_current_high count value
1639  * @warn_laser_bias_current_low: warn_laser_bias_current_low count value
1640  * @warn_laser_output_power_high: warn_laser_output_power_high count value
1641  * @warn_laser_output_power_low: warn_laser_output_power_low count value
1642  */
1643 typedef struct vxge_hal_mrpcim_xpak_stats_t {
1644 	u32	 excess_temp;
1645 	u32	 excess_bias_current;
1646 	u32	 excess_laser_output;
1647 	u16	 alarm_transceiver_temp_high;
1648 	u16	 alarm_transceiver_temp_low;
1649 	u16	 alarm_laser_bias_current_high;
1650 	u16	 alarm_laser_bias_current_low;
1651 	u16	 alarm_laser_output_power_high;
1652 	u16	 alarm_laser_output_power_low;
1653 	u16	 warn_transceiver_temp_high;
1654 	u16	 warn_transceiver_temp_low;
1655 	u16	 warn_laser_bias_current_high;
1656 	u16	 warn_laser_bias_current_low;
1657 	u16	 warn_laser_output_power_high;
1658 	u16	 warn_laser_output_power_low;
1659 } vxge_hal_mrpcim_xpak_stats_t;
1660 
1661 /*
1662  * struct vxge_hal_device_stats_hw_info_t - X3100 hardware statistics.
1663  * @vpath_info: VPath statistics
1664  * @vpath_info_sav: Vpath statistics saved
1665  *
1666  * X3100 hardware statistics.
1667  */
1668 typedef struct vxge_hal_device_stats_hw_info_t {
1669 	vxge_hal_vpath_stats_hw_info_t *vpath_info[VXGE_HAL_MAX_VIRTUAL_PATHS];
1670 	vxge_hal_vpath_stats_hw_info_t vpath_info_sav[VXGE_HAL_MAX_VIRTUAL_PATHS];
1671 } vxge_hal_device_stats_hw_info_t;
1672 
1673 /*
1674  * struct vxge_hal_vpath_stats_sw_common_info_t - HAL common stats for queues.
1675  * @full_cnt: Number of times the queue was full
1676  * @usage_cnt: usage count.
1677  * @usage_max: Maximum usage
1678  * @avg_compl_per_intr_cnt: Average number of completions per interrupt.
1679  *	   Note that a total number of completed descriptors
1680  *	   for the given channel can be calculated as
1681  *	   (@traffic_intr_cnt * @avg_compl_per_intr_cnt).
1682  * @total_compl_cnt: Total completion count.
1683  *	    @total_compl_cnt == (@traffic_intr_cnt * @avg_compl_per_intr_cnt).
1684  *
1685  * HAL common counters for queues
1686  * See also: vxge_hal_vpath_stats_sw_fifo_info_t {},
1687  *	  vxge_hal_vpath_stats_sw_ring_info_t {},
1688  *	  vxge_hal_vpath_stats_sw_dmq_info_t {},
1689  *	  vxge_hal_vpath_stats_sw_umq_info_t {},
1690  *	  vxge_hal_vpath_stats_sw_srq_info_t {},
1691  *	  vxge_hal_vpath_stats_sw_cqrq_info_t {}.
1692  */
1693 typedef struct vxge_hal_vpath_stats_sw_common_info_t {
1694 	u32	full_cnt;
1695 	u32	usage_cnt;
1696 	u32	usage_max;
1697 	u32	avg_compl_per_intr_cnt;
1698 	u32	total_compl_cnt;
1699 } vxge_hal_vpath_stats_sw_common_info_t;
1700 
1701 /*
1702  * struct vxge_hal_vpath_stats_sw_fifo_info_t - HAL fifo statistics
1703  * @common_stats: Common counters for all queues
1704  * @total_posts: Total number of postings on the queue.
1705  * @total_buffers: Total number of buffers posted.
1706  * @avg_buffers_per_post: Average number of buffers transferred in a single
1707  *	post operation. Calculated as @total_buffers/@total_posts.
1708  * @copied_buffers: Number of buffers copied
1709  * @avg_buffer_size: Average buffer size transferred by a single post
1710  *		operation. Calculated as a total number of transmitted octets
1711  *		divided by @total_buffers.
1712  * @avg_post_size: Average amount of data transferred by a single post.
1713  *		Calculated as a total number of transmitted octets divided by
1714  *		@total_posts.
1715  * @total_frags: Total number of fragments
1716  * @copied_frags: Number of fragments copied
1717  * @total_posts_dang_dtrs: Total number of posts involving dangling descriptors.
1718  * @total_posts_dang_frags: Total number of dangling fragments posted during
1719  *		 post request containing multiple descriptors.
1720  * @txd_t_code_err_cnt: Array of transmit transfer codes. The position
1721  * (index) in this array reflects the transfer code type, for instance
1722  * 0xA - "loss of link".
1723  * Value txd_t_code_err_cnt[i] reflects the
1724  * number of times the corresponding transfer code was encountered.
1725  *
1726  * HAL fifo counters
1727  * See also: vxge_hal_vpath_stats_sw_common_info_t {},
1728  *	     vxge_hal_vpath_stats_sw_ring_info_t {},
1729  *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
1730  *	     vxge_hal_vpath_stats_sw_umq_info_t {},
1731  *	     vxge_hal_vpath_stats_sw_sq_info_t {},
1732  *	     vxge_hal_vpath_stats_sw_srq_info_t {},
1733  *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
1734  */
1735 typedef struct vxge_hal_vpath_stats_sw_fifo_info_t {
1736 	vxge_hal_vpath_stats_sw_common_info_t common_stats;
1737 	u32	total_posts;
1738 	u32	total_buffers;
1739 	u32	avg_buffers_per_post;
1740 	u32	copied_buffers;
1741 	u32	avg_buffer_size;
1742 	u32	avg_post_size;
1743 	u32	total_frags;
1744 	u32	copied_frags;
1745 	u32	total_posts_dang_dtrs;
1746 	u32	total_posts_dang_frags;
1747 	u32	txd_t_code_err_cnt[16];
1748 } vxge_hal_vpath_stats_sw_fifo_info_t;
1749 
1750 /*
1751  * struct vxge_hal_vpath_stats_sw_ring_info_t - HAL ring statistics
1752  * @common_stats: Common counters for all queues
1753  * @rxd_t_code_err_cnt: Array of receive transfer codes. The position
1754  *		(index) in this array reflects the transfer code type,
1755  *		for instance
1756  *		0x7 - for "invalid receive buffer size", or 0x8 - for ECC.
1757  *		Value rxd_t_code_err_cnt[i] reflects the
1758  *		number of times the corresponding transfer code was encountered.
1759  * @lro_clubbed_frms_cnt: Total no of Aggregated packets
1760  * @lro_sending_both: Number of times the aggregation of packets broken
1761  * @lro_outof_sequence_pkts: Number of out of order packets
1762  * @lro_flush_max_pkts: Number of times we reached upper packet limit for
1763  *		aggregation per session
1764  * @lro_sum_avg_pkts_aggregated: Total number of packets considered for
1765  *		aggregation
1766  * @lro_num_aggregations: Number of packets sent to the stack
1767  * @lro_max_pkts_aggr: Max number of aggr packet  per ring
1768  * @lro_avg_agr_pkts: Average Aggregate packet
1769  *
1770  * HAL ring counters
1771  * See also: vxge_hal_vpath_stats_sw_common_info_t {},
1772  *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
1773  *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
1774  *	     vxge_hal_vpath_stats_sw_umq_info_t {},
1775  *	     vxge_hal_vpath_stats_sw_sq_info_t {},
1776  *	     vxge_hal_vpath_stats_sw_srq_info_t {},
1777  *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
1778  */
1779 typedef struct vxge_hal_vpath_stats_sw_ring_info_t {
1780 	vxge_hal_vpath_stats_sw_common_info_t common_stats;
1781 	u32	rxd_t_code_err_cnt[16];
1782 } vxge_hal_vpath_stats_sw_ring_info_t;
1783 
1784 /*
1785  * struct vxge_hal_vpath_stats_sw_dmq_info_t - HAL dmq statistics
1786  * @common_stats: Common counters for all queues
1787  *
1788  * HAL dmq counters
1789  * See also: vxge_hal_vpath_stats_sw_common_info_t {},
1790  *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
1791  *	     vxge_hal_vpath_stats_sw_ring_info_t {},
1792  *	     vxge_hal_vpath_stats_sw_umq_info_t {},
1793  *	     vxge_hal_vpath_stats_sw_sq_info_t {},
1794  *	     vxge_hal_vpath_stats_sw_srq_info_t {},
1795  *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
1796  */
1797 typedef struct vxge_hal_vpath_stats_sw_dmq_info_t {
1798 	vxge_hal_vpath_stats_sw_common_info_t common_stats;
1799 } vxge_hal_vpath_stats_sw_dmq_info_t;
1800 
1801 /*
1802  * struct vxge_hal_vpath_stats_sw_umq_info_t - HAL umq statistics
1803  * @common_stats: Common counters for all queues
1804  *
1805  * HAL dmq counters
1806  * See also: vxge_hal_vpath_stats_sw_common_info_t {},
1807  *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
1808  *	     vxge_hal_vpath_stats_sw_ring_info_t {},
1809  *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
1810  *	     vxge_hal_vpath_stats_sw_sq_info_t {},
1811  *	     vxge_hal_vpath_stats_sw_srq_info_t {},
1812  *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
1813  */
1814 typedef struct vxge_hal_vpath_stats_sw_umq_info_t {
1815 	vxge_hal_vpath_stats_sw_common_info_t common_stats;
1816 } vxge_hal_vpath_stats_sw_umq_info_t;
1817 
1818 /*
1819  * struct vxge_hal_vpath_stats_sw_sq_info_t - HAL sq statistics
1820  * @common_stats: Common counters for all queues
1821  *
1822  * HAL srq counters
1823  * See also: vxge_hal_vpath_stats_sw_common_info_t {},
1824  *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
1825  *	     vxge_hal_vpath_stats_sw_ring_info_t {},
1826  *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
1827  *	     vxge_hal_vpath_stats_sw_umq_info_t {},
1828  *	     vxge_hal_vpath_stats_sw_srq_info_t {},
1829  *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
1830  */
1831 typedef struct vxge_hal_vpath_stats_sw_sq_info_t {
1832 	vxge_hal_vpath_stats_sw_common_info_t common_stats;
1833 } vxge_hal_vpath_stats_sw_sq_info_t;
1834 
1835 /*
1836  * struct vxge_hal_vpath_stats_sw_srq_info_t - HAL srq statistics
1837  * @common_stats: Common counters for all queues
1838  *
1839  * HAL srq counters
1840  * See also: vxge_hal_vpath_stats_sw_common_info_t {},
1841  *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
1842  *	     vxge_hal_vpath_stats_sw_ring_info_t {},
1843  *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
1844  *	     vxge_hal_vpath_stats_sw_umq_info_t {},
1845  *	     vxge_hal_vpath_stats_sw_sq_info_t {},
1846  *	     vxge_hal_vpath_stats_sw_cqrq_info_t {}.
1847  */
1848 typedef struct vxge_hal_vpath_stats_sw_srq_info_t {
1849 	vxge_hal_vpath_stats_sw_common_info_t common_stats;
1850 } vxge_hal_vpath_stats_sw_srq_info_t;
1851 
1852 /*
1853  * struct vxge_hal_vpath_stats_sw_cqrq_info_t - HAL cqrq statistics
1854  * @common_stats: Common counters for all queues
1855  *
1856  * HAL cqrq counters
1857  * See also: vxge_hal_vpath_stats_sw_common_info_t {},
1858  *	     vxge_hal_vpath_stats_sw_fifo_info_t {},
1859  *	     vxge_hal_vpath_stats_sw_ring_info_t {},
1860  *	     vxge_hal_vpath_stats_sw_dmq_info_t {},
1861  *	     vxge_hal_vpath_stats_sw_umq_info_t {},
1862  *	     vxge_hal_vpath_stats_sw_sq_info_t {},
1863  *	     vxge_hal_vpath_stats_sw_srq_info_t {}.
1864  */
1865 typedef struct vxge_hal_vpath_stats_sw_cqrq_info_t {
1866 	vxge_hal_vpath_stats_sw_common_info_t common_stats;
1867 } vxge_hal_vpath_stats_sw_cqrq_info_t;
1868 
1869 /*
1870  * struct vxge_hal_vpath_sw_obj_count_t - Usage count of obj ids in virtual path
1871  *
1872  * @no_nces: Number of NCEs on Adapter in this VP
1873  * @no_sqs: Number of SQs on Adapter in this VP
1874  * @no_srqs: Number of SRQs on Adapter in this VP
1875  * @no_cqrqs: Number of CQRQs on Adapter in this VP
1876  * @no_sessions: Number of sessions on Adapter in this VP
1877  *
1878  * This structure contains fields to keep the usage count of objects in
1879  * a virtual path
1880  */
1881 typedef struct vxge_hal_vpath_sw_obj_count_t {
1882 	u32	no_nces;
1883 	u32	no_sqs;
1884 	u32	no_srqs;
1885 	u32	no_cqrqs;
1886 	u32	no_sessions;
1887 } vxge_hal_vpath_sw_obj_count_t;
1888 
1889 /*
1890  * struct vxge_hal_vpath_stats_sw_err_t - HAL vpath error statistics
1891  * @unknown_alarms: Unknown Alarm count
1892  * @network_sustained_fault: Network sustained fault count
1893  * @network_sustained_ok: Network sustained ok count
1894  * @kdfcctl_fifo0_overwrite: Fifo 0 overwrite count
1895  * @kdfcctl_fifo0_poison: Fifo 0 poison count
1896  * @kdfcctl_fifo0_dma_error: Fifo 0 dma error count
1897  * @kdfcctl_fifo1_overwrite: Fifo 1 overwrite count
1898  * @kdfcctl_fifo1_poison: Fifo 1 poison count
1899  * @kdfcctl_fifo1_dma_error: Fifo 1 dma error count
1900  * @kdfcctl_fifo2_overwrite: Fifo 2 overwrite count
1901  * @kdfcctl_fifo2_poison: Fifo 2 overwrite count
1902  * @kdfcctl_fifo2_dma_error: Fifo 2 dma error count
1903  * @dblgen_fifo0_overflow: Dblgen Fifo 0 overflow count
1904  * @dblgen_fifo1_overflow: Dblgen Fifo 1 overflow count
1905  * @dblgen_fifo2_overflow: Dblgen Fifo 2 overflow count
1906  * @statsb_pif_chain_error: Statsb pif chain error count
1907  * @statsb_drop_timeout: Statsb drop timeout count
1908  * @target_illegal_access: Target illegal access count
1909  * @ini_serr_det: Serious error detected count
1910  * @pci_config_status_err: PCI config status error count
1911  * @pci_config_uncor_err: PCI config uncorrectable error count
1912  * @pci_config_cor_err: PCI config correctable error count
1913  * @mrpcim_to_vpath_alarms: MRPCIM to vpath alarm count
1914  * @srpcim_to_vpath_alarms: SRPCIM to vpath alarm count
1915  * @srpcim_msg_to_vpath: SRPCIM to vpath message count
1916  * @prc_ring_bumps: Ring controller ring bumps count
1917  * @prc_rxdcm_sc_err: Ring controller rxdsm sc error count
1918  * @prc_rxdcm_sc_abort: Ring controller rxdsm sc abort count
1919  * @prc_quanta_size_err: Ring controller quanta size count
1920  *
1921  * HAL vpath error statistics
1922  */
1923 typedef struct vxge_hal_vpath_stats_sw_err_t {
1924 	u32	unknown_alarms;
1925 	u32	network_sustained_fault;
1926 	u32	network_sustained_ok;
1927 	u32	kdfcctl_fifo0_overwrite;
1928 	u32	kdfcctl_fifo0_poison;
1929 	u32	kdfcctl_fifo0_dma_error;
1930 	u32	kdfcctl_fifo1_overwrite;
1931 	u32	kdfcctl_fifo1_poison;
1932 	u32	kdfcctl_fifo1_dma_error;
1933 	u32	kdfcctl_fifo2_overwrite;
1934 	u32	kdfcctl_fifo2_poison;
1935 	u32	kdfcctl_fifo2_dma_error;
1936 	u32	dblgen_fifo0_overflow;
1937 	u32	dblgen_fifo1_overflow;
1938 	u32	dblgen_fifo2_overflow;
1939 	u32	statsb_pif_chain_error;
1940 	u32	statsb_drop_timeout;
1941 	u32	target_illegal_access;
1942 	u32	ini_serr_det;
1943 	u32	pci_config_status_err;
1944 	u32	pci_config_uncor_err;
1945 	u32	pci_config_cor_err;
1946 	u32	mrpcim_to_vpath_alarms;
1947 	u32	srpcim_to_vpath_alarms;
1948 	u32	srpcim_msg_to_vpath;
1949 	u32	prc_ring_bumps;
1950 	u32	prc_rxdcm_sc_err;
1951 	u32	prc_rxdcm_sc_abort;
1952 	u32	prc_quanta_size_err;
1953 } vxge_hal_vpath_stats_sw_err_t;
1954 
1955 /*
1956  * struct vxge_hal_vpath_stats_sw_info_t - HAL vpath sw statistics
1957  * @soft_reset_cnt: Number of times soft reset is done on this vpath.
1958  * @obj_counts: Statistics for the VP
1959  * @error_stats: error counters for the vpath
1960  * @ring_stats: counters for ring belonging to the vpath
1961  * @fifo_stats: counters for fifo belonging to the vpath
1962  * @dmq_stats: counters for dmq belonging to the vpath
1963  * @umq_stats: counters for umq belonging to the vpath
1964  *
1965  * HAL vpath sw statistics
1966  * See also: vxge_hal_device_info_t {}}.
1967  */
1968 typedef struct vxge_hal_vpath_stats_sw_info_t {
1969 	u32					soft_reset_cnt;
1970 	vxge_hal_vpath_sw_obj_count_t		obj_counts;
1971 	vxge_hal_vpath_stats_sw_err_t		error_stats;
1972 	vxge_hal_vpath_stats_sw_ring_info_t	ring_stats;
1973 	vxge_hal_vpath_stats_sw_fifo_info_t	fifo_stats;
1974 	vxge_hal_vpath_stats_sw_dmq_info_t	dmq_stats;
1975 	vxge_hal_vpath_stats_sw_umq_info_t	umq_stats;
1976 } vxge_hal_vpath_stats_sw_info_t;
1977 
1978 /*
1979  * struct vxge_hal_device_stats_sw_info_t - HAL own per-device statistics.
1980  *
1981  * @soft_reset_cnt: Number of times soft reset is done on this device.
1982  * @vpath_info: please see vxge_hal_vpath_stats_sw_info_t {}
1983  * HAL per-device statistics.
1984  */
1985 typedef struct vxge_hal_device_stats_sw_info_t {
1986 	u32	soft_reset_cnt;
1987 	vxge_hal_vpath_stats_sw_info_t vpath_info[VXGE_HAL_MAX_VIRTUAL_PATHS];
1988 } vxge_hal_device_stats_sw_info_t;
1989 
1990 /*
1991  * struct vxge_hal_device_stats_sw_err_t - HAL device error statistics.
1992  * @mrpcim_alarms: Number of mrpcim alarms
1993  * @srpcim_alarms: Number of srpcim alarms
1994  * @vpath_alarms: Number of vpath alarms
1995  *
1996  * HAL Device error stats
1997  */
1998 typedef struct vxge_hal_device_stats_sw_err_t {
1999 	u32	mrpcim_alarms;
2000 	u32	srpcim_alarms;
2001 	u32	vpath_alarms;
2002 } vxge_hal_device_stats_sw_err_t;
2003 
2004 /*
2005  * struct vxge_hal_device_stats_t - Contains HAL per-device statistics,
2006  * including hw.
2007  * @devh: HAL device handle.
2008  *
2009  * @hw_dev_info_stats: X3100 statistics maintained by the hardware.
2010  * @sw_dev_err_stats: HAL's "soft" device error statistics.
2011  * @sw_dev_info_stats: HAL's "soft" device informational statistics, e.g. number
2012  *			of completions per interrupt.
2013  *
2014  * @is_enabled: True, if device stats collection is enabled.
2015  *
2016  * Structure-container of HAL per-device statistics. Note that per-channel
2017  * statistics are kept in separate structures under HAL's fifo and ring
2018  * channels.
2019  */
2020 typedef struct vxge_hal_device_stats_t {
2021 	/* handles */
2022 	vxge_hal_device_h		devh;
2023 
2024 	/* HAL device hardware statistics */
2025 	vxge_hal_device_stats_hw_info_t	hw_dev_info_stats;
2026 
2027 	/* HAL device "soft" stats */
2028 	vxge_hal_device_stats_sw_err_t  sw_dev_err_stats;
2029 	vxge_hal_device_stats_sw_info_t sw_dev_info_stats;
2030 
2031 	/* flags */
2032 	int				is_enabled;
2033 } vxge_hal_device_stats_t;
2034 
2035 /*
2036  * vxge_hal_vpath_hw_stats_enable - Enable vpath h/w statistics.
2037  * @vpath_handle: Virtual Path handle.
2038  *
2039  * Enable the DMA vpath statistics. The function is to be called to re-enable
2040  * the adapter to update stats into the host memory
2041  *
2042  * See also: vxge_hal_vpath_hw_stats_disable()
2043  */
2044 vxge_hal_status_e
2045 vxge_hal_vpath_hw_stats_enable(
2046     vxge_hal_vpath_h vpath_handle);
2047 
2048 /*
2049  * vxge_hal_vpath_hw_stats_disable - Disable vpath h/w statistics.
2050  * @vpath_handle: Virtual Path handle.
2051  *
2052  * Enable the DMA vpath statistics. The function is to be called to disable
2053  * the adapter to update stats into the host memory. This function is not
2054  * needed to be called, normally.
2055  *
2056  * See also: vxge_hal_vpath_hw_stats_enable()
2057  */
2058 vxge_hal_status_e
2059 vxge_hal_vpath_hw_stats_disable(
2060     vxge_hal_vpath_h vpath_handle);
2061 
2062 /*
2063  * vxge_hal_vpath_hw_stats_get - Get the vpath hw statistics.
2064  * @vpath_handle: Virtual Path handle.
2065  * @hw_stats: Hardware stats
2066  *
2067  * Returns the vpath h/w stats.
2068  *
2069  * See also: vxge_hal_vpath_hw_stats_enable(), vxge_hal_vpath_hw_stats_disable()
2070  */
2071 vxge_hal_status_e
2072 vxge_hal_vpath_hw_stats_get(
2073     vxge_hal_vpath_h vpath_handle,
2074     vxge_hal_vpath_stats_hw_info_t *hw_stats);
2075 
2076 /*
2077  * vxge_hal_vpath_sw_stats_get - Get the vpath sw statistics.
2078  * @vpath_handle: Virtual Path handle.
2079  * @sw_stats: Software stats
2080  *
2081  * Returns the vpath s/w stats.
2082  *
2083  * See also: vxge_hal_vpath_hw_stats_get()
2084  */
2085 vxge_hal_status_e
2086 vxge_hal_vpath_sw_stats_get(
2087     vxge_hal_vpath_h vpath_handle,
2088     vxge_hal_vpath_stats_sw_info_t *sw_stats);
2089 
2090 /*
2091  * vxge_hal_vpath_stats_access - Get the statistics from the given location
2092  *			  and offset and perform an operation
2093  * @vpath_handle: Virtual path handle.
2094  * @operation: Operation to be performed
2095  * @offset: Offset with in the location
2096  * @stat: Pointer to a buffer to return the value
2097  *
2098  * Get the statistics from the given location and offset.
2099  *
2100  */
2101 vxge_hal_status_e
2102 vxge_hal_vpath_stats_access(
2103     vxge_hal_vpath_h vpath_handle,
2104     u32 operation,
2105     u32 offset,
2106     u64 *stat);
2107 
2108 /*
2109  * vxge_hal_vpath_xmac_tx_stats_get - Get the TX Statistics of a vpath
2110  * @virtual_path: vpath handle.
2111  * @vpath_tx_stats: Buffer to return TX Statistics of vpath.
2112  *
2113  * Get the TX Statistics of a vpath
2114  *
2115  */
2116 vxge_hal_status_e
2117 vxge_hal_vpath_xmac_tx_stats_get(vxge_hal_vpath_h virtual_path,
2118     vxge_hal_xmac_vpath_tx_stats_t *vpath_tx_stats);
2119 
2120 /*
2121  * vxge_hal_vpath_xmac_rx_stats_get - Get the RX Statistics of a vpath
2122  * @virtual_path: vpath handle.
2123  * @vpath_rx_stats: Buffer to return RX Statistics of vpath.
2124  *
2125  * Get the RX Statistics of a vpath
2126  *
2127  */
2128 vxge_hal_status_e
2129 vxge_hal_vpath_xmac_rx_stats_get(vxge_hal_vpath_h virtual_path,
2130     vxge_hal_xmac_vpath_rx_stats_t *vpath_rx_stats);
2131 
2132 /*
2133  * vxge_hal_vpath_stats_clear - Clear all the statistics of vpath
2134  * @vpath_handle: Virtual path handle.
2135  *
2136  * Clear the statistics of the given vpath.
2137  *
2138  */
2139 vxge_hal_status_e
2140 vxge_hal_vpath_stats_clear(
2141     vxge_hal_vpath_h vpath_handle);
2142 
2143 /*
2144  * vxge_hal_device_hw_stats_enable - Enable device h/w statistics.
2145  * @devh: HAL Device.
2146  *
2147  * Enable the DMA vpath statistics for the device. The function is to be called
2148  * to re-enable the adapter to update stats into the host memory
2149  *
2150  * See also: vxge_hal_device_hw_stats_disable()
2151  */
2152 vxge_hal_status_e
2153 vxge_hal_device_hw_stats_enable(
2154     vxge_hal_device_h devh);
2155 
2156 /*
2157  * vxge_hal_device_hw_stats_disable - Disable device h/w statistics.
2158  * @devh: HAL Device.
2159  *
2160  * Enable the DMA vpath statistics for the device. The function is to be called
2161  * to disable the adapter to update stats into the host memory. This function
2162  * is not needed to be called, normally.
2163  *
2164  * See also: vxge_hal_device_hw_stats_enable()
2165  */
2166 vxge_hal_status_e
2167 vxge_hal_device_hw_stats_disable(
2168     vxge_hal_device_h devh);
2169 
2170 /*
2171  * vxge_hal_device_hw_stats_get - Get the device hw statistics.
2172  * @devh: HAL Device.
2173  * @hw_stats: Hardware stats
2174  *
2175  * Returns the vpath h/w stats for the device.
2176  *
2177  * See also: vxge_hal_device_hw_stats_enable(),
2178  *	     vxge_hal_device_hw_stats_disable(),
2179  *	     vxge_hal_device_sw_stats_get(),
2180  *	     vxge_hal_device_stats_get()
2181  */
2182 vxge_hal_status_e
2183 vxge_hal_device_hw_stats_get(
2184     vxge_hal_device_h devh,
2185     vxge_hal_device_stats_hw_info_t *hw_stats);
2186 
2187 /*
2188  * vxge_hal_device_sw_stats_get - Get the device sw statistics.
2189  * @devh: HAL Device.
2190  * @sw_stats: Software stats
2191  *
2192  * Returns the device s/w stats for the device.
2193  *
2194  * See also: vxge_hal_device_hw_stats_get(), vxge_hal_device_stats_get()
2195  */
2196 vxge_hal_status_e
2197 vxge_hal_device_sw_stats_get(
2198     vxge_hal_device_h devh,
2199     vxge_hal_device_stats_sw_info_t *sw_stats);
2200 
2201 /*
2202  * vxge_hal_device_stats_get - Get the device statistics.
2203  * @devh: HAL Device.
2204  * @stats: Device stats
2205  *
2206  * Returns the device stats for the device.
2207  *
2208  * See also: vxge_hal_device_hw_stats_get(), vxge_hal_device_sw_stats_get()
2209  */
2210 vxge_hal_status_e
2211 vxge_hal_device_stats_get(
2212     vxge_hal_device_h devh,
2213     vxge_hal_device_stats_t *stats);
2214 
2215 /*
2216  * vxge_hal_device_xmac_stats_get - Get the XMAC Statistics
2217  * @devh: HAL device handle.
2218  * @xmac_stats: Buffer to return XMAC Statistics.
2219  *
2220  * Get the XMAC Statistics
2221  *
2222  */
2223 vxge_hal_status_e
2224 vxge_hal_device_xmac_stats_get(vxge_hal_device_h devh,
2225     vxge_hal_device_xmac_stats_t *xmac_stats);
2226 
2227 /*
2228  * vxge_hal_mrpcim_stats_enable - Enable mrpcim statistics.
2229  * @devh: HAL Device.
2230  *
2231  * Enable the DMA mrpcim statistics for the device. The function is to be called
2232  * to re-enable the adapter to update stats into the host memory
2233  *
2234  * See also: vxge_hal_mrpcim_stats_disable()
2235  */
2236 vxge_hal_status_e
2237 vxge_hal_mrpcim_stats_enable(
2238     vxge_hal_device_h devh);
2239 
2240 /*
2241  * vxge_hal_mrpcim_stats_disable - Disable mrpcim statistics.
2242  * @devh: HAL Device.
2243  *
2244  * Enable the DMA mrpcim statistics for the device. The function is to be called
2245  * to disable the adapter to update stats into the host memory. This function
2246  * is not needed to be called, normally.
2247  *
2248  * See also: vxge_hal_mrpcim_stats_enable()
2249  */
2250 vxge_hal_status_e
2251 vxge_hal_mrpcim_stats_disable(
2252     vxge_hal_device_h devh);
2253 
2254 /*
2255  * vxge_hal_mrpcim_stats_get - Get the mrpcim statistics.
2256  * @devh: HAL Device.
2257  * @stats: mrpcim stats
2258  *
2259  * Returns the device mrpcim stats for the device.
2260  *
2261  * See also: vxge_hal_device_stats_get()
2262  */
2263 vxge_hal_status_e
2264 vxge_hal_mrpcim_stats_get(
2265     vxge_hal_device_h devh,
2266     vxge_hal_mrpcim_stats_hw_info_t *stats);
2267 
2268 /*
2269  * vxge_hal_mrpcim_stats_access - Access the statistics from the given location
2270  *			  and offset and perform an operation
2271  * @devh: HAL Device handle.
2272  * @operation: Operation to be performed
2273  * @location: Location (one of vpath id, aggregate or port)
2274  * @offset: Offset with in the location
2275  * @stat: Pointer to a buffer to return the value
2276  *
2277  * Get the statistics from the given location and offset.
2278  *
2279  */
2280 vxge_hal_status_e
2281 vxge_hal_mrpcim_stats_access(
2282     vxge_hal_device_h devh,
2283     u32 operation,
2284     u32 location,
2285     u32 offset,
2286     u64 *stat);
2287 
2288 /*
2289  * vxge_hal_mrpcim_xmac_aggr_stats_get - Get the Statistics on aggregate port
2290  * @devh: HAL device handle.
2291  * @port: Number of the port (0 or 1)
2292  * @aggr_stats: Buffer to return Statistics on aggregate port.
2293  *
2294  * Get the Statistics on aggregate port
2295  *
2296  */
2297 vxge_hal_status_e
2298 vxge_hal_mrpcim_xmac_aggr_stats_get(vxge_hal_device_h devh,
2299     u32 port,
2300     vxge_hal_xmac_aggr_stats_t *aggr_stats);
2301 
2302 /*
2303  * vxge_hal_mrpcim_xmac_port_stats_get - Get the Statistics on a port
2304  * @devh: HAL device handle.
2305  * @port: Number of the port (wire 0, wire 1 or LAG)
2306  * @port_stats: Buffer to return Statistics on a port.
2307  *
2308  * Get the Statistics on port
2309  *
2310  */
2311 vxge_hal_status_e
2312 vxge_hal_mrpcim_xmac_port_stats_get(vxge_hal_device_h devh,
2313     u32 port,
2314     vxge_hal_xmac_port_stats_t *port_stats);
2315 
2316 /*
2317  * vxge_hal_mrpcim_xmac_stats_get - Get the XMAC Statistics
2318  * @devh: HAL device handle.
2319  * @xmac_stats: Buffer to return XMAC Statistics.
2320  *
2321  * Get the XMAC Statistics
2322  *
2323  */
2324 vxge_hal_status_e
2325 vxge_hal_mrpcim_xmac_stats_get(vxge_hal_device_h devh,
2326     vxge_hal_mrpcim_xmac_stats_t *xmac_stats);
2327 
2328 /*
2329  * vxge_hal_mrpcim_stats_clear - Clear the statistics of the device
2330  * @devh: HAL Device handle.
2331  *
2332  * Clear the statistics of the given Device.
2333  *
2334  */
2335 vxge_hal_status_e
2336 vxge_hal_mrpcim_stats_clear(
2337     vxge_hal_device_h devh);
2338 
2339 /*
2340  * vxge_hal_mrpcim_xpak_stats_poll -  Poll and update the Xpak error count.
2341  * @devh: HAL device handle
2342  * @port: Port number
2343  *
2344  * It is used to update the xpak stats value. Called by ULD periodically
2345  */
2346 vxge_hal_status_e
2347 vxge_hal_mrpcim_xpak_stats_poll(
2348     vxge_hal_device_h devh, u32 port);
2349 
2350 __EXTERN_END_DECLS
2351 
2352 #endif	/* VXGE_HAL_STATS_H */
2353