The Linux command ethtool can display an extensive
range of statistics originated from the MAC on the X4 series network adapter. To display
statistics use the following command:
ethtool -S <interface>
(where <interface> is the name of the X4 series adapter interface).
The AMD Solarflare network driver has to manage multi-PF configurations and for this reason statistics are not reset by reloading the driver. The only methods currently available to reset statistics are to cold-reboot (power OFF/ON) the server or to reload the firmware image.
Per port statistics (port_) are from the
physical adapter port. Other statistics are from the specified PCIe function.
The following table lists the complete output from the ethtool -S command.
ethtool -S output depends on the features supported by the adapter type. Some fields
listed below might not be present.| Field | Description |
|---|---|
| port_tx_bytes | Number of bytes transmitted. |
| port_tx_packets | Number of packets transmitted. |
| port_tx_pause | Number of pause frames transmitted with valid pause op_code. |
| port_tx_unicast | Number of unicast packets transmitted. Includes flow control packets. |
| port_tx_multicast | Number of multicast packets transmitted. |
| port_tx_broadcast | Number of broadcast packets transmitted. |
| port_tx_lt64 | Number of frames transmitted where the length is less than 64 bytes. |
| port_tx_64 | Number of frames transmitted where the length is exactly 64 bytes. |
| port_tx_65_to_127 | Number of frames transmitted where the length is between 65 and 127 bytes. |
| port_tx_128_to_255 | Number of frames transmitted where the length is between 128 and 255 bytes. |
| port_tx_256_to_511 | Number of frames transmitted where the length is between 256 and 511 bytes. |
| port_tx_512_to_1023 | Number of frames transmitted where length is between 512 and 1023 bytes. |
| port_tx_1024_to_15xx | Number of frames transmitted where the length is between 1024 and 1518 bytes (1522 with VLAN tag). |
| port_tx_15xx_to_jumbo | Number of frames transmitted where length is between 1518 bytes (1522 with VLAN tag) and 9100 bytes. |
| port_rx_bytes | Number of bytes received. Not include collided bytes. |
| port_rx_packets | Number of packets received. |
| port_rx_good | Number of packets received with correct CRC value and no error codes. |
| port_rx_bad | Number of packets received with incorrect CRC value. |
| port_rx_pause | Number of pause frames received with valid pause op_code. |
| port_rx_unicast | Number of unicast packets received. |
| port_rx_multicast | Number of multicast packets received. |
| port_rx_broadcast | Number of broadcasted packets received. |
| port_rx_lt64 | Number of packets received where the length is less than 64 bytes. |
| port_rx_64 | Number of packets received where the length is exactly 64 bytes. |
| port_rx_65_to_127 | Number of packets received where the length is between 65 and 127 bytes. |
| port_rx_128_to_255 | Number of packets received where the length is between 128 and 255 bytes. |
| port_rx_256_to_511 | Number of packets received where the length is between 256 and 511 bytes. |
| port_rx_512_to_1023 | Number of packets received where the length is between 512 and 1023 bytes. |
| port_rx_1024_to_15xx | Number of packets received where the length is between 1024 and 1518 bytes (1522 with VLAN tag). |
| port_rx_15xx_to_jumbo | Number of packets received where the length is between 1518 bytes (1522 with VLAN tag) and 9100 bytes. |
| port_rx_gtjumbo | Number of packets received with a length greater than 9100 bytes. |
| port_rx_bad_gtjumbo | Number of packets received with a length greater than 9100 bytes, but with incorrect CRC value. |
| port_rx_align_error | Number of packets received with an align error. |
| port_rx_length_error | Number of packets received with a length error. |
|
port_rx_nodesc_drops |
Number of packets dropped by the network adapter because of a lack of RX descriptors in the RX queue. Packets can be dropped by the NIC when there are insufficient RX descriptors in the RX queue to allocate to the packet. This problem occurs if the receive rate is very high and the network adapter receive cycle process has insufficient time between processing to refill the queue with new descriptors. A number of different steps can be tried to resolve this issue:
|
| port_rx_pm_discard_vfifo_full | Count of the number of packets dropped because of a lack of bandwidth between card and host memory. |
| port_rx_pm_discard_qbb | Not currently supported. |
| port_rx_pm_discard_mapping | Number of packets dropped because they have an 802.1p priority level configured to be dropped. |
| port_rx_dp_q_disabled_packets | Increments when the filter indicates the packet must be delivered to a specific RX queue which is currently disabled due to configuration error or error condition. |
| port_rx_dp_di_dropped_packets | Number of packets dropped because the filters indicate the packet must be
dropped. This can happen because:
|
| port_rx_dp_streaming_packets | Number of packets directed to RXDP streaming bus which is used if the packet matches a filter which directs it to the MCPU. Not currently used. |
| port_rx_dp_hlb_fetch | Count the number of times the adapter descriptor cache is empty and a fetch operation is triggered to refill with more descriptors. |
| port_rx_dp_hlb_wait | Packet arrives while adapter descriptor cache is empty, refill is in progress, but not yet complete. |
| fec_uncorrected_errors | Number of uncorrected errors (RS-FEC). |
| fec_corrected_errors | Number of corrected errors (RS-FEC). |
| fec_corrected_symbols_lane0 | Per lane corrected symbols. |
| fec_corrected_symbols_lane1 | |
| fec_corrected_symbols_lane2 | |
| fec_corrected_symbols_lane3 | |
| exp_ctpio_write_bytes | Number of bytes the host has written to the CTPIO apertures. Counts warming sends as well as normal sends. |
| exp_ctpio_packets | Total number of packets sent via CTPIO. Excludes warming sends. Includes exp_ctpio_underflow_packets as well as successful sends. |
| exp_ctpio_bytes | Total number of bytes sent via CTPIO. Excludes warming sends. Includes exp_ctpio_underflow_bytes as well as successful sends. |
| exp_ctpio_warm_packets | Number of packets the host has sent with the warming flag set. These packets are not emitted to the wire. |
| exp_ctpio_warm_bytes | Number of bytes the host has sent with the warming flag set. These packets are not emitted to the wire. |
| exp_ctpio_underflow_packets | Number of packets which failed to send via CTPIO due to underrun. These packets were "poisoned" and emitted to the wire with an invalid ethernet FCS. |
| exp_ctpio_underflow_bytes | Number of bytes which failed to send via CTPIO due to underrun. These packets were "poisoned" and emitted to the wire with an invalid ethernet FCS. |
| exp_ctpio_drain_packets | Number of packet sends discarded while adapter being reconfigured. Only expected to occur during interface reconfiguration. |
| exp_ctpio_drain_bytes | Number of byte sends discarded while adapter being reconfigured. Only expected to occur during interface reconfiguration. |
| exp_tx_merge_packets | Number of packet sends notified to the host through merge events. |
| exp_tx_event_tlps | Number of PCIe TLPs sent to host containing TX events. |
| exp_tx_event_bytes | Number of bytes of TX event data sent to host. |
| exp_rx_packets | Total number of packets received, including "bad" packets. |
| exp_rx_bytes | Total number of bytes received, including "bad" packets. |
| exp_rx_bad_packets | Packets received with invalid ethernet FCS. Note: Packets with a valid
ethernet FCS but an invalid L3/4 checksum are instead counted by Onload /
TCPDirect / ef_vi stats.
|
| exp_rx_port_disabled_packets | Number of packets discarded while port is disabled. |
| exp_rx_port_disabled_bytes | Number of bytes discarded while port is disabled. |
| exp_rx_vfifo_full_drop_packets |
Number of packets dropped because there was not enough server packet memory available to receive them. Happens when packets cannot be delivered to the host as quickly as they arrive due to:
|
| exp_rx_vfifo_full_drop_bytes |
Number of bytes dropped because there was not enough server packet memory available to receive them. Happens when packets cannot be delivered to the host as quickly as they arrive due to:
|
| exp_rx_dp_q_disabled_packets | Number of packets that a filter indicated should be delivered to a specific RX queue that was disabled. Can occur briefly when accelerated applications are started/stopped, or might be due to configuration error or error condition. |
| exp_rx_dp_q_disabled_bytes | Number of bytes that a filter indicated should be delivered to a specific RX queue that was disabled. Can occur briefly when accelerated applications are started/stopped, or might be due to configuration error or error condition. |
| exp_rx_nodesc_drop_packets |
Number of packets dropped by the network adapter because of a lack of superbuffers for an RX queue. This problem occurs if the receive rate is very high and the host software does not refill the RX ring in time. |
| exp_rx_nodesc_drop_bytes |
Number of bytes dropped by the network adapter because of a lack of superbuffers for an RX queue. This problem occurs if the receive rate is very high and the host software does not refill the RX ring in time. |
| exp_rx_oversize_trunc_bytes | Packets which are longer than the maximum supported length are truncated by the NIC. This counter records the excess number of bytes which the NIC discarded. The portion of the packet which is delivered to the host is marked as truncated and is typically dropped by the host software. |
| exp_rx_data_tlps | Number of PCIe TLPs sent to host containing RX packet data. |
| exp_rx_data_bytes | Number of bytes of RX packet data sent to host as PCIe TLPs. |
| exp_rx_meta_tlps | Number of PCIe TLPs sent to host containing RX metadata. |
| exp_rx_merge_packets | Number of packets delivered to the host through merge events. |
| exp_rx_merge_event_tlps | Number of PCIe TLPs sent to host containing RX events. |
| exp_rx_merge_event_bytes | Number of bytes of RX event data sent to host as PCIe TLPs. |
| tx_merge_events | The number of TX completion events where more than one TX descriptor was completed. |
| tx_tso_bursts | Number of times when outgoing TCP data is split into packets by the adapter driver. Refer to Tuning Settings. |
| tx_tso_long_headers | Number of times TSO is applied to packets with long headers. |
| tx_tso_packets | Number of physical packets produced by TSO. |
| tx_tso_fallbacks | 0 |
| tx_pushes | Number of times a packet descriptor is ‘pushed’ to the adapter from the network adapter driver. |
| tx_pio_packets | Number of packets sent using PIO. |
| tx_cb_packets | 0 |
| rx_reset | 0 |
| rx_tobe_disc | Number of packets marked by the adapter to be discarded because of one of
the following:
|
| rx_ip_hdr_chksum_err | Number of packets received with IP header checksum error. |
| rx_inner_ip_hdr_chksum_err | |
| rx_outer_ip_hdr_chksum_err | |
| rx_tcp_udp_chksum_err | Number of packets received with TCP/UDP checksum error. |
| rx_inner_tcp_udp_chksum_err | |
| rx_outer_tcp_udp_chksum_err | |
| rx_eth_crc_err | Number of packets received where the CRC did not match the internally generated CRC value. This is the total of all receive channels receiving CRC errors. |
| rx_mcast_mismatch | Number of unsolicited multicast packets received. Unwanted multicast packets can be received because a connected switch simply broadcasts all packets to all endpoints or because the connected switch is not able or not configured for IGMP snooping - a process from which it learns which endpoints are interested in which multicast streams. |
| rx_frm_trunc | Number of frames truncated because an internal FIFO is full. As a packet is received it is fed by the MAC into a 128 K FIFO. If for any reason the PCI interface cannot keep pace and is unable to empty the FIFO at a sufficient rate, the MAC is unable to feed more of the packet to the FIFO. In this event the MAC truncates the frame (marking it as such) and discards the remainder. The driver discards a 'partial' packet which has been truncated. |
| rx_merge_events | Number of RX completion events where more than one RX descriptor was completed. |
| rx_merge_packets | Number of packets delivered to the host through merge events. |
| rx_xdp_drops | Count of RX packets intentionally dropped due to XDP. |
| rx_xdp_bad_drops | Count of RX packets dropped due to XDP errors. |
| rx_xdp_tx | Count of RX packets retransmitted due to XDP. |
| rx_xdp_redirect | Count of RX packets redirected to a different NIC by XDP. |
| rx_mport_bad | Count of RX packets dropped because their ingress mport was not recognized. |
| rfs_filter_count | Number of accelerated RFS filters currently in place. |
| rfs_succeeded | Number of successful accelerated RFS filter insertions. |
| rfs_failed | Number of failed accelerated RFS filter insertions. |
| tx-N.tx_packets | Per TX queue transmitted packets. |
| rx-N.rx_packets | Per RX queue received packets. |
| tx-xsk-N.tx_packets | Per XSK socket transmitted packets. |
| ptp_good_syncs |
These PTP stats counters relate to the mechanism used by sfptpd to synchronize the system clock and adapter clock(s) in a server. For each synchronization event, sfptpd selects a number of system clock times to be compared to the adapter clock time. If the times can be synchronized, the good_syncs counter is incremented, otherwise the bad_syncs counter is incremented. If sfptpd is unable to synchronize the clocks at this event, the sync_timeout counter is incremented. sfptpd synchronizes clocks 16 times per second, so incrementing counters do not necessarily indicate bad synchronization between local server clocks and an external PTP master clock. |
| ptp_fast_syncs | |
| ptp_bad_syncs | |
| ptp_sync_timeouts | |
| ptp_no_time_syncs | |
| ptp_invalid_sync_windows | |
| ptp_undersize_sync_windows | |
| ptp_oversize_sync_windows | |
| ptp_rx_no_timestamp | Number of PTP packets received for which a hardware timestamp was not recovered from the adapter. |
| ptp_tx_timestamp_packets | Number of PTP packets transmitted for which the adapter generated a hardware timestamp. |
| ptp_rx_timestamp_packets | Number of PTP packets received for which the adapter generated a hardware timestamp. |
| ptp_timestamp_packets | Total number of PTP packets for which the adapter generated a hardware timestamp. |
| ptp_filter_matches | Number of PTP packets hitting the PTP filter. |
| ptp_non_filter_matches | Number of PTP packets which did not match the PTP filter. |
| pps_fw | Number of PPS pulses received from firmware, generated from clock source on the NIC. |
| pps_hw | Number of PPS pulses received from hardware, generated from PPS_IN external connector. |
port_rx_bad and rx_eth_crc_err counters might differ,
and this is expected. One cause of this is that port_rx_badis a
firmware count and so sees all packets. However rx_eth_crc_err
counts only bad CRC packets that are going to the net driver, and does not count bad CRC packets
going to Onload or ef_vi.CRC counters might increment for other packet error conditions.