1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 * 21 * Copyright (c) 2002-2006 Neterion, Inc. 22 */ 23 24 #ifndef XGE_HAL_STATS_H 25 #define XGE_HAL_STATS_H 26 27 #include "xge-os-pal.h" 28 #include "xge-debug.h" 29 #include "xgehal-types.h" 30 #include "xgehal-config.h" 31 32 __EXTERN_BEGIN_DECLS 33 34 /** 35 * struct xge_hal_stats_hw_info_t - Xframe hardware statistics. 36 * Transmit MAC Statistics: 37 * 38 * @tmac_frms: Count of successfully transmitted MAC 39 * frames Note that this statistic may be inaccurate. The correct statistic may 40 * be derived by calcualating (tmac_ttl_octets - tmac_ttl_less_fb_octets) / 8 41 * 42 * @tmac_data_octets: Count of data and padding octets of successfully 43 * transmitted frames. 44 * 45 * @tmac_drop_frms: Count of frames that could not be sent for no other reason 46 * than internal MAC processing. Increments once whenever the 47 * transmit buffer is flushed (due to an ECC error on a memory descriptor). 48 * 49 * @tmac_mcst_frms: Count of successfully transmitted frames to a multicast 50 * address. Does not include frames sent to the broadcast address. 51 * 52 * @tmac_bcst_frms: Count of successfully transmitted frames to the broadcast 53 * address. 54 * 55 * @tmac_pause_ctrl_frms: Count of MAC PAUSE control frames that are 56 * transmitted. Since, the only control frames supported by this device 57 * are PAUSE frames, this register is a count of all transmitted MAC control 58 * frames. 59 * 60 * @tmac_ttl_octets: Count of total octets of transmitted frames, including 61 * framing characters. 62 * 63 * @tmac_ucst_frms: Count of transmitted frames containing a unicast address. 64 * @tmac_nucst_frms: Count of transmitted frames containing a non-unicast 65 * (broadcast, multicast) address. 66 * 67 * @tmac_any_err_frms: Count of transmitted frames containing any error that 68 * prevents them from being passed to the network. Increments if there is an ECC 69 * while reading the frame out of the transmit buffer. 70 * 71 * @tmac_ttl_less_fb_octets: Count of total octets of transmitted 72 * frames, not including framing characters (i.e. less framing bits) 73 * 74 * @tmac_vld_ip_octets: Count of total octets of transmitted IP datagrams that 75 * were passed to the network. Frames that are padded by the host have 76 * their padding counted as part of the IP datagram. 77 * 78 * @tmac_vld_ip: Count of transmitted IP datagrams that were passed to the 79 * network. 80 * 81 * @tmac_drop_ip: Count of transmitted IP datagrams that could not be passed to 82 * the network. Increments because of 1) an internal processing error (such as 83 * an uncorrectable ECC error); 2) a frame parsing error during IP checksum 84 * calculation. 85 * 86 * @tmac_icmp: Count of transmitted ICMP messages. Includes messages not sent 87 * due to problems within ICMP. 88 * 89 * @tmac_rst_tcp: Count of transmitted TCP segments containing the RST flag. 90 * 91 * @tmac_tcp: Count of transmitted TCP segments. Note that Xena has 92 * no knowledge of retransmission. 93 * 94 * @tmac_udp: Count of transmitted UDP datagrams. 95 * @reserved_0: Reserved. 96 * 97 * Receive MAC Statistics: 98 * @rmac_vld_frms: Count of successfully received MAC frames. Does not include 99 * frames received with frame-too-long, FCS, or length errors. 100 * 101 * @rmac_data_octets: Count of data and padding octets of successfully received 102 * frames. Does not include frames received with frame-too-long, FCS, or length 103 * errors. 104 * 105 * @rmac_fcs_err_frms: Count of received MAC frames that do not pass FCS. Does 106 * not include frames received with frame-too-long or frame-too-short error. 107 * 108 * @rmac_drop_frms: Count of received frames that could not be passed to the 109 * host because of 1) Random Early Discard (RED); 2) Frame steering algorithm 110 * found no available queue; 3) Receive ingress buffer overflow. 111 * 112 * @rmac_vld_mcst_frms: Count of successfully received MAC frames containing a 113 * multicast address. Does not include frames received with frame-too-long, FCS, 114 * or length errors. 115 * 116 * @rmac_vld_bcst_frms: Count of successfully received MAC frames containing a 117 * broadcast address. Does not include frames received with frame-too-long, FCS, 118 * or length errors. 119 * 120 * @rmac_in_rng_len_err_frms: Count of received frames with a length/type field 121 * value between 46 (42 for VLANtagged frames) and 1500 (also 1500 for 122 * VLAN-tagged frames), inclusive, that does not match the number of data octets 123 * (including pad) received. Also contains a count of received frames with a 124 * length/type field less than 46 (42 for VLAN-tagged frames) and the number of 125 * data octets (including pad) received is greater than 46 (42 for VLAN-tagged 126 * frames). 127 * 128 * @rmac_out_rng_len_err_frms: Count of received frames with length/type field 129 * between 1501 and 1535 decimal, inclusive. 130 * 131 * @rmac_long_frms: Count of received frames that are longer than 132 * rmac_max_pyld_len + 18 bytes (+22 bytes if VLAN-tagged). 133 * 134 * @rmac_pause_ctrl_frms: Count of received MAC PAUSE control frames. 135 * 136 * @rmac_unsup_ctrl_frms: Count of received MAC control frames 137 * that do not contain the PAUSE opcode. The sum of MAC_PAUSE_CTRL_FRMS and this 138 * register is a count of all received MAC control frames. 139 * 140 * @rmac_ttl_octets: Count of total octets of received frames, including framing 141 * characters. 142 * 143 * @rmac_accepted_ucst_frms: Count of successfully received frames 144 * containing a unicast address. Only includes frames that are passed to the 145 * system. 146 * 147 * @rmac_accepted_nucst_frms: Count of successfully received frames 148 * containing a non-unicast (broadcast or multicast) address. Only includes 149 * frames that are passed to the system. Could include, for instance, 150 * non-unicast frames that contain FCS errors if the MAC_ERROR_CFG register is 151 * set to pass FCSerrored frames to the host. 152 * 153 * @rmac_discarded_frms: Count of received frames containing any error that 154 * prevents them from being passed to the system. Includes, for example, 155 * received pause frames that are discarded by the MAC and frames discarded 156 * because of their destination address. 157 * 158 * @rmac_drop_events: Because the RMAC drops one frame at a time, this stat 159 * matches rmac_drop_frms. 160 * 161 * @reserved_1: Reserved. 162 * @rmac_ttl_less_fb_octets: Count of total octets of received frames, 163 * not including framing characters (i.e. less framing bits). 164 * 165 * @rmac_ttl_frms: Count of all received MAC frames, including frames received 166 * with frame-too-long, FCS, or length errors. 167 * 168 * @reserved_2: Reserved. 169 * @reserved_3: Reserved. 170 * @rmac_usized_frms: Count of received frames of length (including FCS, but not 171 * framing bits) less than 64 octets, that are otherwise well-formed. 172 * 173 * @rmac_osized_frms: Count of received frames of length (including FCS, but not 174 * framing bits) more than 1518 octets, that are otherwise well-formed. 175 * 176 * @rmac_frag_frms: Count of received frames of length (including FCS, but not 177 * framing bits) less than 64 octets that had bad FCS. In other words, counts 178 * fragments (i.e. runts). 179 * 180 * @rmac_jabber_frms: Count of received frames of length (including FCS, but not 181 * framing bits) more than MTU octets that had bad FCS. In other words, counts 182 * jabbers. 183 * 184 * @reserved_4: Reserved. 185 * @rmac_ttl_64_frms: Count of all received MAC frames with length (including 186 * FCS, but not framing bits) of exactly 64 octets. Includes frames received 187 * with frame-too-long, FCS, or length errors. 188 * 189 * @rmac_ttl_65_127_frms: Count of all received MAC frames with length 190 * (including FCS, but not framing bits) of between 65 and 127 octets 191 * inclusive. Includes frames received with frame-too-long, FCS, or length 192 * errors. 193 * @reserved_5: Reserved. 194 * @rmac_ttl_128_255_frms: Count of all received MAC frames with length 195 * (including FCS, but not framing bits) of between 128 and 255 octets 196 * inclusive. Includes frames received with frame-too-long, FCS, or length 197 * errors. 198 * 199 * @rmac_ttl_256_511_frms: Count of all received MAC frames with length 200 * (including FCS, but not framing bits) of between 256 and 511 octets 201 * inclusive. Includes frames received with frame-too-long, FCS, or length 202 * errors. 203 * 204 * @reserved_6: Reserved. 205 * @rmac_ttl_512_1023_frms: Count of all received MAC frames with length 206 * (including FCS, but not framing bits) of between 512 and 1023 octets 207 * inclusive. Includes frames received with frame-too-long, FCS, or length 208 * errors. 209 * 210 * @rmac_ttl_1024_1518_frms: Count of all received MAC frames with length 211 * (including FCS, but not framing bits) of between 1024 and 1518 octets 212 * inclusive. Includes frames received with frame-too-long, FCS, or length 213 * errors. 214 * @reserved_7: Reserved. 215 * @rmac_ip: Count of received IP datagrams. Includes errored IP datagrams. 216 * 217 * @rmac_ip_octets: Count of number of octets in received IP datagrams. Includes 218 * errored IP datagrams. 219 * 220 * @rmac_hdr_err_ip: Count of received IP datagrams that are discarded due to IP 221 * header errors. 222 * 223 * @rmac_drop_ip: Count of received IP datagrams that could not be passed to the 224 * host because of 1) Random Early Discard (RED); 2) Frame steering algorithm 225 * found no available queue; 3) Receive ingress buffer overflow. 226 * @rmac_icmp: Count of received ICMP messages. Includes errored ICMP messages 227 * (due to ICMP checksum fail). 228 * 229 * @reserved_8: Reserved. 230 * @rmac_tcp: Count of received TCP segments. Since Xena is unaware of 231 * connection context, counts all received TCP segments, regardless of whether 232 * or not they pertain to an established connection. 233 * 234 * @rmac_udp: Count of received UDP datagrams. 235 * @rmac_err_drp_udp: Count of received UDP datagrams that were not delivered to 236 * the system because of 1) Random Early Discard (RED); 2) Frame steering 237 * algorithm found no available queue; 3) Receive ingress buffer overflow. 238 * 239 * @rmac_xgmii_err_sym: Count of the number of symbol errors in the received 240 * XGMII data (i.e. PHY indicates "Receive Error" on the XGMII). Only includes 241 * symbol errors that are observed between the XGMII Start Frame Delimiter 242 * and End Frame Delimiter, inclusive. And only increments the count by one for 243 * each frame. 244 * 245 * @rmac_frms_q0: Count of number of frames that pass through queue 0 of receive 246 * buffer. 247 * @rmac_frms_q1: Count of number of frames that pass through queue 1 of receive 248 * buffer. 249 * @rmac_frms_q2: Count of number of frames that pass through queue 2 of receive 250 * buffer. 251 * @rmac_frms_q3: Count of number of frames that pass through queue 3 of receive 252 * buffer. 253 * @rmac_frms_q4: Count of number of frames that pass through queue 4 of receive 254 * buffer. 255 * @rmac_frms_q5: Count of number of frames that pass through queue 5 of receive 256 * buffer. 257 * @rmac_frms_q6: Count of number of frames that pass through queue 6 of receive 258 * buffer. 259 * @rmac_frms_q7: Count of number of frames that pass through queue 7 of receive 260 * buffer. 261 * @rmac_full_q0: Count of number of times that receive buffer queue 0 has 262 * filled up. If a queue is size 0, then this stat is incremented to a value of 263 * 1 when MAC receives its first frame. 264 * 265 * @rmac_full_q1: Count of number of times that receive buffer queue 1 has 266 * filled up. If a queue is size 0, then this stat is incremented to a value of 267 * 1 when MAC receives its first frame. 268 * 269 * @rmac_full_q2: Count of number of times that receive buffer queue 2 has 270 * filled up. If a queue is size 0, then this stat is incremented to a value of 271 * 1 when MAC receives its first frame. 272 * 273 * @rmac_full_q3: Count of number of times that receive buffer queue 3 has 274 * filled up. If a queue is size 0, then this stat is incremented to a value of 275 * 1 when MAC receives its first frame. 276 * 277 * @rmac_full_q4: Count of number of times that receive buffer queue 4 has 278 * filled up. If a queue is size 0, then this stat is incremented to a value of 279 * 1 when MAC receives its first frame. 280 * 281 * @rmac_full_q5: Count of number of times that receive buffer queue 5 has 282 * filled up. If a queue is size 0, then this stat is incremented to a value of 283 * 1 when MAC receives its first frame. 284 * 285 * @rmac_full_q6: Count of number of times that receive buffer queue 6 has 286 * filled up. If a queue is size 0, then this stat is incremented to a value of 287 * 1 when MAC receives its first frame. 288 * 289 * @rmac_full_q7: Count of number of times that receive buffer queue 7 has 290 * filled up. If a queue is size 0, then this stat is incremented to a value of 291 * 1 when MAC receives its first frame. 292 * 293 * @rmac_pause_cnt: Count of number of pause quanta that the MAC has been in the 294 * paused state. Recall, one pause quantum equates to 512 bit times. 295 * @reserved_9: Reserved. 296 * @rmac_xgmii_data_err_cnt: This counter is incremented when either 1) The 297 * Reconcilliation Sublayer (RS) is expecting one control character and gets 298 * another (i.e. expecting Start control character and gets another control 299 * character); 2) Start control character is not in lane 0 or lane 4; 3) The RS 300 * gets a Start control character, but the start frame delimiter is not found in 301 * the correct location. 302 * @rmac_xgmii_ctrl_err_cnt: Maintains a count of unexpected or 303 * misplaced control characters occuring outside of normal data transmission 304 * (i.e. not included in RMAC_XGMII_DATA_ERR_CNT). 305 * 306 * @rmac_accepted_ip: Count of received IP datagrams that were passed to the 307 * system. 308 * 309 * @rmac_err_tcp: Count of received TCP segments containing errors. For example, 310 * bad TCP checksum. 311 * 312 * PCI (bus) Statistics: 313 * @rd_req_cnt: Counts the total number of read requests made by the device. 314 * @new_rd_req_cnt: Counts the requests made for a new read sequence (request 315 * made for the same sequence after a retry or disconnect response are not 316 * counted). 317 * @new_rd_req_rtry_cnt: Counts the Retry responses received on the start of 318 * the new read sequences. 319 * @rd_rtry_cnt: Counts the Retry responses received for read requests. 320 * @wr_rtry_rd_ack_cnt: Increments whenever a read request is accepted by 321 * the target after a write request was terminated with retry. 322 * @wr_req_cnt: Counts the total number of Write requests made by the device. 323 * @new_wr_req_cnt: Counts the requests made for a new write sequence (request 324 * made for the same sequence after a retry or disconnect response are not 325 * counted). 326 * @new_wr_req_rtry_cnt: Counts the requests made for a new write sequence 327 * (request made for the same sequence after a retry or disconnect response are 328 * not counted). 329 * 330 * @wr_rtry_cnt: Counts the Retry responses received for write requests. 331 * @wr_disc_cnt: Write Disconnect. Counts the target initiated disconnects 332 * on write transactions. 333 * @rd_rtry_wr_ack_cnt: Increments whenever a write request is accepted by the 334 * target after a read request was terminated with retry. 335 * 336 * @txp_wr_cnt: Counts the host write transactions to the Tx Pointer 337 * FIFOs. 338 * @txd_rd_cnt: Count of the Transmit Descriptor (TxD) read requests. 339 * @txd_wr_cnt: Count of the TxD write requests. 340 * @rxd_rd_cnt: Count of the Receive Descriptor (RxD) read requests. 341 * @rxd_wr_cnt: Count of the RxD write requests. 342 * @txf_rd_cnt: Count of transmit frame read requests. This will not 343 * equal the number of frames transmitted, as frame data is typically spread 344 * across multiple PCI transactions. 345 * @rxf_wr_cnt: Count of receive frame write requests. 346 * 347 * @tmac_frms_oflow: tbd 348 * @tmac_data_octets_oflow: tbd 349 * @tmac_mcst_frms_oflow: tbd 350 * @tmac_bcst_frms_oflow: tbd 351 * @tmac_ttl_octets_oflow: tbd 352 * @tmac_ucst_frms_oflow: tbd 353 * @tmac_nucst_frms_oflow: tbd 354 * @tmac_any_err_frms_oflow: tbd 355 * @tmac_vlan_frms: tbd 356 * @tmac_vld_ip_oflow: tbd 357 * @tmac_drop_ip_oflow: tbd 358 * @tmac_icmp_oflow: tbd 359 * @tmac_rst_tcp_oflow: tbd 360 * @tmac_udp_oflow: tbd 361 * @reserved_10: tbd 362 * @tpa_unknown_protocol: tbd 363 * @tpa_parse_failure: tbd 364 * @rmac_vld_frms_oflow: tbd 365 * @rmac_data_octets_oflow: tbd 366 * @rmac_vld_mcst_frms_oflow: tbd 367 * @rmac_vld_bcst_frms_oflow: tbd 368 * @rmac_ttl_octets_oflow: tbd 369 * @rmac_accepted_ucst_frms_oflow: tbd 370 * @rmac_accepted_nucst_frms_oflow: tbd 371 * @rmac_discarded_frms_oflow: tbd 372 * @rmac_drop_events_oflow: tbd 373 * @rmac_usized_frms_oflow: tbd 374 * @rmac_osized_frms_oflow: tbd 375 * @rmac_frag_frms_oflow: tbd 376 * @rmac_jabber_frms_oflow: tbd 377 * @rmac_ip_oflow: tbd 378 * @rmac_drop_ip_oflow: tbd 379 * @rmac_icmp_oflow: tbd 380 * @rmac_udp_oflow: tbd 381 * @reserved_11: tbd 382 * @rmac_err_drp_udp_oflow: tbd 383 * @rmac_pause_cnt_oflow: tbd 384 * @rmac_ttl_1519_4095_frms: tbd 385 * @rmac_ttl_4096_8191_frms: tbd 386 * @rmac_ttl_8192_max_frms: tbd 387 * @rmac_ttl_gt_max_frms: tbd 388 * @rmac_osized_alt_frms: tbd 389 * @rmac_jabber_alt_frms: tbd 390 * @rmac_gt_max_alt_frms: tbd 391 * @rmac_vlan_frms: tbd 392 * @rmac_fcs_discard: tbd 393 * @rmac_len_discard: tbd 394 * @rmac_da_discard: tbd 395 * @rmac_pf_discard: tbd 396 * @rmac_rts_discard: tbd 397 * @rmac_wol_discard: tbd 398 * @rmac_red_discard: tbd 399 * @rmac_ingm_full_discard: tbd 400 * @rmac_accepted_ip_oflow: tbd 401 * @reserved_12: tbd 402 * @link_fault_cnt: TBD 403 * @reserved_13: tbd 404 * Xframe hardware statistics. 405 */ 406 typedef struct xge_hal_stats_hw_info_t { 407 #ifdef XGE_OS_HOST_BIG_ENDIAN 408 /* Tx MAC statistics counters. */ 409 u32 tmac_frms; 410 u32 tmac_data_octets; 411 u64 tmac_drop_frms; 412 u32 tmac_mcst_frms; 413 u32 tmac_bcst_frms; 414 u64 tmac_pause_ctrl_frms; 415 u32 tmac_ttl_octets; 416 u32 tmac_ucst_frms; 417 u32 tmac_nucst_frms; 418 u32 tmac_any_err_frms; 419 u64 tmac_ttl_less_fb_octets; 420 u64 tmac_vld_ip_octets; 421 u32 tmac_vld_ip; 422 u32 tmac_drop_ip; 423 u32 tmac_icmp; 424 u32 tmac_rst_tcp; 425 u64 tmac_tcp; 426 u32 tmac_udp; 427 u32 reserved_0; 428 429 /* Rx MAC Statistics counters. */ 430 u32 rmac_vld_frms; 431 u32 rmac_data_octets; 432 u64 rmac_fcs_err_frms; 433 u64 rmac_drop_frms; 434 u32 rmac_vld_mcst_frms; 435 u32 rmac_vld_bcst_frms; 436 u32 rmac_in_rng_len_err_frms; 437 u32 rmac_out_rng_len_err_frms; 438 u64 rmac_long_frms; 439 u64 rmac_pause_ctrl_frms; 440 u64 rmac_unsup_ctrl_frms; 441 u32 rmac_ttl_octets; 442 u32 rmac_accepted_ucst_frms; 443 u32 rmac_accepted_nucst_frms; 444 u32 rmac_discarded_frms; 445 u32 rmac_drop_events; 446 u32 reserved_1; 447 u64 rmac_ttl_less_fb_octets; 448 u64 rmac_ttl_frms; 449 u64 reserved_2; 450 u32 reserved_3; 451 u32 rmac_usized_frms; 452 u32 rmac_osized_frms; 453 u32 rmac_frag_frms; 454 u32 rmac_jabber_frms; 455 u32 reserved_4; 456 u64 rmac_ttl_64_frms; 457 u64 rmac_ttl_65_127_frms; 458 u64 reserved_5; 459 u64 rmac_ttl_128_255_frms; 460 u64 rmac_ttl_256_511_frms; 461 u64 reserved_6; 462 u64 rmac_ttl_512_1023_frms; 463 u64 rmac_ttl_1024_1518_frms; 464 u32 reserved_7; 465 u32 rmac_ip; 466 u64 rmac_ip_octets; 467 u32 rmac_hdr_err_ip; 468 u32 rmac_drop_ip; 469 u32 rmac_icmp; 470 u32 reserved_8; 471 u64 rmac_tcp; 472 u32 rmac_udp; 473 u32 rmac_err_drp_udp; 474 u64 rmac_xgmii_err_sym; 475 u64 rmac_frms_q0; 476 u64 rmac_frms_q1; 477 u64 rmac_frms_q2; 478 u64 rmac_frms_q3; 479 u64 rmac_frms_q4; 480 u64 rmac_frms_q5; 481 u64 rmac_frms_q6; 482 u64 rmac_frms_q7; 483 u16 rmac_full_q0; 484 u16 rmac_full_q1; 485 u16 rmac_full_q2; 486 u16 rmac_full_q3; 487 u16 rmac_full_q4; 488 u16 rmac_full_q5; 489 u16 rmac_full_q6; 490 u16 rmac_full_q7; 491 u32 rmac_pause_cnt; 492 u32 reserved_9; 493 u64 rmac_xgmii_data_err_cnt; 494 u64 rmac_xgmii_ctrl_err_cnt; 495 u32 rmac_accepted_ip; 496 u32 rmac_err_tcp; 497 498 /* PCI/PCI-X Read transaction statistics. */ 499 u32 rd_req_cnt; 500 u32 new_rd_req_cnt; 501 u32 new_rd_req_rtry_cnt; 502 u32 rd_rtry_cnt; 503 u32 wr_rtry_rd_ack_cnt; 504 505 /* PCI/PCI-X write transaction statistics. */ 506 u32 wr_req_cnt; 507 u32 new_wr_req_cnt; 508 u32 new_wr_req_rtry_cnt; 509 u32 wr_rtry_cnt; 510 u32 wr_disc_cnt; 511 u32 rd_rtry_wr_ack_cnt; 512 513 /* DMA Transaction statistics. */ 514 u32 txp_wr_cnt; 515 u32 txd_rd_cnt; 516 u32 txd_wr_cnt; 517 u32 rxd_rd_cnt; 518 u32 rxd_wr_cnt; 519 u32 txf_rd_cnt; 520 u32 rxf_wr_cnt; 521 522 /* Enhanced Herc statistics */ 523 u32 tmac_frms_oflow; 524 u32 tmac_data_octets_oflow; 525 u32 tmac_mcst_frms_oflow; 526 u32 tmac_bcst_frms_oflow; 527 u32 tmac_ttl_octets_oflow; 528 u32 tmac_ucst_frms_oflow; 529 u32 tmac_nucst_frms_oflow; 530 u32 tmac_any_err_frms_oflow; 531 u64 tmac_vlan_frms; 532 u32 tmac_vld_ip_oflow; 533 u32 tmac_drop_ip_oflow; 534 u32 tmac_icmp_oflow; 535 u32 tmac_rst_tcp_oflow; 536 u32 tmac_udp_oflow; 537 u32 tpa_unknown_protocol; 538 u32 tpa_parse_failure; 539 u32 reserved_10; 540 u32 rmac_vld_frms_oflow; 541 u32 rmac_data_octets_oflow; 542 u32 rmac_vld_mcst_frms_oflow; 543 u32 rmac_vld_bcst_frms_oflow; 544 u32 rmac_ttl_octets_oflow; 545 u32 rmac_accepted_ucst_frms_oflow; 546 u32 rmac_accepted_nucst_frms_oflow; 547 u32 rmac_discarded_frms_oflow; 548 u32 rmac_drop_events_oflow; 549 u32 rmac_usized_frms_oflow; 550 u32 rmac_osized_frms_oflow; 551 u32 rmac_frag_frms_oflow; 552 u32 rmac_jabber_frms_oflow; 553 u32 rmac_ip_oflow; 554 u32 rmac_drop_ip_oflow; 555 u32 rmac_icmp_oflow; 556 u32 rmac_udp_oflow; 557 u32 rmac_err_drp_udp_oflow; 558 u32 rmac_pause_cnt_oflow; 559 u32 reserved_11; 560 u64 rmac_ttl_1519_4095_frms; 561 u64 rmac_ttl_4096_8191_frms; 562 u64 rmac_ttl_8192_max_frms; 563 u64 rmac_ttl_gt_max_frms; 564 u64 rmac_osized_alt_frms; 565 u64 rmac_jabber_alt_frms; 566 u64 rmac_gt_max_alt_frms; 567 u64 rmac_vlan_frms; 568 u32 rmac_fcs_discard; 569 u32 rmac_len_discard; 570 u32 rmac_da_discard; 571 u32 rmac_pf_discard; 572 u32 rmac_rts_discard; 573 u32 rmac_wol_discard; 574 u32 rmac_red_discard; 575 u32 rmac_ingm_full_discard; 576 u32 rmac_accepted_ip_oflow; 577 u32 reserved_12; 578 u32 link_fault_cnt; 579 u32 reserved_13; 580 #else 581 /* Tx MAC statistics counters. */ 582 u32 tmac_data_octets; 583 u32 tmac_frms; 584 u64 tmac_drop_frms; 585 u32 tmac_bcst_frms; 586 u32 tmac_mcst_frms; 587 u64 tmac_pause_ctrl_frms; 588 u32 tmac_ucst_frms; 589 u32 tmac_ttl_octets; 590 u32 tmac_any_err_frms; 591 u32 tmac_nucst_frms; 592 u64 tmac_ttl_less_fb_octets; 593 u64 tmac_vld_ip_octets; 594 u32 tmac_drop_ip; 595 u32 tmac_vld_ip; 596 u32 tmac_rst_tcp; 597 u32 tmac_icmp; 598 u64 tmac_tcp; 599 u32 reserved_0; 600 u32 tmac_udp; 601 602 /* Rx MAC Statistics counters. */ 603 u32 rmac_data_octets; 604 u32 rmac_vld_frms; 605 u64 rmac_fcs_err_frms; 606 u64 rmac_drop_frms; 607 u32 rmac_vld_bcst_frms; 608 u32 rmac_vld_mcst_frms; 609 u32 rmac_out_rng_len_err_frms; 610 u32 rmac_in_rng_len_err_frms; 611 u64 rmac_long_frms; 612 u64 rmac_pause_ctrl_frms; 613 u64 rmac_unsup_ctrl_frms; 614 u32 rmac_accepted_ucst_frms; 615 u32 rmac_ttl_octets; 616 u32 rmac_discarded_frms; 617 u32 rmac_accepted_nucst_frms; 618 u32 reserved_1; 619 u32 rmac_drop_events; 620 u64 rmac_ttl_less_fb_octets; 621 u64 rmac_ttl_frms; 622 u64 reserved_2; 623 u32 rmac_usized_frms; 624 u32 reserved_3; 625 u32 rmac_frag_frms; 626 u32 rmac_osized_frms; 627 u32 reserved_4; 628 u32 rmac_jabber_frms; 629 u64 rmac_ttl_64_frms; 630 u64 rmac_ttl_65_127_frms; 631 u64 reserved_5; 632 u64 rmac_ttl_128_255_frms; 633 u64 rmac_ttl_256_511_frms; 634 u64 reserved_6; 635 u64 rmac_ttl_512_1023_frms; 636 u64 rmac_ttl_1024_1518_frms; 637 u32 rmac_ip; 638 u32 reserved_7; 639 u64 rmac_ip_octets; 640 u32 rmac_drop_ip; 641 u32 rmac_hdr_err_ip; 642 u32 reserved_8; 643 u32 rmac_icmp; 644 u64 rmac_tcp; 645 u32 rmac_err_drp_udp; 646 u32 rmac_udp; 647 u64 rmac_xgmii_err_sym; 648 u64 rmac_frms_q0; 649 u64 rmac_frms_q1; 650 u64 rmac_frms_q2; 651 u64 rmac_frms_q3; 652 u64 rmac_frms_q4; 653 u64 rmac_frms_q5; 654 u64 rmac_frms_q6; 655 u64 rmac_frms_q7; 656 u16 rmac_full_q3; 657 u16 rmac_full_q2; 658 u16 rmac_full_q1; 659 u16 rmac_full_q0; 660 u16 rmac_full_q7; 661 u16 rmac_full_q6; 662 u16 rmac_full_q5; 663 u16 rmac_full_q4; 664 u32 reserved_9; 665 u32 rmac_pause_cnt; 666 u64 rmac_xgmii_data_err_cnt; 667 u64 rmac_xgmii_ctrl_err_cnt; 668 u32 rmac_err_tcp; 669 u32 rmac_accepted_ip; 670 671 /* PCI/PCI-X Read transaction statistics. */ 672 u32 new_rd_req_cnt; 673 u32 rd_req_cnt; 674 u32 rd_rtry_cnt; 675 u32 new_rd_req_rtry_cnt; 676 677 /* PCI/PCI-X Write/Read transaction statistics. */ 678 u32 wr_req_cnt; 679 u32 wr_rtry_rd_ack_cnt; 680 u32 new_wr_req_rtry_cnt; 681 u32 new_wr_req_cnt; 682 u32 wr_disc_cnt; 683 u32 wr_rtry_cnt; 684 685 /* PCI/PCI-X Write / DMA Transaction statistics. */ 686 u32 txp_wr_cnt; 687 u32 rd_rtry_wr_ack_cnt; 688 u32 txd_wr_cnt; 689 u32 txd_rd_cnt; 690 u32 rxd_wr_cnt; 691 u32 rxd_rd_cnt; 692 u32 rxf_wr_cnt; 693 u32 txf_rd_cnt; 694 695 /* Enhanced Herc statistics */ 696 u32 tmac_data_octets_oflow; 697 u32 tmac_frms_oflow; 698 u32 tmac_bcst_frms_oflow; 699 u32 tmac_mcst_frms_oflow; 700 u32 tmac_ucst_frms_oflow; 701 u32 tmac_ttl_octets_oflow; 702 u32 tmac_any_err_frms_oflow; 703 u32 tmac_nucst_frms_oflow; 704 u64 tmac_vlan_frms; 705 u32 tmac_drop_ip_oflow; 706 u32 tmac_vld_ip_oflow; 707 u32 tmac_rst_tcp_oflow; 708 u32 tmac_icmp_oflow; 709 u32 tpa_unknown_protocol; 710 u32 tmac_udp_oflow; 711 u32 reserved_10; 712 u32 tpa_parse_failure; 713 u32 rmac_data_octets_oflow; 714 u32 rmac_vld_frms_oflow; 715 u32 rmac_vld_bcst_frms_oflow; 716 u32 rmac_vld_mcst_frms_oflow; 717 u32 rmac_accepted_ucst_frms_oflow; 718 u32 rmac_ttl_octets_oflow; 719 u32 rmac_discarded_frms_oflow; 720 u32 rmac_accepted_nucst_frms_oflow; 721 u32 rmac_usized_frms_oflow; 722 u32 rmac_drop_events_oflow; 723 u32 rmac_frag_frms_oflow; 724 u32 rmac_osized_frms_oflow; 725 u32 rmac_ip_oflow; 726 u32 rmac_jabber_frms_oflow; 727 u32 rmac_icmp_oflow; 728 u32 rmac_drop_ip_oflow; 729 u32 rmac_err_drp_udp_oflow; 730 u32 rmac_udp_oflow; 731 u32 reserved_11; 732 u32 rmac_pause_cnt_oflow; 733 u64 rmac_ttl_1519_4095_frms; 734 u64 rmac_ttl_4096_8191_frms; 735 u64 rmac_ttl_8192_max_frms; 736 u64 rmac_ttl_gt_max_frms; 737 u64 rmac_osized_alt_frms; 738 u64 rmac_jabber_alt_frms; 739 u64 rmac_gt_max_alt_frms; 740 u64 rmac_vlan_frms; 741 u32 rmac_len_discard; 742 u32 rmac_fcs_discard; 743 u32 rmac_pf_discard; 744 u32 rmac_da_discard; 745 u32 rmac_wol_discard; 746 u32 rmac_rts_discard; 747 u32 rmac_ingm_full_discard; 748 u32 rmac_red_discard; 749 u32 reserved_12; 750 u32 rmac_accepted_ip_oflow; 751 u32 reserved_13; 752 u32 link_fault_cnt; 753 #endif 754 } xge_hal_stats_hw_info_t; 755 756 /** 757 * struct xge_hal_stats_channel_into_t - HAL channel statistics. 758 * @full_cnt: TBD 759 * @usage_max: TBD 760 * @reserve_free_swaps_cnt: Reserve/free swap counter. Internal usage. 761 * @max_compl_per_intr_cnt: Maximum number of completions per interrupt. 762 * @avg_compl_per_intr_cnt: Average number of completions per interrupt. 763 * Note that a total number of completed descriptors 764 * for the given channel can be calculated as 765 * (@traffic_intr_cnt * @avg_compl_per_intr_cnt). 766 * @total_compl_cnt: Total completion count. 767 * @total_compl_cnt == (@traffic_intr_cnt * @avg_compl_per_intr_cnt). 768 * @total_posts: Total number of descriptor postings on the channel. 769 * Counts the number of xge_hal_ring_dtr_post() 770 * or xge_hal_fifo_dtr_post() calls by ULD, for ring and fifo 771 * channel, respectively. 772 * @total_posts_many: Total number of posts on the channel that involved 773 * more than one descriptor. Counts the number of 774 * xge_hal_fifo_dtr_post_many() calls performed by ULD. 775 * @total_buffers: Total number of buffers posted on the channel. 776 * @copied_frags: TBD 777 * @copied_buffers: TBD 778 * @avg_buffers_per_post: Average number of buffers transferred in a single 779 * post operation. 780 * Calculated as @total_buffers/@total_posts. 781 * @avg_buffer_size: Average buffer size transferred by a single post 782 * operation on a fifo channel. The counter is not supported for a ring 783 * channel. Calculated as a total number of transmitted octets divided 784 * by @total_buffers. 785 * @avg_post_size: Average amount of data transferred by a single post. 786 * Calculated as a total number of transmitted octets divided by 787 * @total_posts. 788 * @ring_bump_cnt: Ring "bump" count. Number of times the hardware could 789 * not post receive data (and had to continue keeping it on-board) 790 * because of unavailable receive descriptor(s). 791 * @total_posts_dtrs_many: Total number of posts on the channel that involving 792 * more than one descriptor. 793 * @total_posts_frags_many: Total number of fragments posted on the channel 794 * during post requests of multiple descriptors. 795 * @total_posts_dang_dtrs: Total number of posts on the channel involving 796 * dangling descriptors. 797 * @total_posts_dang_frags: Total number of dangling fragments posted on the channel 798 * during post request containing multiple descriptors. 799 * 800 * HAL channel counters. 801 * See also: xge_hal_stats_device_info_t{}. 802 */ 803 typedef struct xge_hal_stats_channel_info_t { 804 u32 full_cnt; 805 u32 usage_max; 806 u32 reserve_free_swaps_cnt; 807 u32 avg_compl_per_intr_cnt; 808 u32 total_compl_cnt; 809 u32 total_posts; 810 u32 total_posts_many; 811 u32 total_buffers; 812 u32 copied_frags; 813 u32 copied_buffers; 814 u32 avg_buffers_per_post; 815 u32 avg_buffer_size; 816 u32 avg_post_size; 817 u32 ring_bump_cnt; 818 u32 total_posts_dtrs_many; 819 u32 total_posts_frags_many; 820 u32 total_posts_dang_dtrs; 821 u32 total_posts_dang_frags; 822 } xge_hal_stats_channel_info_t; 823 824 /** 825 * struct xge_hal_xpak_counter_t - HAL xpak error counters 826 * @excess_temp: excess transceiver_temperature count 827 * @excess_bias_current: excess laser_bias_current count 828 * @excess_laser_output: excess laser_output_power count 829 * @tick_period: tick count for each cycle 830 */ 831 typedef struct xge_hal_xpak_counter_t { 832 u32 excess_temp; 833 u32 excess_bias_current; 834 u32 excess_laser_output; 835 u32 tick_period; 836 } xge_hal_xpak_counter_t; 837 838 /** 839 * struct xge_hal_stats_xpak_t - HAL xpak stats 840 * @alarm_transceiver_temp_high: alarm_transceiver_temp_high count value 841 * @alarm_transceiver_temp_low : alarm_transceiver_temp_low count value 842 * @alarm_laser_bias_current_high: alarm_laser_bias_current_high count value 843 * @alarm_laser_bias_current_low: alarm_laser_bias_current_low count value 844 * @alarm_laser_output_power_high: alarm_laser_output_power_high count value 845 * @alarm_laser_output_power_low: alarm_laser_output_power_low count value 846 * @warn_transceiver_temp_high: warn_transceiver_temp_high count value 847 * @warn_transceiver_temp_low: warn_transceiver_temp_low count value 848 * @warn_laser_bias_current_high: warn_laser_bias_current_high count value 849 * @warn_laser_bias_current_low: warn_laser_bias_current_low count value 850 * @warn_laser_output_power_high: warn_laser_output_power_high count value 851 * @warn_laser_output_power_low: warn_laser_output_power_low count value 852 */ 853 typedef struct xge_hal_stats_xpak_t { 854 u16 alarm_transceiver_temp_high; 855 u16 alarm_transceiver_temp_low; 856 u16 alarm_laser_bias_current_high; 857 u16 alarm_laser_bias_current_low; 858 u16 alarm_laser_output_power_high; 859 u16 alarm_laser_output_power_low; 860 u16 warn_transceiver_temp_high; 861 u16 warn_transceiver_temp_low; 862 u16 warn_laser_bias_current_high; 863 u16 warn_laser_bias_current_low; 864 u16 warn_laser_output_power_high; 865 u16 warn_laser_output_power_low; 866 } xge_hal_stats_xpak_t; 867 868 869 870 /** 871 * struct xge_hal_stats_sw_err_t - HAL device error statistics. 872 * @sm_err_cnt: TBD 873 * @single_ecc_err_cnt: TBD 874 * @double_ecc_err_cnt: TBD 875 * @ecc_err_cnt: ECC error count. 876 * @parity_err_cnt: Parity error count. 877 * @serr_cnt: Number of exceptions indicated to the host via PCI SERR#. 878 * @rxd_t_code_err_cnt: Array of receive transfer codes. The position 879 * (index) in this array reflects the transfer code type, for instance 880 * 0x7 - for "invalid receive buffer size", or 0x8 - for ECC. 881 * Value rxd_t_code_err_cnt[i] reflects the 882 * number of times the corresponding transfer code was encountered. 883 * 884 * @txd_t_code_err_cnt: Array of transmit transfer codes. The position 885 * (index) in this array reflects the transfer code type, for instance 886 * 0xA - "loss of link". 887 * Value txd_t_code_err_cnt[i] reflects the 888 * number of times the corresponding transfer code was encountered. 889 * @stats_xpak: TBD 890 * @xpak_counter: TBD 891 */ 892 typedef struct xge_hal_stats_sw_err_t { 893 u32 sm_err_cnt; 894 u32 single_ecc_err_cnt; 895 u32 double_ecc_err_cnt; 896 u32 ecc_err_cnt; 897 u32 parity_err_cnt; 898 u32 serr_cnt; 899 u32 rxd_t_code_err_cnt[16]; 900 u32 txd_t_code_err_cnt[16]; 901 xge_hal_stats_xpak_t stats_xpak; 902 xge_hal_xpak_counter_t xpak_counter; 903 } xge_hal_stats_sw_err_t; 904 905 /** 906 * struct xge_hal_stats_device_info_t - HAL own per-device statistics. 907 * 908 * @rx_traffic_intr_cnt: TBD 909 * @tx_traffic_intr_cnt: TBD 910 * @txpic_intr_cnt: TBD 911 * @txdma_intr_cnt: TBD 912 * @txmac_intr_cnt: TBD 913 * @txxgxs_intr_cnt: TBD 914 * @rxpic_intr_cnt: TBD 915 * @rxdma_intr_cnt: TBD 916 * @rxmac_intr_cnt: TBD 917 * @rxxgxs_intr_cnt: TBD 918 * @mc_intr_cnt: TBD 919 * @not_traffic_intr_cnt: Number of times the host was interrupted 920 * without new completions. 921 * "Non-traffic interrupt counter". 922 * @not_xge_intr_cnt: TBD 923 * @traffic_intr_cnt: Number of traffic interrupts for the device. 924 * @total_intr_cnt: Total number of traffic interrupts for the device. 925 * @total_intr_cnt == @traffic_intr_cnt + 926 * @not_traffic_intr_cnt 927 * @soft_reset_cnt: Number of times soft reset is done on this device. 928 * @rxufca_hi_adjust_cnt: TODO 929 * @rxufca_lo_adjust_cnt: TODO 930 * @bimodal_hi_adjust_cnt: TODO 931 * @bimodal_lo_adjust_cnt: TODO 932 * 933 * @tot_frms_lroised: TBD 934 * @tot_lro_sessions: TBD 935 * @lro_frm_len_exceed_cnt: TBD 936 * @lro_sg_exceed_cnt: TBD 937 * @lro_out_of_seq_pkt_cnt: TBD 938 * @lro_dup_pkt_cnt: TBD 939 * 940 * HAL per-device statistics. 941 * See also: xge_hal_stats_channel_info_t{}. 942 */ 943 typedef struct xge_hal_stats_device_info_t { 944 u32 rx_traffic_intr_cnt; 945 u32 tx_traffic_intr_cnt; 946 u32 txpic_intr_cnt; 947 u32 txdma_intr_cnt; 948 u32 pfc_err_cnt; 949 u32 tda_err_cnt; 950 u32 pcc_err_cnt; 951 u32 tti_err_cnt; 952 u32 lso_err_cnt; 953 u32 tpa_err_cnt; 954 u32 sm_err_cnt; 955 u32 txmac_intr_cnt; 956 u32 mac_tmac_err_cnt; 957 u32 txxgxs_intr_cnt; 958 u32 xgxs_txgxs_err_cnt; 959 u32 rxpic_intr_cnt; 960 u32 rxdma_intr_cnt; 961 u32 rc_err_cnt; 962 u32 rpa_err_cnt; 963 u32 rda_err_cnt; 964 u32 rti_err_cnt; 965 u32 rxmac_intr_cnt; 966 u32 mac_rmac_err_cnt; 967 u32 rxxgxs_intr_cnt; 968 u32 xgxs_rxgxs_err_cnt; 969 u32 mc_intr_cnt; 970 u32 not_traffic_intr_cnt; 971 u32 not_xge_intr_cnt; 972 u32 traffic_intr_cnt; 973 u32 total_intr_cnt; 974 u32 soft_reset_cnt; 975 u32 rxufca_hi_adjust_cnt; 976 u32 rxufca_lo_adjust_cnt; 977 u32 bimodal_hi_adjust_cnt; 978 u32 bimodal_lo_adjust_cnt; 979 #ifdef XGE_HAL_CONFIG_LRO 980 u32 tot_frms_lroised; 981 u32 tot_lro_sessions; 982 u32 lro_frm_len_exceed_cnt; 983 u32 lro_sg_exceed_cnt; 984 u32 lro_out_of_seq_pkt_cnt; 985 u32 lro_dup_pkt_cnt; 986 #endif 987 } xge_hal_stats_device_info_t; 988 989 /* ========================== XFRAME ER STATISTICS ======================== */ 990 #define XGE_HAL_MAC_LINKS 3 991 #define XGE_HAL_MAC_AGGREGATORS 2 992 #define XGE_HAL_VPATHS 17 993 /** 994 * struct xge_hal_stats_link_info_t - XGMAC statistics for a link 995 * 996 * @tx_frms: Count of transmitted MAC frames for mac the link. 997 * @tx_ttl_eth_octets: Count of total octets of transmitted frames 998 * for mac the link. 999 * @tx_data_octets: Count of data and padding octets of transmitted 1000 * frames for mac the link. 1001 * @tx_mcst_frms: Count of multicast MAC frames for mac the link. 1002 * @tx_bcst_frms: Count of broadcast MAC frames for mac the link. 1003 * @tx_ucst_frms: Count of unicast MAC frames for mac the link. 1004 * @tx_tagged_frms: Count of transmitted frames containing a VLAN tag 1005 * for mac the link. 1006 * @tx_vld_ip: Count of transmitted IP datagrams for mac the link. 1007 * @tx_vld_ip_octets: Count of transmitted IP octets for mac the link. 1008 * @tx_icmp: Count of transmitted ICMP messages for mac the link. 1009 * @tx_tcp: Count of transmitted TCP segments for mac the link. 1010 * @tx_rst_tcp: Count of transmitted TCP segments containing the RST 1011 * flag mac the link. 1012 * @tx_udp: Count of transmitted UDP datagrams for mac the link. 1013 * @tx_unknown_protocol: Count of transmitted packets of unknown 1014 * protocol for mac the link. 1015 * @tx_parse_error: Count of transmitted packets with parsing errors 1016 * for mac the link. 1017 * @tx_pause_ctrl_frms: Count of MAC PAUSE control frames for mac 1018 * the link. 1019 * @tx_lacpdu_frms: Count of LACPDUs transmitted for mac the link. 1020 * @tx_marker_pdu_frms: Count of Marker PDUs transmitted for mac the 1021 * link. 1022 * @tx_marker_resp_pdu_frms: Count of Marker Response PDUs transmitted 1023 * for mac the link. 1024 * @tx_drop_ip: Count of dropped IP packets from the transmission path 1025 * for mac the link. 1026 * @tx_xgmii_char1_match: Count of the number of transmitted XGMII 1027 * characters that match first pattern, for mac the link. 1028 * @tx_xgmii_char2_match: Count of the number of transmitted XGMII 1029 * characters that match second pattern, for mac the link. 1030 * @tx_xgmii_column1_match: Count of the number of transmitted XGMII 1031 * columns that match first pattern, for mac the link. 1032 * @tx_xgmii_column2_match: Count of the number of transmitted XGMII 1033 * columns that match second pattern, for mac the link. 1034 * @tx_drop_frms: Count of frames dropped due to internal errors during 1035 * transmission for mac the link. 1036 * @tx_any_err_frms: Count of frames dropped due to any error during 1037 * transmission for mac the link. 1038 * @rx_ttl_frms: Count of all received MAC frames for mac the link. 1039 * @rx_vld_frms: Count of all successfully received MAC frames for mac 1040 * the link. 1041 * @rx_offld_frms: Count of all offloaded received MAC frames for mac 1042 * the link. 1043 * @rx_ttl_eth_octets: Count of total octets of received frames, not 1044 * including framing characters for mac the link. 1045 * @rx_data_octets: Count of data and padding octets of successfully 1046 * received frames for mac the link. 1047 * @rx_offld_octets: Count of total octets, not including framing 1048 * characters, of offloaded received frames for mac the link. 1049 * @rx_vld_mcst_frms: Count of successfully received multicast MAC 1050 * frames for mac the link. 1051 * @rx_vld_bcst_frms: Count of successfully received broadcast MAC 1052 * frames for mac the link. 1053 * @rx_accepted_ucst_frms: Count of successfully received unicast MAC 1054 * frames for mac the link. 1055 * @rx_accepted_nucst_frms: Count of successfully received non-unicast 1056 * MAC frames for mac the link. 1057 * @rx_tagged_frms: Count of received frames containing a VLAN tag for 1058 * mac the link. 1059 * @rx_long_frms: Count of received frames that are longer than 1060 * RX_MAX_PYLD_LEN + 18 bytes (+ 22 bytes if VLAN-tagged) for mac the link. 1061 * @rx_usized_frms: Count of received frames of length less than 64 1062 * octets, for mac the link. 1063 * @rx_osized_frms: Count of received frames of length more than 1518 1064 * octets for mac the link. 1065 * @rx_frag_frms: Count of received frames of length less than 64 1066 * octets that had bad FCS, for mac the link. 1067 * @rx_jabber_frms: Count of received frames of length more than 1518 1068 * octets that had bad FCS, for mac the link. 1069 * @rx_ttl_64_frms: Count of all received MAC frames with length of 1070 * exactly 64 octets, for mac the link. 1071 * @rx_ttl_65_127_frms: Count of all received MAC frames with length 1072 * of between 65 and 127 octets inclusive, for mac the link. 1073 * @rx_ttl_128_255_frms: Count of all received MAC frames with length 1074 * of between 128 and 255 octets inclusive, for mac the link. 1075 * @rx_ttl_256_511_frms: Count of all received MAC frames with length 1076 * of between 246 and 511 octets inclusive, for mac the link. 1077 * @rx_ttl_512_1023_frms: Count of all received MAC frames with length 1078 * of between 512 and 1023 octets inclusive, for mac the link. 1079 * @rx_ttl_1024_1518_frms: Count of all received MAC frames with length 1080 * of between 1024 and 1518 octets inclusive, for mac the link. 1081 * @rx_ttl_1519_4095_frms: Count of all received MAC frames with length 1082 * of between 1519 and 4095 octets inclusive, for mac the link. 1083 * @rx_ttl_40956_8191_frms: Count of all received MAC frames with length 1084 * of between 4096 and 8191 octets inclusive, for mac the link. 1085 * @rx_ttl_8192_max_frms: Count of all received MAC frames with length 1086 * of between 8192 and RX_MAX_PYLD_LEN+18 octets inclusive, for mac the link. 1087 * @rx_ttl_gt_max_frms: Count of all received MAC frames with length 1088 * exceeding RX_MAX_PYLD_LEN+18 octets inclusive, for mac the link. 1089 * @rx_ip: Count of received IP datagrams, for mac the link. 1090 * @rx_accepted_ip: Count of received and accepted IP datagrams, 1091 * for mac the link. 1092 * @rx_ip_octets: Count of number of octets in received IP datagrams, 1093 * for mac the link. 1094 * @rx_hdr_err_ip: Count of received IP datagrams that are discarded 1095 * due to IP header errors, for mac the link. 1096 * @rx_icmp: Count of received ICMP messages for mac the link. 1097 * @rx_tcp: Count of received TCP segments for mac the link. 1098 * @rx_udp: Count of received UDP datagrams for mac the link. 1099 * @rx_err_tcp: Count of received TCP segments containing errors for 1100 * mac the link. 1101 * @rx_pause_cnt: Count of number of pause quanta that the MAC has 1102 * been in the paused state, for mac the link. 1103 * @rx_pause_ctrl_frms: Count of received MAC PAUSE control frames for 1104 * mac the link. 1105 * @rx_unsup_ctrl_frms: Count of received MAC control frames that do 1106 * not contain the PAUSE opcode for mac the link. 1107 * @rx_fcs_err_frms: Count of received MAC frames that do not pass FCS 1108 * for mac the link. 1109 * @rx_in_rng_len_err_frms: Count of received frames with a length/type 1110 * field value between 46 and 1500 inclusive, that does not match the number 1111 * of data octets received, for mac the link. 1112 * @rx_out_rng_len_err_frms: Count of received frames with length/type 1113 * field between 1501 and 1535 decimal, inclusive. for mac the link. 1114 * @rx_drop_frms: Count of dropped frames from receive path for mac 1115 * the link. 1116 * @rx_discarded_frms: Count of discarded frames from receive path for 1117 * mac the link. 1118 * @rx_drop_ip: Count of droppen IP datagrams from receive path for 1119 * mac the link. 1120 * @rx_err_drp_udp: Count of droppen UDP datagrams from receive path 1121 * for mac the link. 1122 * @rx_lacpdu_frms: Count of valid LACPDUs received for mac the link. 1123 * @rx_marker_pdu_frms: Count of valid Marker PDUs received for mac 1124 * the link. 1125 * @rx_marker_resp_pdu_frms: Count of valid Marker Response PDUs 1126 * received for mac the link. 1127 * @rx_unknown_pdu_frms: Count of unknown PDUs received for mac the link. 1128 * @rx_illegal_pdu_frms: Count of illegal PDUs received for mac the link. 1129 * @rx_fcs_discard: Count of discarded PDUs received for mac the link. 1130 * @rx_len_discard: Count of received frames that were discarded 1131 * because of an invalid frame length, for mac the link. 1132 * @rx_len_discard: Count of received frames that were discarded 1133 * because of an invalid destination MAC address, for mac the link. 1134 * @rx_pf_discard: Count of received frames that were discarded for 1135 * mac the link. 1136 * @rx_trash_discard: Count of received frames that were steered to the 1137 * trash queue for mac the link. 1138 * @rx_rts_discard: Count of received frames that were discarded by RTS 1139 * logic for mac the link. 1140 * @rx_wol_discard: Count of received frames that were discarded by WOL 1141 * logic for mac the link. 1142 * @rx_red_discard: Count of received frames that were discarded by RED 1143 * logic for mac the link. 1144 * @rx_ingm_full_discard: Count of received frames that were discarded 1145 * because the internal ingress memory was full for mac the link. 1146 * @rx_xgmii_data_err_cnt: Count of unexpected control characters 1147 * during normal data transmission for mac the link. 1148 * @rx_xgmii_ctrl_err_cnt: Count of unexpected or misplaced control 1149 * characters occuring between times of normal data transmission for mac 1150 * the link. 1151 * @rx_xgmii_err_sym: Count of the number of symbol errors in the 1152 * received XGMII data for mac the link. 1153 * @rx_xgmii_char1_match: Count of the number of XGMII characters 1154 * that match first pattern defined in MAC_STATS_RX_XGMII_CHAR_LINK_N. 1155 * @rx_xgmii_char2_match: Count of the number of XGMII characters 1156 * that match second pattern defined in MAC_STATS_RX_XGMII_CHAR_LINK_N. 1157 * @rx_xgmii_column1_match: Count of the number of XGMII columns 1158 * that match a pattern defined in MAC_STATS_RX_XGMII_COLUMN1_LINK_N. 1159 * @rx_xgmii_column2_match: Count of the number of XGMII columns 1160 * that match a pattern defined in MAC_STATS_RX_XGMII_COLUMN1_LINK_N. 1161 * @rx_local_fault: Count of the number of local faults for mac the link. 1162 * @rx_remote_fault: Count of the number of remote faults for mac the 1163 * link. 1164 * @rx_queue_full: Count of the number of frame destined for a full 1165 * queue for mac the link. 1166 */ 1167 typedef struct xge_hal_stats_link_info_t { 1168 u64 tx_frms; 1169 u64 tx_ttl_eth_octets; 1170 u64 tx_data_octets; 1171 u64 tx_mcst_frms; 1172 u64 tx_bcst_frms; 1173 u64 tx_ucst_frms; 1174 u64 tx_tagged_frms; 1175 u64 tx_vld_ip; 1176 u64 tx_vld_ip_octets; 1177 u64 tx_icmp; 1178 u64 tx_tcp; 1179 u64 tx_rst_tcp; 1180 u64 tx_udp; 1181 u64 tx_unknown_protocol; 1182 u64 tx_parse_error; 1183 u64 tx_pause_ctrl_frms; 1184 u64 tx_lacpdu_frms; 1185 u64 tx_marker_pdu_frms; 1186 u64 tx_marker_resp_pdu_frms; 1187 u64 tx_drop_ip; 1188 u64 tx_xgmii_char1_match; 1189 u64 tx_xgmii_char2_match; 1190 u64 tx_xgmii_column1_match; 1191 u64 tx_xgmii_column2_match; 1192 u64 tx_drop_frms; 1193 u64 tx_any_err_frms; 1194 u64 rx_ttl_frms; 1195 u64 rx_vld_frms; 1196 u64 rx_offld_frms; 1197 u64 rx_ttl_eth_octets; 1198 u64 rx_data_octets; 1199 u64 rx_offld_octets; 1200 u64 rx_vld_mcst_frms; 1201 u64 rx_vld_bcst_frms; 1202 u64 rx_accepted_ucst_frms; 1203 u64 rx_accepted_nucst_frms; 1204 u64 rx_tagged_frms; 1205 u64 rx_long_frms; 1206 u64 rx_usized_frms; 1207 u64 rx_osized_frms; 1208 u64 rx_frag_frms; 1209 u64 rx_jabber_frms; 1210 u64 rx_ttl_64_frms; 1211 u64 rx_ttl_65_127_frms; 1212 u64 rx_ttl_128_255_frms; 1213 u64 rx_ttl_256_511_frms; 1214 u64 rx_ttl_512_1023_frms; 1215 u64 rx_ttl_1024_1518_frms; 1216 u64 rx_ttl_1519_4095_frms; 1217 u64 rx_ttl_40956_8191_frms; 1218 u64 rx_ttl_8192_max_frms; 1219 u64 rx_ttl_gt_max_frms; 1220 u64 rx_ip; 1221 u64 rx_ip_octets; 1222 u64 rx_hdr_err_ip; 1223 u64 rx_icmp; 1224 u64 rx_tcp; 1225 u64 rx_udp; 1226 u64 rx_err_tcp; 1227 u64 rx_pause_cnt; 1228 u64 rx_pause_ctrl_frms; 1229 u64 rx_unsup_ctrl_frms; 1230 u64 rx_in_rng_len_err_frms; 1231 u64 rx_out_rng_len_err_frms; 1232 u64 rx_drop_frms; 1233 u64 rx_discarded_frms; 1234 u64 rx_drop_ip; 1235 u64 rx_err_drp_udp; 1236 u64 rx_lacpdu_frms; 1237 u64 rx_marker_pdu_frms; 1238 u64 rx_marker_resp_pdu_frms; 1239 u64 rx_unknown_pdu_frms; 1240 u64 rx_illegal_pdu_frms; 1241 u64 rx_fcs_discard; 1242 u64 rx_len_discard; 1243 u64 rx_pf_discard; 1244 u64 rx_trash_discard; 1245 u64 rx_rts_discard; 1246 u64 rx_wol_discard; 1247 u64 rx_red_discard; 1248 u64 rx_ingm_full_discard; 1249 u64 rx_xgmii_data_err_cnt; 1250 u64 rx_xgmii_ctrl_err_cnt; 1251 u64 rx_xgmii_err_sym; 1252 u64 rx_xgmii_char1_match; 1253 u64 rx_xgmii_char2_match; 1254 u64 rx_xgmii_column1_match; 1255 u64 rx_xgmii_column2_match; 1256 u64 rx_local_fault; 1257 u64 rx_remote_fault; 1258 u64 rx_queue_full; 1259 }xge_hal_stats_link_info_t; 1260 1261 /** 1262 * struct xge_hal_stats_aggr_info_t - XGMAC statistics for an aggregator 1263 * 1264 * @tx_frms: Count of data frames transmitted for the aggregator. 1265 * @tx_mcst_frms: Count of multicast data frames transmitted for 1266 * the aggregator. 1267 * @tx_bcst_frms: Count of broadcast data frames transmitted for 1268 * the aggregator. 1269 * @tx_discarded_frms: Count of discarded data frames transmitted for 1270 * the aggregator. 1271 * @tx_errored_frms: Count of errored data frames transmitted for 1272 * the aggregator. 1273 * @rx_frms: Count of received frames for aggregators 1274 * @rx_data_octets: Count of data and padding octets of frames received 1275 * the aggregator. 1276 * @rx_mcst_frms: Count of multicast frames received the aggregator. 1277 * @rx_bcst_frms: Count of broadast frames received the aggregator. 1278 * @rx_discarded_frms: Count of discarded frames received the aggregator. 1279 * @rx_errored_frms: Count of errored frames received the aggregator. 1280 * @rx_unknown_protocol_frms: Count of unknown protocol frames received 1281 * the aggregator. 1282 */ 1283 typedef struct xge_hal_stats_aggr_info_t { 1284 u64 tx_frms; 1285 u64 tx_mcst_frms; 1286 u64 tx_bcst_frms; 1287 u64 tx_discarded_frms; 1288 u64 tx_errored_frms; 1289 u64 rx_frms; 1290 u64 rx_data_octets; 1291 u64 rx_mcst_frms; 1292 u64 rx_bcst_frms; 1293 u64 rx_discarded_frms; 1294 u64 rx_errored_frms; 1295 u64 rx_unknown_protocol_frms; 1296 }xge_hal_stats_aggr_info_t; 1297 1298 /** 1299 * struct xge_hal_stats_vpath_info_t - XGMAC statistics for a vpath. 1300 * 1301 * @tx_frms: Count of transmitted MAC frames for the vpath. 1302 * @tx_ttl_eth_octets: Count of total octets of transmitted frames 1303 * for the vpath. 1304 * @tx_data_octets: Count of data and padding octets of transmitted 1305 * frames for the vpath. 1306 * @tx_mcst_frms: Count of multicast MAC frames for the vpath. 1307 * @tx_bcst_frms: Count of broadcast MAC frames for the vpath. 1308 * @tx_ucst_frms: Count of unicast MAC frames for the vpath. 1309 * @tx_tagged_frms: Count of transmitted frames containing a VLAN 1310 * tag for the vpath. 1311 * @tx_vld_ip: Count of transmitted IP datagrams for the vpath. 1312 * @tx_vld_ip_octets: Count of transmitted IP octets for the vpath. 1313 * @tx_icmp: Count of transmitted ICMP messages for the vpath. 1314 * @tx_tcp: Count of transmitted TCP segments for the vpath. 1315 * @tx_rst_tcp: Count of transmitted TCP segments containing the RST 1316 * flag the vpath. 1317 * @tx_udp: Count of transmitted UDP datagrams for the vpath. 1318 * @tx_unknown_protocol: Count of transmitted packets of unknown 1319 * protocol for the vpath. 1320 * @tx_parse_error: Count of transmitted packets with parsing errors 1321 * for the vpath. 1322 * @rx_ttl_frms: Count of all received MAC frames for the vpath. 1323 * @rx_vld_frms: Count of all successfully received MAC frames for 1324 * the vpath. 1325 * @rx_offld_frms: Count of all offloaded received MAC frames for 1326 * the vpath. 1327 * @rx_ttl_eth_octets: Count of total octets of received frames, not 1328 * including framing characters for the vpath. 1329 * @rx_data_octets: Count of data and padding octets of successfully 1330 * received frames for the vpath. 1331 * @rx_offld_octets: Count of total octets, not including framing 1332 * characters, of offloaded received frames for the vpath. 1333 * @rx_vld_mcst_frms: Count of successfully received multicast MAC 1334 * frames for the vpath. 1335 * @rx_vld_bcst_frms: Count of successfully received broadcast MAC 1336 * frames for the vpath. 1337 * @rx_accepted_ucst_frms: Count of successfully received unicast 1338 * MAC frames for the vpath. 1339 * @rx_accepted_nucst_frms: Count of successfully received 1340 * non-unicast MAC frames for the vpath. 1341 * @rx_tagged_frms: Count of received frames containing a VLAN tag 1342 * for the vpath. 1343 * @rx_long_frms: Count of received frames that are longer than 1344 * RX_MAX_PYLD_LEN + 18 bytes (+ 22 bytes if VLAN-tagged) for the vpath. 1345 * @rx_usized_frms: Count of received frames of length less than 64 1346 * octets, for the vpath. 1347 * @rx_usized_frms: Count of received frames of length more than 1348 * 1518 octets, for the vpath. 1349 * @rx_osized_frms: Count of received frames of length more than 1350 * 1518 octets for the vpath. 1351 * @rx_frag_frms: Count of received frames of length less than 64 1352 * octets that had bad FCS, for the vpath. 1353 * @rx_jabber_frms: Count of received frames of length more than 1354 * 1518 octets that had bad FCS, for the vpath. 1355 * @rx_ttl_64_frms: Count of all received MAC frames with length of 1356 * exactly 64 octets, for the vpath. 1357 * @rx_ttl_65_127_frms: Count of all received MAC frames with length 1358 * of between 65 and 127 octets inclusive, for the vpath. 1359 * @rx_ttl_128_255_frms: Count of all received MAC frames with 1360 * length of between 128 and 255 octets inclusive, for the vpath. 1361 * @rx_ttl_256_511_frms: Count of all received MAC frames with 1362 * length of between 246 and 511 octets inclusive, for the vpath. 1363 * @rx_ttl_512_1023_frms: Count of all received MAC frames with 1364 * length of between 512 and 1023 octets inclusive, for the vpath. 1365 * @rx_ttl_1024_1518_frms: Count of all received MAC frames with 1366 * length of between 1024 and 1518 octets inclusive, for the vpath. 1367 * @rx_ttl_1519_4095_frms: Count of all received MAC frames with 1368 * length of between 1519 and 4095 octets inclusive, for the vpath. 1369 * @rx_ttl_40956_8191_frms: Count of all received MAC frames with 1370 * of between 4096 and 8191 octets inclusive, for the vpath. 1371 * @rx_ttl_8192_max_frms: Count of all received MAC frames with 1372 * length of between 8192 and RX_MAX_PYLD_LEN+18 octets inclusive, for the 1373 * vpath. 1374 * @rx_ttl_gt_max_frms: Count of all received MAC frames with length 1375 * exceeding RX_MAX_PYLD_LEN+18 octets inclusive, for the vpath. 1376 * @rx_ip: Count of received IP datagrams, for the vpath. 1377 * @rx_accepted_ip: Count of received and accepted IP datagrams, 1378 * for the vpath. 1379 * @rx_ip_octets: Count of number of octets in received IP datagrams 1380 * for the vpath. 1381 * @rx_hdr_err_ip: Count of received IP datagrams that are discarded 1382 * due to IP header errors, for the vpath. 1383 * @rx_icmp: Count of received ICMP messages for the vpath. 1384 * @rx_tcp: Count of received TCP segments for the vpath. 1385 * @rx_udp: Count of received UDP datagrams for the vpath. 1386 * @rx_err_tcp: Count of received TCP segments containing errors for 1387 * the vpath. 1388 * @rx_mpa_ok_frms: Count of received frames that pass the MPA 1389 * checks for vptah. 1390 * @rx_mpa_crc_fail_frms: Count of received frames that fail the MPA 1391 * CRC check for the vpath. 1392 * @rx_mpa_mrk_fail_frms: Count of received frames that fail the 1393 * MPA marker check for the vpath. 1394 * @rx_mpa_len_fail_frms: Count of received frames that fail the MPA 1395 * length check for the vpath. 1396 * @rx_wol_frms: Count of received "magic packet" frames for 1397 * the vpath. 1398 */ 1399 typedef struct xge_hal_stats_vpath_info_t { 1400 u64 tx_frms; 1401 u64 tx_ttl_eth_octets; 1402 u64 tx_data_octets; 1403 u64 tx_mcst_frms; 1404 u64 tx_bcst_frms; 1405 u64 tx_ucst_frms; 1406 u64 tx_tagged_frms; 1407 u64 tx_vld_ip; 1408 u64 tx_vld_ip_octets; 1409 u64 tx_icmp; 1410 u64 tx_tcp; 1411 u64 tx_rst_tcp; 1412 u64 tx_udp; 1413 u64 tx_unknown_protocol; 1414 u64 tx_parse_error; 1415 u64 rx_ttl_frms; 1416 u64 rx_vld_frms; 1417 u64 rx_offld_frms; 1418 u64 rx_ttl_eth_octets; 1419 u64 rx_data_octets; 1420 u64 rx_offld_octets; 1421 u64 rx_vld_mcst_frms; 1422 u64 rx_vld_bcst_frms; 1423 u64 rx_accepted_ucst_frms; 1424 u64 rx_accepted_nucst_frms; 1425 u64 rx_tagged_frms; 1426 u64 rx_long_frms; 1427 u64 rx_usized_frms; 1428 u64 rx_osized_frms; 1429 u64 rx_frag_frms; 1430 u64 rx_jabber_frms; 1431 u64 rx_ttl_64_frms; 1432 u64 rx_ttl_65_127_frms; 1433 u64 rx_ttl_128_255_frms; 1434 u64 rx_ttl_256_511_frms; 1435 u64 rx_ttl_512_1023_frms; 1436 u64 rx_ttl_1024_1518_frms; 1437 u64 rx_ttl_1519_4095_frms; 1438 u64 rx_ttl_40956_8191_frms; 1439 u64 rx_ttl_8192_max_frms; 1440 u64 rx_ttl_gt_max_frms; 1441 u64 rx_ip; 1442 u64 rx_accepted_ip; 1443 u64 rx_ip_octets; 1444 u64 rx_hdr_err_ip; 1445 u64 rx_icmp; 1446 u64 rx_tcp; 1447 u64 rx_udp; 1448 u64 rx_err_tcp; 1449 u64 rx_mpa_ok_frms; 1450 u64 rx_mpa_crc_fail_frms; 1451 u64 rx_mpa_mrk_fail_frms; 1452 u64 rx_mpa_len_fail_frms; 1453 u64 rx_wol_frms; 1454 }xge_hal_stats_vpath_info_t; 1455 1456 /** 1457 * struct xge_hal_stats_pcim_info_t - Contains PCIM statistics 1458 * 1459 * @link_info: PCIM links info for link 0, 1, and 2. 1460 * @aggr_info: PCIM aggregators info for aggregator 0 and 1. 1461 * See also: xge_hal_stats_link_info_t{}, xge_hal_stats_aggr_info_t{}. 1462 */ 1463 typedef struct xge_hal_stats_pcim_info_t { 1464 xge_hal_stats_link_info_t link_info[XGE_HAL_MAC_LINKS]; 1465 xge_hal_stats_aggr_info_t aggr_info[XGE_HAL_MAC_AGGREGATORS]; 1466 }xge_hal_stats_pcim_info_t; 1467 1468 /** 1469 * struct xge_hal_stats_t - Contains HAL per-device statistics, 1470 * including hw. 1471 * @devh: HAL device handle. 1472 * @dma_addr: DMA addres of the %hw_info. Given to device to fill-in the stats. 1473 * @hw_info_dmah: DMA handle used to map hw statistics onto the device memory 1474 * space. 1475 * @hw_info_dma_acch: One more DMA handle used subsequently to free the 1476 * DMA object. Note that this and the previous handle have 1477 * physical meaning for Solaris; on Windows and Linux the 1478 * corresponding value will be simply pointer to PCI device. 1479 * 1480 * @hw_info: Xframe statistics maintained by the hardware. 1481 * @hw_info_saved: TBD 1482 * @hw_info_latest: TBD 1483 * @pcim_info: Xframe PCIM statistics maintained by the hardware. 1484 * @pcim_info_saved: TBD 1485 * @pcim_info_latest: TBD 1486 * @sw_dev_info_stats: HAL's "soft" device informational statistics, e.g. number 1487 * of completions per interrupt. 1488 * @sw_dev_err_stats: HAL's "soft" device error statistics. 1489 * 1490 * @is_initialized: True, if all the subordinate structures are allocated and 1491 * initialized. 1492 * @is_enabled: True, if device stats collection is enabled. 1493 * 1494 * Structure-container of HAL per-device statistics. Note that per-channel 1495 * statistics are kept in separate structures under HAL's fifo and ring 1496 * channels. 1497 * See also: xge_hal_stats_hw_info_t{}, xge_hal_stats_sw_err_t{}, 1498 * xge_hal_stats_device_info_t{}. 1499 * See also: xge_hal_stats_channel_info_t{}. 1500 */ 1501 typedef struct xge_hal_stats_t { 1502 /* handles */ 1503 xge_hal_device_h devh; 1504 dma_addr_t dma_addr; 1505 pci_dma_h hw_info_dmah; 1506 pci_dma_acc_h hw_info_dma_acch; 1507 1508 /* HAL device hardware statistics */ 1509 xge_hal_stats_hw_info_t *hw_info; 1510 xge_hal_stats_hw_info_t hw_info_saved; 1511 xge_hal_stats_hw_info_t hw_info_latest; 1512 1513 /* HAL device hardware statistics for XFRAME ER */ 1514 xge_hal_stats_pcim_info_t *pcim_info; 1515 xge_hal_stats_pcim_info_t *pcim_info_saved; 1516 xge_hal_stats_pcim_info_t *pcim_info_latest; 1517 1518 /* HAL device "soft" stats */ 1519 xge_hal_stats_sw_err_t sw_dev_err_stats; 1520 xge_hal_stats_device_info_t sw_dev_info_stats; 1521 1522 /* flags */ 1523 int is_initialized; 1524 int is_enabled; 1525 } xge_hal_stats_t; 1526 1527 /* ========================== STATS PRIVATE API ========================= */ 1528 1529 xge_hal_status_e __hal_stats_initialize(xge_hal_stats_t *stats, 1530 xge_hal_device_h devh); 1531 1532 void __hal_stats_terminate(xge_hal_stats_t *stats); 1533 1534 void __hal_stats_enable(xge_hal_stats_t *stats); 1535 1536 void __hal_stats_disable(xge_hal_stats_t *stats); 1537 1538 void __hal_stats_soft_reset(xge_hal_device_h devh, int reset_all); 1539 1540 /* ========================== STATS PUBLIC API ========================= */ 1541 1542 xge_hal_status_e xge_hal_stats_hw(xge_hal_device_h devh, 1543 xge_hal_stats_hw_info_t **hw_info); 1544 1545 xge_hal_status_e xge_hal_stats_pcim(xge_hal_device_h devh, 1546 xge_hal_stats_pcim_info_t **pcim_info); 1547 1548 xge_hal_status_e xge_hal_stats_device(xge_hal_device_h devh, 1549 xge_hal_stats_device_info_t **device_info); 1550 1551 xge_hal_status_e xge_hal_stats_channel(xge_hal_channel_h channelh, 1552 xge_hal_stats_channel_info_t **channel_info); 1553 1554 xge_hal_status_e xge_hal_stats_reset(xge_hal_device_h devh); 1555 1556 1557 __EXTERN_END_DECLS 1558 1559 #endif /* XGE_HAL_STATS_H */ 1560