Documentation / networking / device_drivers / ethernet / mellanox / mlx5 / counters.rst


Based on kernel version 6.9. Page generated on 2024-05-14 10:02 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305
.. SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
.. include:: <isonum.txt>

================
Ethtool counters
================

:Copyright: |copy| 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

Contents
========

- `Overview`_
- `Groups`_
- `Types`_
- `Descriptions`_

Overview
========

There are several counter groups based on where the counter is being counted. In
addition, each group of counters may have different counter types.

These counter groups are based on which component in a networking setup,
illustrated below, that they describe::

                                                  ----------------------------------------
                                                  |                                      |
    ----------------------------------------    ---------------------------------------- |
    |              Hypervisor              |    |                  VM                  | |
    |                                      |    |                                      | |
    | -------------------  --------------- |    | -------------------  --------------- | |
    | | Ethernet driver |  | RDMA driver | |    | | Ethernet driver |  | RDMA driver | | |
    | -------------------  --------------- |    | -------------------  --------------- | |
    |           |                 |        |    |           |                 |        | |
    |           -------------------        |    |           -------------------        | |
    |                   |                  |    |                   |                  |--
    ----------------------------------------    ----------------------------------------
                        |                                           |
            -------------               -----------------------------
            |                           |
         ------                      ------ ------ ------         ------      ------      ------
    -----| PF |----------------------| VF |-| VF |-| VF |-----  --| PF |--- --| PF |--- --| PF |---
    |    ------                      ------ ------ ------    |  | ------  | | ------  | | ------  |
    |                                                        |  |         | |         | |         |
    |                                                        |  |         | |         | |         |
    |                                                        |  |         | |         | |         |
    | eSwitch                                                |  | eSwitch | | eSwitch | | eSwitch |
    ----------------------------------------------------------  ----------- ----------- -----------
               -------------------------------------------------------------------------------
               |                                                                             |
               |                                                                             |
               | Uplink (no counters)                                                        |
               -------------------------------------------------------------------------------
                       ---------------------------------------------------------------
                       |                                                             |
                       |                                                             |
                       | MPFS (no counters)                                          |
                       ---------------------------------------------------------------
                                                     |
                                                     |
                                                     | Port

Groups
======

Ring
  Software counters populated by the driver stack.

Netdev
  An aggregation of software ring counters.

vPort counters
  Traffic counters and drops due to steering or no buffers. May indicate issues
  with NIC. These counters include Ethernet traffic counters (including Raw
  Ethernet) and RDMA/RoCE traffic counters.

Physical port counters
  Counters that collect statistics about the PFs and VFs. May indicate issues
  with NIC, link, or network. This measuring point holds information on
  standardized counters like IEEE 802.3, RFC2863, RFC 2819, RFC 3635 and
  additional counters like flow control, FEC and more. Physical port counters
  are not exposed to virtual machines.

Priority Port Counters
  A set of the physical port counters, per priority per port.

Types
=====

Counters are divided into three types.

Traffic Informative Counters
  Counters which count traffic. These counters can be used for load estimation
  or for general debug.

Traffic Acceleration Counters
  Counters which count traffic that was accelerated by Mellanox driver or by
  hardware. The counters are an additional layer to the informative counter set,
  and the same traffic is counted in both informative and acceleration counters.

.. [#accel] Traffic acceleration counter.

Error Counters
  Increment of these counters might indicate a problem. Each of these counters
  has an explanation and correction action.

Statistic can be fetched via the `ip link` or `ethtool` commands. `ethtool`
provides more detailed information.::

    ip –s link show <if-name>
    ethtool -S <if-name>

Descriptions
============

XSK, PTP, and QoS counters that are similar to counters defined previously will
not be separately listed. For example, `ptp_tx[i]_packets` will not be
explicitly documented since `tx[i]_packets` describes the behavior of both
counters, except `ptp_tx[i]_packets` is only counted when precision time
protocol is used.

Ring / Netdev Counter
----------------------------
The following counters are available per ring or software port.

These counters provide information on the amount of traffic that was accelerated
by the NIC. The counters are counting the accelerated traffic in addition to the
standard counters which counts it (i.e. accelerated traffic is counted twice).

The counter names in the table below refers to both ring and port counters. The
notation for ring counters includes the [i] index without the braces. The
notation for port counters doesn't include the [i]. A counter name
`rx[i]_packets` will be printed as `rx0_packets` for ring 0 and `rx_packets` for
the software port.

.. flat-table:: Ring / Software Port Counter Table
   :widths: 2 3 1

   * - Counter
     - Description
     - Type

   * - `rx[i]_packets`
     - The number of packets received on ring i.
     - Informative

   * - `rx[i]_bytes`
     - The number of bytes received on ring i.
     - Informative

   * - `tx[i]_packets`
     - The number of packets transmitted on ring i.
     - Informative

   * - `tx[i]_bytes`
     - The number of bytes transmitted on ring i.
     - Informative

   * - `tx[i]_recover`
     - The number of times the SQ was recovered.
     - Error

   * - `tx[i]_cqes`
     - Number of CQEs events on SQ issued on ring i.
     - Informative

   * - `tx[i]_cqe_err`
     - The number of error CQEs encountered on the SQ for ring i.
     - Error

   * - `tx[i]_tso_packets`
     - The number of TSO packets transmitted on ring i [#accel]_.
     - Acceleration

   * - `tx[i]_tso_bytes`
     - The number of TSO bytes transmitted on ring i [#accel]_.
     - Acceleration

   * - `tx[i]_tso_inner_packets`
     - The number of TSO packets which are indicated to be carry internal
       encapsulation transmitted on ring i [#accel]_.
     - Acceleration

   * - `tx[i]_tso_inner_bytes`
     - The number of TSO bytes which are indicated to be carry internal
       encapsulation transmitted on ring i [#accel]_.
     - Acceleration

   * - `rx[i]_gro_packets`
     - Number of received packets processed using hardware-accelerated GRO. The
       number of hardware GRO offloaded packets received on ring i.
     - Acceleration

   * - `rx[i]_gro_bytes`
     - Number of received bytes processed using hardware-accelerated GRO. The
       number of hardware GRO offloaded bytes received on ring i.
     - Acceleration

   * - `rx[i]_gro_skbs`
     - The number of receive SKBs constructed while performing
       hardware-accelerated GRO.
     - Informative

   * - `rx[i]_gro_match_packets`
     - Number of received packets processed using hardware-accelerated GRO that
       met the flow table match criteria.
     - Informative

   * - `rx[i]_gro_large_hds`
     - Number of receive packets using hardware-accelerated GRO that have large
       headers that require additional memory to be allocated.
     - Informative

   * - `rx[i]_lro_packets`
     - The number of LRO packets received on ring i [#accel]_.
     - Acceleration

   * - `rx[i]_lro_bytes`
     - The number of LRO bytes received on ring i [#accel]_.
     - Acceleration

   * - `rx[i]_ecn_mark`
     - The number of received packets where the ECN mark was turned on.
     - Informative

   * - `rx_oversize_pkts_buffer`
     - The number of dropped received packets due to length which arrived to RQ
       and exceed software buffer size allocated by the device for incoming
       traffic. It might imply that the device MTU is larger than the software
       buffers size.
     - Error

   * - `rx_oversize_pkts_sw_drop`
     - Number of received packets dropped in software because the CQE data is
       larger than the MTU size.
     - Error

   * - `rx[i]_csum_unnecessary`
     - Packets received with a `CHECKSUM_UNNECESSARY` on ring i [#accel]_.
     - Acceleration

   * - `rx[i]_csum_unnecessary_inner`
     - Packets received with inner encapsulation with a `CHECKSUM_UNNECESSARY`
       on ring i [#accel]_.
     - Acceleration

   * - `rx[i]_csum_none`
     - Packets received with a `CHECKSUM_NONE` on ring i [#accel]_.
     - Acceleration

   * - `rx[i]_csum_complete`
     - Packets received with a `CHECKSUM_COMPLETE` on ring i [#accel]_.
     - Acceleration

   * - `rx[i]_csum_complete_tail`
     - Number of received packets that had checksum calculation computed,
       potentially needed padding, and were able to do so with
       `CHECKSUM_PARTIAL`.
     - Informative

   * - `rx[i]_csum_complete_tail_slow`
     - Number of received packets that need padding larger than eight bytes for
       the checksum.
     - Informative

   * - `tx[i]_csum_partial`
     - Packets transmitted with a `CHECKSUM_PARTIAL` on ring i [#accel]_.
     - Acceleration

   * - `tx[i]_csum_partial_inner`
     - Packets transmitted with inner encapsulation with a `CHECKSUM_PARTIAL` on
       ring i [#accel]_.
     - Acceleration

   * - `tx[i]_csum_none`
     - Packets transmitted with no hardware checksum acceleration on ring i.
     - Informative

   * - `tx[i]_stopped` / `tx_queue_stopped` [#ring_global]_
     - Events where SQ was full on ring i. If this counter is increased, check
       the amount of buffers allocated for transmission.
     - Informative

   * - `tx[i]_wake` / `tx_queue_wake` [#ring_global]_
     - Events where SQ was full and has become not full on ring i.
     - Informative

   * - `tx[i]_dropped` / `tx_queue_dropped` [#ring_global]_
     - Packets transmitted that were dropped due to DMA mapping failure on
       ring i. If this counter is increased, check the amount of buffers
       allocated for transmission.
     - Error

   * - `tx[i]_nop`
     - The number of nop WQEs (empty WQEs) inserted to the SQ (related to
       ring i) due to the reach of the end of the cyclic buffer. When reaching
       near to the end of cyclic buffer the driver may add those empty WQEs to
       avoid handling a state the a WQE start in the end of the queue and ends
       in the beginning of the queue. This is a normal condition.
     - Informative

   * - `tx[i]_added_vlan_packets`
     - The number of packets sent where vlan tag insertion was offloaded to the
       hardware.
     - Acceleration

   * - `rx[i]_removed_vlan_packets`
     - The number of packets received where vlan tag stripping was offloaded to
       the hardware.
     - Acceleration

   * - `rx[i]_wqe_err`
     - The number of wrong opcodes received on ring i.
     - Error

   * - `rx[i]_mpwqe_frag`
     - The number of WQEs that failed to allocate compound page and hence
       fragmented MPWQE’s (Multi Packet WQEs) were used on ring i. If this
       counter raise, it may suggest that there is no enough memory for large
       pages, the driver allocated fragmented pages. This is not abnormal
       condition.
     - Informative

   * - `rx[i]_mpwqe_filler_cqes`
     - The number of filler CQEs events that were issued on ring i.
     - Informative

   * - `rx[i]_mpwqe_filler_strides`
     - The number of strides consumed by filler CQEs on ring i.
     - Informative

   * - `tx[i]_mpwqe_blks`
     - The number of send blocks processed from Multi-Packet WQEs (mpwqe).
     - Informative

   * - `tx[i]_mpwqe_pkts`
     - The number of send packets processed from Multi-Packet WQEs (mpwqe).
     - Informative

   * - `rx[i]_cqe_compress_blks`
     - The number of receive blocks with CQE compression on ring i [#accel]_.
     - Acceleration

   * - `rx[i]_cqe_compress_pkts`
     - The number of receive packets with CQE compression on ring i [#accel]_.
     - Acceleration

   * - `rx[i]_arfs_add`
     - The number of aRFS flow rules added to the device for direct RQ steering
       on ring i [#accel]_.
     - Acceleration

   * - `rx[i]_arfs_request_in`
     - Number of flow rules that have been requested to move into ring i for
       direct RQ steering [#accel]_.
     - Acceleration

   * - `rx[i]_arfs_request_out`
     - Number of flow rules that have been requested to move out of ring i [#accel]_.
     - Acceleration

   * - `rx[i]_arfs_expired`
     - Number of flow rules that have been expired and removed [#accel]_.
     - Acceleration

   * - `rx[i]_arfs_err`
     - Number of flow rules that failed to be added to the flow table.
     - Error

   * - `rx[i]_recover`
     - The number of times the RQ was recovered.
     - Error

   * - `tx[i]_xmit_more`
     - The number of packets sent with `xmit_more` indication set on the skbuff
       (no doorbell).
     - Acceleration

   * - `ch[i]_poll`
     - The number of invocations of NAPI poll of channel i.
     - Informative

   * - `ch[i]_arm`
     - The number of times the NAPI poll function completed and armed the
       completion queues on channel i.
     - Informative

   * - `ch[i]_aff_change`
     - The number of times the NAPI poll function explicitly stopped execution
       on a CPU due to a change in affinity, on channel i.
     - Informative

   * - `ch[i]_events`
     - The number of hard interrupt events on the completion queues of channel i.
     - Informative

   * - `ch[i]_eq_rearm`
     - The number of times the EQ was recovered.
     - Error

   * - `ch[i]_force_irq`
     - Number of times NAPI is triggered by XSK wakeups by posting a NOP to
       ICOSQ.
     - Acceleration

   * - `rx[i]_congst_umr`
     - The number of times an outstanding UMR request is delayed due to
       congestion, on ring i.
     - Informative

   * - `rx_pp_alloc_fast`
     - Number of successful fast path allocations.
     - Informative

   * - `rx_pp_alloc_slow`
     - Number of slow path order-0 allocations.
     - Informative

   * - `rx_pp_alloc_slow_high_order`
     - Number of slow path high order allocations.
     - Informative

   * - `rx_pp_alloc_empty`
     - Counter is incremented when ptr ring is empty, so a slow path allocation
       was forced.
     - Informative

   * - `rx_pp_alloc_refill`
     - Counter is incremented when an allocation which triggered a refill of the
       cache.
     - Informative

   * - `rx_pp_alloc_waive`
     - Counter is incremented when pages obtained from the ptr ring that cannot
       be added to the cache due to a NUMA mismatch.
     - Informative

   * - `rx_pp_recycle_cached`
     - Counter is incremented when recycling placed page in the page pool cache.
     - Informative

   * - `rx_pp_recycle_cache_full`
     - Counter is incremented when page pool cache was full.
     - Informative

   * - `rx_pp_recycle_ring`
     - Counter is incremented when page placed into the ptr ring.
     - Informative

   * - `rx_pp_recycle_ring_full`
     - Counter is incremented when page released from page pool because the ptr
       ring was full.
     - Informative

   * - `rx_pp_recycle_released_ref`
     - Counter is incremented when page released (and not recycled) because
       refcnt > 1.
     - Informative

   * - `rx[i]_xsk_buff_alloc_err`
     - The number of times allocating an skb or XSK buffer failed in the XSK RQ
       context.
     - Error

   * - `rx[i]_xdp_tx_xmit`
     - The number of packets forwarded back to the port due to XDP program
       `XDP_TX` action (bouncing). these packets are not counted by other
       software counters. These packets are counted by physical port and vPort
       counters.
     - Informative

   * - `rx[i]_xdp_tx_mpwqe`
     - Number of multi-packet WQEs transmitted by the netdev and `XDP_TX`-ed by
       the netdev during the RQ context.
     - Acceleration

   * - `rx[i]_xdp_tx_inlnw`
     - Number of WQE data segments transmitted where the data could be inlined
       in the WQE and then `XDP_TX`-ed during the RQ context.
     - Acceleration

   * - `rx[i]_xdp_tx_nops`
     - Number of NOP WQEBBs (WQE building blocks) received posted to the XDP SQ.
     - Acceleration

   * - `rx[i]_xdp_tx_full`
     - The number of packets that should have been forwarded back to the port
       due to `XDP_TX` action but were dropped due to full tx queue. These packets
       are not counted by other software counters. These packets are counted by
       physical port and vPort counters. You may open more rx queues and spread
       traffic rx over all queues and/or increase rx ring size.
     - Error

   * - `rx[i]_xdp_tx_err`
     - The number of times an `XDP_TX` error such as frame too long and frame
       too short occurred on `XDP_TX` ring of RX ring.
     - Error

   * - `rx[i]_xdp_tx_cqes` / `rx_xdp_tx_cqe` [#ring_global]_
     - The number of completions received on the CQ of the `XDP_TX` ring.
     - Informative

   * - `rx[i]_xdp_drop`
     - The number of packets dropped due to XDP program `XDP_DROP` action. these
       packets are not counted by other software counters. These packets are
       counted by physical port and vPort counters.
     - Informative

   * - `rx[i]_xdp_redirect`
     - The number of times an XDP redirect action was triggered on ring i.
     - Acceleration

   * - `tx[i]_xdp_xmit`
     - The number of packets redirected to the interface(due to XDP redirect).
       These packets are not counted by other software counters. These packets
       are counted by physical port and vPort counters.
     - Informative

   * - `tx[i]_xdp_full`
     - The number of packets redirected to the interface(due to XDP redirect),
       but were dropped due to full tx queue. these packets are not counted by
       other software counters. you may enlarge tx queues.
     - Informative

   * - `tx[i]_xdp_mpwqe`
     - Number of multi-packet WQEs offloaded onto the NIC that were
       `XDP_REDIRECT`-ed from other netdevs.
     - Acceleration

   * - `tx[i]_xdp_inlnw`
     - Number of WQE data segments where the data could be inlined in the WQE
       where the data segments were `XDP_REDIRECT`-ed from other netdevs.
     - Acceleration

   * - `tx[i]_xdp_nops`
     - Number of NOP WQEBBs (WQE building blocks) posted to the SQ that were
       `XDP_REDIRECT`-ed from other netdevs.
     - Acceleration

   * - `tx[i]_xdp_err`
     - The number of packets redirected to the interface(due to XDP redirect)
       but were dropped due to error such as frame too long and frame too short.
     - Error

   * - `tx[i]_xdp_cqes`
     - The number of completions received for packets redirected to the
       interface(due to XDP redirect) on the CQ.
     - Informative

   * - `tx[i]_xsk_xmit`
     - The number of packets transmitted using XSK zerocopy functionality.
     - Acceleration

   * - `tx[i]_xsk_mpwqe`
     - Number of multi-packet WQEs offloaded onto the NIC that were
       `XDP_REDIRECT`-ed from other netdevs.
     - Acceleration

   * - `tx[i]_xsk_inlnw`
     - Number of WQE data segments where the data could be inlined in the WQE
       that are transmitted using XSK zerocopy.
     - Acceleration

   * - `tx[i]_xsk_full`
     - Number of times doorbell is rung in XSK zerocopy mode when SQ is full.
     - Error

   * - `tx[i]_xsk_err`
     - Number of errors that occurred in XSK zerocopy mode such as if the data
       size is larger than the MTU size.
     - Error

   * - `tx[i]_xsk_cqes`
     - Number of CQEs processed in XSK zerocopy mode.
     - Acceleration

   * - `tx_tls_ctx`
     - Number of TLS TX HW offload contexts added to device for encryption.
     - Acceleration

   * - `tx_tls_del`
     - Number of TLS TX HW offload contexts removed from device (connection
       closed).
     - Acceleration

   * - `tx_tls_pool_alloc`
     - Number of times a unit of work is successfully allocated in the TLS HW
       offload pool.
     - Acceleration

   * - `tx_tls_pool_free`
     - Number of times a unit of work is freed in the TLS HW offload pool.
     - Acceleration

   * - `rx_tls_ctx`
     - Number of TLS RX HW offload contexts added to device for decryption.
     - Acceleration

   * - `rx_tls_del`
     - Number of TLS RX HW offload contexts deleted from device (connection has
       finished).
     - Acceleration

   * - `rx[i]_tls_decrypted_packets`
     - Number of successfully decrypted RX packets which were part of a TLS
       stream.
     - Acceleration

   * - `rx[i]_tls_decrypted_bytes`
     - Number of TLS payload bytes in RX packets which were successfully
       decrypted.
     - Acceleration

   * - `rx[i]_tls_resync_req_pkt`
     - Number of received TLS packets with a resync request.
     - Acceleration

   * - `rx[i]_tls_resync_req_start`
     - Number of times the TLS async resync request was started.
     - Acceleration

   * - `rx[i]_tls_resync_req_end`
     - Number of times the TLS async resync request properly ended with
       providing the HW tracked tcp-seq.
     - Acceleration

   * - `rx[i]_tls_resync_req_skip`
     - Number of times the TLS async resync request procedure was started but
       not properly ended.
     - Error

   * - `rx[i]_tls_resync_res_ok`
     - Number of times the TLS resync response call to the driver was
       successfully handled.
     - Acceleration

   * - `rx[i]_tls_resync_res_retry`
     - Number of times the TLS resync response call to the driver was
       reattempted when ICOSQ is full.
     - Error

   * - `rx[i]_tls_resync_res_skip`
     - Number of times the TLS resync response call to the driver was terminated
       unsuccessfully.
     - Error

   * - `rx[i]_tls_err`
     - Number of times when CQE TLS offload was problematic.
     - Error

   * - `tx[i]_tls_encrypted_packets`
     - The number of send packets that are TLS encrypted by the kernel.
     - Acceleration

   * - `tx[i]_tls_encrypted_bytes`
     - The number of send bytes that are TLS encrypted by the kernel.
     - Acceleration

   * - `tx[i]_tls_ooo`
     - Number of times out of order TLS SQE fragments were handled on ring i.
     - Acceleration

   * - `tx[i]_tls_dump_packets`
     - Number of TLS decrypted packets copied over from NIC over DMA.
     - Acceleration

   * - `tx[i]_tls_dump_bytes`
     - Number of TLS decrypted bytes copied over from NIC over DMA.
     - Acceleration

   * - `tx[i]_tls_resync_bytes`
     - Number of TLS bytes requested to be resynchronized in order to be
       decrypted.
     - Acceleration

   * - `tx[i]_tls_skip_no_sync_data`
     - Number of TLS send data that can safely be skipped / do not need to be
       decrypted.
     - Acceleration

   * - `tx[i]_tls_drop_no_sync_data`
     - Number of TLS send data that were dropped due to retransmission of TLS
       data.
     - Acceleration

   * - `ptp_cq[i]_abort`
     - Number of times a CQE has to be skipped in precision time protocol due to
       a skew between the port timestamp and CQE timestamp being greater than
       128 seconds.
     - Error

   * - `ptp_cq[i]_abort_abs_diff_ns`
     - Accumulation of time differences between the port timestamp and CQE
       timestamp when the difference is greater than 128 seconds in precision
       time protocol.
     - Error

   * - `ptp_cq[i]_late_cqe`
     - Number of times a CQE has been delivered on the PTP timestamping CQ when
       the CQE was not expected since a certain amount of time had elapsed where
       the device typically ensures not posting the CQE.
     - Error

.. [#ring_global] The corresponding ring and global counters do not share the
                  same name (i.e. do not follow the common naming scheme).

vPort Counters
--------------
Counters on the NIC port that is connected to a eSwitch.

.. flat-table:: vPort Counter Table
   :widths: 2 3 1

   * - Counter
     - Description
     - Type

   * - `rx_vport_unicast_packets`
     - Unicast packets received, steered to a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `rx_vport_unicast_bytes`
     - Unicast bytes received, steered to a port including Raw Ethernet QP/DPDK
       traffic, excluding RDMA traffic.
     - Informative

   * - `tx_vport_unicast_packets`
     - Unicast packets transmitted, steered from a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `tx_vport_unicast_bytes`
     - Unicast bytes transmitted, steered from a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `rx_vport_multicast_packets`
     - Multicast packets received, steered to a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `rx_vport_multicast_bytes`
     - Multicast bytes received, steered to a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `tx_vport_multicast_packets`
     - Multicast packets transmitted, steered from a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `tx_vport_multicast_bytes`
     - Multicast bytes transmitted, steered from a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `rx_vport_broadcast_packets`
     - Broadcast packets received, steered to a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `rx_vport_broadcast_bytes`
     - Broadcast bytes received, steered to a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `tx_vport_broadcast_packets`
     - Broadcast packets transmitted, steered from a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `tx_vport_broadcast_bytes`
     - Broadcast bytes transmitted, steered from a port including Raw Ethernet
       QP/DPDK traffic, excluding RDMA traffic.
     - Informative

   * - `rx_vport_rdma_unicast_packets`
     - RDMA unicast packets received, steered to a port (counters counts
       RoCE/UD/RC traffic) [#accel]_.
     - Acceleration

   * - `rx_vport_rdma_unicast_bytes`
     - RDMA unicast bytes received, steered to a port (counters counts
       RoCE/UD/RC traffic) [#accel]_.
     - Acceleration

   * - `tx_vport_rdma_unicast_packets`
     - RDMA unicast packets transmitted, steered from a port (counters counts
       RoCE/UD/RC traffic) [#accel]_.
     - Acceleration

   * - `tx_vport_rdma_unicast_bytes`
     - RDMA unicast bytes transmitted, steered from a port (counters counts
       RoCE/UD/RC traffic) [#accel]_.
     - Acceleration

   * - `rx_vport_rdma_multicast_packets`
     - RDMA multicast packets received, steered to a port (counters counts
       RoCE/UD/RC traffic) [#accel]_.
     - Acceleration

   * - `rx_vport_rdma_multicast_bytes`
     - RDMA multicast bytes received, steered to a port (counters counts
       RoCE/UD/RC traffic) [#accel]_.
     - Acceleration

   * - `tx_vport_rdma_multicast_packets`
     - RDMA multicast packets transmitted, steered from a port (counters counts
       RoCE/UD/RC traffic) [#accel]_.
     - Acceleration

   * - `tx_vport_rdma_multicast_bytes`
     - RDMA multicast bytes transmitted, steered from a port (counters counts
       RoCE/UD/RC traffic) [#accel]_.
     - Acceleration

   * - `vport_loopback_packets`
     - Unicast, multicast and broadcast packets that were loop-back (received
       and transmitted), IB/Eth  [#accel]_.
     - Acceleration

   * - `vport_loopback_bytes`
     - Unicast, multicast and broadcast bytes that were loop-back (received
       and transmitted), IB/Eth  [#accel]_.
     - Acceleration

   * - `rx_steer_missed_packets`
     - Number of packets that was received by the NIC, however was discarded
       because it did not match any flow in the NIC flow table.
     - Error

   * - `rx_packets`
     - Representor only: packets received, that were handled by the hypervisor.
     - Informative

   * - `rx_bytes`
     - Representor only: bytes received, that were handled by the hypervisor.
     - Informative

   * - `tx_packets`
     - Representor only: packets transmitted, that were handled by the
       hypervisor.
     - Informative

   * - `tx_bytes`
     - Representor only: bytes transmitted, that were handled by the hypervisor.
     - Informative

   * - `dev_internal_queue_oob`
     - The number of dropped packets due to lack of receive WQEs for an internal
       device RQ.
     - Error

Physical Port Counters
----------------------
The physical port counters are the counters on the external port connecting the
adapter to the network. This measuring point holds information on standardized
counters like IEEE 802.3, RFC2863, RFC 2819, RFC 3635 and additional counters
like flow control, FEC and more.

.. flat-table:: Physical Port Counter Table
   :widths: 2 3 1

   * - Counter
     - Description
     - Type

   * - `rx_packets_phy`
     - The number of packets received on the physical port. This counter doesn’t
       include packets that were discarded due to FCS, frame size and similar
       errors.
     - Informative

   * - `tx_packets_phy`
     - The number of packets transmitted on the physical port.
     - Informative

   * - `rx_bytes_phy`
     - The number of bytes received on the physical port, including Ethernet
       header and FCS.
     - Informative

   * - `tx_bytes_phy`
     - The number of bytes transmitted on the physical port.
     - Informative

   * - `rx_multicast_phy`
     - The number of multicast packets received on the physical port.
     - Informative

   * - `tx_multicast_phy`
     - The number of multicast packets transmitted on the physical port.
     - Informative

   * - `rx_broadcast_phy`
     - The number of broadcast packets received on the physical port.
     - Informative

   * - `tx_broadcast_phy`
     - The number of broadcast packets transmitted on the physical port.
     - Informative

   * - `rx_crc_errors_phy`
     - The number of dropped received packets due to FCS (Frame Check Sequence)
       error on the physical port. If this counter is increased in high rate,
       check the link quality using `rx_symbol_error_phy` and
       `rx_corrected_bits_phy` counters below.
     - Error

   * - `rx_in_range_len_errors_phy`
     - The number of received packets dropped due to length/type errors on a
       physical port.
     - Error

   * - `rx_out_of_range_len_phy`
     - The number of received packets dropped due to length greater than allowed
       on a physical port. If this counter is increasing, it implies that the
       peer connected to the adapter has a larger MTU configured. Using same MTU
       configuration shall resolve this issue.
     - Error

   * - `rx_oversize_pkts_phy`
     - The number of dropped received packets due to length which exceed MTU
       size on a physical port. If this counter is increasing, it implies that
       the peer connected to the adapter has a larger MTU configured. Using same
       MTU configuration shall resolve this issue.
     - Error

   * - `rx_symbol_err_phy`
     - The number of received packets dropped due to physical coding errors
       (symbol errors) on a physical port.
     - Error

   * - `rx_mac_control_phy`
     - The number of MAC control packets received on the physical port.
     - Informative

   * - `tx_mac_control_phy`
     - The number of MAC control packets transmitted on the physical port.
     - Informative

   * - `rx_pause_ctrl_phy`
     - The number of link layer pause packets received on a physical port. If
       this counter is increasing, it implies that the network is congested and
       cannot absorb the traffic coming from to the adapter.
     - Informative

   * - `tx_pause_ctrl_phy`
     - The number of link layer pause packets transmitted on a physical port. If
       this counter is increasing, it implies that the NIC is congested and
       cannot absorb the traffic coming from the network.
     - Informative

   * - `rx_unsupported_op_phy`
     - The number of MAC control packets received with unsupported opcode on a
       physical port.
     - Error

   * - `rx_discards_phy`
     - The number of received packets dropped due to lack of buffers on a
       physical port. If this counter is increasing, it implies that the adapter
       is congested and cannot absorb the traffic coming from the network.
     - Error

   * - `tx_discards_phy`
     - The number of packets which were discarded on transmission, even no
       errors were detected. the drop might occur due to link in down state,
       head of line drop, pause from the network, etc.
     - Error

   * - `tx_errors_phy`
     - The number of transmitted packets dropped due to a length which exceed
       MTU size on a physical port.
     - Error

   * - `rx_undersize_pkts_phy`
     - The number of received packets dropped due to length which is shorter
       than 64 bytes on a physical port. If this counter is increasing, it
       implies that the peer connected to the adapter has a non-standard MTU
       configured or malformed packet had arrived.
     - Error

   * - `rx_fragments_phy`
     - The number of received packets dropped due to a length which is shorter
       than 64 bytes and has FCS error on a physical port. If this counter is
       increasing, it implies that the peer connected to the adapter has a
       non-standard MTU configured.
     - Error

   * - `rx_jabbers_phy`
     - The number of received packets d due to a length which is longer than 64
       bytes and had FCS error on a physical port.
     - Error

   * - `rx_64_bytes_phy`
     - The number of packets received on the physical port with size of 64 bytes.
     - Informative

   * - `rx_65_to_127_bytes_phy`
     - The number of packets received on the physical port with size of 65 to
       127 bytes.
     - Informative

   * - `rx_128_to_255_bytes_phy`
     - The number of packets received on the physical port with size of 128 to
       255 bytes.
     - Informative

   * - `rx_256_to_511_bytes_phy`
     - The number of packets received on the physical port with size of 256 to
       512 bytes.
     - Informative

   * - `rx_512_to_1023_bytes_phy`
     - The number of packets received on the physical port with size of 512 to
       1023 bytes.
     - Informative

   * - `rx_1024_to_1518_bytes_phy`
     - The number of packets received on the physical port with size of 1024 to
       1518 bytes.
     - Informative

   * - `rx_1519_to_2047_bytes_phy`
     - The number of packets received on the physical port with size of 1519 to
       2047 bytes.
     - Informative

   * - `rx_2048_to_4095_bytes_phy`
     - The number of packets received on the physical port with size of 2048 to
       4095 bytes.
     - Informative

   * - `rx_4096_to_8191_bytes_phy`
     - The number of packets received on the physical port with size of 4096 to
       8191 bytes.
     - Informative

   * - `rx_8192_to_10239_bytes_phy`
     - The number of packets received on the physical port with size of 8192 to
       10239 bytes.
     - Informative

   * - `link_down_events_phy`
     - The number of times where the link operative state changed to down. In
       case this counter is increasing it may imply on port flapping. You may
       need to replace the cable/transceiver.
     - Error

   * - `rx_out_of_buffer`
     - Number of times receive queue had no software buffers allocated for the
       adapter's incoming traffic.
     - Error

   * - `module_bus_stuck`
     - The number of times that module's I\ :sup:`2`\C bus (data or clock)
       short-wire was detected. You may need to replace the cable/transceiver.
     - Error

   * - `module_high_temp`
     - The number of times that the module temperature was too high. If this
       issue persist, you may need to check the ambient temperature or replace
       the cable/transceiver module.
     - Error

   * - `module_bad_shorted`
     - The number of times that the module cables were shorted. You may need to
       replace the cable/transceiver module.
     - Error

   * - `module_unplug`
     - The number of times that module was ejected.
     - Informative

   * - `rx_buffer_passed_thres_phy`
     - The number of events where the port receive buffer was over 85% full.
     - Informative

   * - `tx_pause_storm_warning_events`
     - The number of times the device was sending pauses for a long period of
       time.
     - Informative

   * - `tx_pause_storm_error_events`
     - The number of times the device was sending pauses for a long period of
       time, reaching time out and disabling transmission of pause frames. on
       the period where pause frames were disabled, drop could have been
       occurred.
     - Error

   * - `rx[i]_buff_alloc_err`
     - Failed to allocate a buffer to received packet (or SKB) on ring i.
     - Error

   * - `rx_bits_phy`
     - This counter provides information on the total amount of traffic that
       could have been received and can be used as a guideline to measure the
       ratio of errored traffic in `rx_pcs_symbol_err_phy` and
       `rx_corrected_bits_phy`.
     - Informative

   * - `rx_pcs_symbol_err_phy`
     - This counter counts the number of symbol errors that wasn’t corrected by
       FEC correction algorithm or that FEC algorithm was not active on this
       interface. If this counter is increasing, it implies that the link
       between the NIC and the network is suffering from high BER, and that
       traffic is lost. You may need to replace the cable/transceiver. The error
       rate is the number of `rx_pcs_symbol_err_phy` divided by the number of
       `rx_bits_phy` on a specific time frame.
     - Error

   * - `rx_corrected_bits_phy`
     - The number of corrected bits on this port according to active FEC
       (RS/FC). If this counter is increasing, it implies that the link between
       the NIC and the network is suffering from high BER. The corrected bit
       rate is the number of `rx_corrected_bits_phy` divided by the number of
       `rx_bits_phy` on a specific time frame.
     - Error

   * - `rx_err_lane_[l]_phy`
     - This counter counts the number of physical raw errors per lane l index.
       The counter counts errors before FEC corrections. If this counter is
       increasing, it implies that the link between the NIC and the network is
       suffering from high BER, and that traffic might be lost. You may need to
       replace the cable/transceiver. Please check in accordance with
       `rx_corrected_bits_phy`.
     - Error

   * - `rx_global_pause`
     - The number of pause packets received on the physical port. If this
       counter is increasing, it implies that the network is congested and
       cannot absorb the traffic coming from the adapter. Note: This counter is
       only enabled when global pause mode is enabled.
     - Informative

   * - `rx_global_pause_duration`
     - The duration of pause received (in microSec) on the physical port. The
       counter represents the time the port did not send any traffic. If this
       counter is increasing, it implies that the network is congested and
       cannot absorb the traffic coming from the adapter. Note: This counter is
       only enabled when global pause mode is enabled.
     - Informative

   * - `tx_global_pause`
     - The number of pause packets transmitted on a physical port. If this
       counter is increasing, it implies that the adapter is congested and
       cannot absorb the traffic coming from the network. Note: This counter is
       only enabled when global pause mode is enabled.
     - Informative

   * - `tx_global_pause_duration`
     - The duration of pause transmitter (in microSec) on the physical port.
       Note: This counter is only enabled when global pause mode is enabled.
     - Informative

   * - `rx_global_pause_transition`
     - The number of times a transition from Xoff to Xon on the physical port
       has occurred. Note: This counter is only enabled when global pause mode
       is enabled.
     - Informative

   * - `rx_if_down_packets`
     - The number of received packets that were dropped due to interface down.
     - Informative

Priority Port Counters
----------------------
The following counters are physical port counters that are counted per L2
priority (0-7).

**Note:** `p` in the counter name represents the priority.

.. flat-table:: Priority Port Counter Table
   :widths: 2 3 1

   * - Counter
     - Description
     - Type

   * - `rx_prio[p]_bytes`
     - The number of bytes received with priority p on the physical port.
     - Informative

   * - `rx_prio[p]_packets`
     - The number of packets received with priority p on the physical port.
     - Informative

   * - `tx_prio[p]_bytes`
     - The number of bytes transmitted on priority p on the physical port.
     - Informative

   * - `tx_prio[p]_packets`
     - The number of packets transmitted on priority p on the physical port.
     - Informative

   * - `rx_prio[p]_pause`
     - The number of pause packets received with priority p on a physical port.
       If this counter is increasing, it implies that the network is congested
       and cannot absorb the traffic coming from the adapter. Note: This counter
       is available only if PFC was enabled on priority p.
     - Informative

   * - `rx_prio[p]_pause_duration`
     - The duration of pause received (in microSec) on priority p on the
       physical port. The counter represents the time the port did not send any
       traffic on this priority. If this counter is increasing, it implies that
       the network is congested and cannot absorb the traffic coming from the
       adapter. Note: This counter is available only if PFC was enabled on
       priority p.
     - Informative

   * - `rx_prio[p]_pause_transition`
     - The number of times a transition from Xoff to Xon on priority p on the
       physical port has occurred. Note: This counter is available only if PFC
       was enabled on priority p.
     - Informative

   * - `tx_prio[p]_pause`
     - The number of pause packets transmitted on priority p on a physical port.
       If this counter is increasing, it implies that the adapter is congested
       and cannot absorb the traffic coming from the network. Note: This counter
       is available only if PFC was enabled on priority p.
     - Informative

   * - `tx_prio[p]_pause_duration`
     - The duration of pause transmitter (in microSec) on priority p on the
       physical port. Note: This counter is available only if PFC was enabled on
       priority p.
     - Informative

   * - `rx_prio[p]_buf_discard`
     - The number of packets discarded by device due to lack of per host receive
       buffers.
     - Informative

   * - `rx_prio[p]_cong_discard`
     - The number of packets discarded by device due to per host congestion.
     - Informative

   * - `rx_prio[p]_marked`
     - The number of packets ecn marked by device due to per host congestion.
     - Informative

   * - `rx_prio[p]_discards`
     - The number of packets discarded by device due to lack of receive buffers.
     - Informative

Device Counters
---------------
.. flat-table:: Device Counter Table
   :widths: 2 3 1

   * - Counter
     - Description
     - Type

   * - `rx_pci_signal_integrity`
     - Counts physical layer PCIe signal integrity errors, the number of
       transitions to recovery due to Framing errors and CRC (dlp and tlp). If
       this counter is raising, try moving the adapter card to a different slot
       to rule out a bad PCI slot. Validate that you are running with the latest
       firmware available and latest server BIOS version.
     - Error

   * - `tx_pci_signal_integrity`
     - Counts physical layer PCIe signal integrity errors, the number of
       transition to recovery initiated by the other side (moving to recovery
       due to getting TS/EIEOS). If this counter is raising, try moving the
       adapter card to a different slot to rule out a bad PCI slot. Validate
       that you are running with the latest firmware available and latest server
       BIOS version.
     - Error

   * - `outbound_pci_buffer_overflow`
     - The number of packets dropped due to pci buffer overflow. If this counter
       is raising in high rate, it might indicate that the receive traffic rate
       for a host is larger than the PCIe bus and therefore a congestion occurs.
     - Informative

   * - `outbound_pci_stalled_rd`
     - The percentage (in the range 0...100) of time within the last second that
       the NIC had outbound non-posted reads requests but could not perform the
       operation due to insufficient posted credits.
     - Informative

   * - `outbound_pci_stalled_wr`
     - The percentage (in the range 0...100) of time within the last second that
       the NIC had outbound posted writes requests but could not perform the
       operation due to insufficient posted credits.
     - Informative

   * - `outbound_pci_stalled_rd_events`
     - The number of seconds where `outbound_pci_stalled_rd` was above 30%.
     - Informative

   * - `outbound_pci_stalled_wr_events`
     - The number of seconds where `outbound_pci_stalled_wr` was above 30%.
     - Informative

   * - `dev_out_of_buffer`
     - The number of times the device owned queue had not enough buffers
       allocated.
     - Error