Why are packet drops reported in ifconfig not reflected in ethtool?

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux (All Versions).

Issue

  • ifconfig reports dropped packets or frames for an interface while ethtool statistics show none

Resolution

The ethtool statistics should be favoured over those of ifconfig. The dropped counter in ifconfig was originally intended to log protocol-only drops, such as a protocol handler being unable to allocate memory, but has since been obscured by various drivers adding their statistics in no standard way to these counters.

Root Cause

The ifconfig statistics come from the NET_DRIVER structure while ethtool statistics comes from the device's private structure. NIC drivers may re-initializing their private structure when the device goes down and back up, but may not re-initialize the NET_DRIVER structure.

Diagnostic Steps

  • View output from ifconfig and note dropped packets are reported:
$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr AA:AA:AA:AA:AA:A1  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:1139698 errors:0 dropped:365956 overruns:0 frame:0
          TX packets:232 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:110397607 (105.2 MiB)  TX bytes:106391 (103.8 KiB)
          Interrupt:16 
  • View ethtool -S output and note no packet drops are listed:
$ ethtool -S eth0
NIC statistics:
     rx_octets: 110403643
     rx_fragments: 0
     rx_ucast_packets: 523
     rx_mcast_packets: 774623
     rx_bcast_packets: 364610
     rx_fcs_errors: 0
     rx_align_errors: 0
     rx_xon_pause_rcvd: 0
     rx_xoff_pause_rcvd: 0
     rx_mac_ctrl_rcvd: 0
     rx_xoff_entered: 0
     rx_frame_too_long_errors: 0
     rx_jabbers: 0
     rx_undersize_packets: 0
     rx_in_length_errors: 0
     rx_out_length_errors: 0
     rx_64_or_less_octet_packets: 0
     rx_65_to_127_octet_packets: 0
     rx_128_to_255_octet_packets: 0
     rx_256_to_511_octet_packets: 0
     rx_512_to_1023_octet_packets: 0
     rx_1024_to_1522_octet_packets: 0
     rx_1523_to_2047_octet_packets: 0
     rx_2048_to_4095_octet_packets: 0
     rx_4096_to_8191_octet_packets: 0
     rx_8192_to_9022_octet_packets: 0
     tx_octets: 106391
     tx_collisions: 0
     tx_xon_sent: 0
     tx_xoff_sent: 0
     tx_flow_control: 0
     tx_mac_errors: 0
     tx_single_collisions: 0
     tx_mult_collisions: 0
     tx_deferred: 0
     tx_excessive_collisions: 0
     tx_late_collisions: 0
     tx_collide_2times: 0
     tx_collide_3times: 0
     tx_collide_4times: 0
     tx_collide_5times: 0
     tx_collide_6times: 0
     tx_collide_7times: 0
     tx_collide_8times: 0
     tx_collide_9times: 0
     tx_collide_10times: 0
     tx_collide_11times: 0
     tx_collide_12times: 0
     tx_collide_13times: 0
     tx_collide_14times: 0
     tx_collide_15times: 0
     tx_ucast_packets: 230
     tx_mcast_packets: 1
     tx_bcast_packets: 1
     tx_carrier_sense_errors: 0
     tx_discards: 0
     tx_errors: 0
     dma_writeq_full: 0
     dma_write_prioq_full: 0
     rxbds_empty: 0
     rx_discards: 0
     rx_errors: 0
     rx_threshold_hit: 0
     dma_readq_full: 0
     dma_read_prioq_full: 0
     tx_comp_queue_full: 0
     ring_set_send_prod_index: 0
     ring_status_update: 0
     nic_irqs: 0
     nic_avoided_irqs: 0
     nic_tx_threshold_hit: 0
     mbuf_lwm_thresh_hit: 0

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments