Skip to content

Drill: Debug Network Interfaces with ethtool

Goal

Use ethtool to check link status, negotiated speed, error counters, and driver information for network interfaces.

Setup

  • Linux system with ethtool installed (apt install ethtool or yum install ethtool)
  • Root access

Commands

Check link status and speed:

ethtool eth0

View driver and firmware info:

ethtool -i eth0

Show interface statistics and error counters:

ethtool -S eth0

Show only specific counter groups:

ethtool -S eth0 | grep -i error
ethtool -S eth0 | grep -i drop
ethtool -S eth0 | grep -i miss

Check ring buffer sizes:

ethtool -g eth0

Show offload settings:

ethtool -k eth0

Check pause/flow-control settings:

ethtool -a eth0

Watch for counter changes over time:

ethtool -S eth0 | grep rx_errors ; sleep 10 ; ethtool -S eth0 | grep rx_errors

What to Look For

  • Link detected: yes/no immediately confirms physical connectivity
  • Speed/Duplex mismatches between endpoints cause poor performance
  • Rising rx_errors, tx_errors, or rx_dropped counters indicate hardware or driver issues
  • rx_missed_errors suggests the ring buffer is too small for the traffic rate

Common Mistakes

  • Checking virtual interfaces (veth, bridge) where ethtool reports limited information
  • Not comparing counter values over time (a single snapshot may show old accumulated errors)
  • Ignoring duplex mismatch (half-duplex negotiation with a full-duplex switch)
  • Assuming all counters are standardized (naming varies by NIC driver)

Cleanup

No cleanup needed. ethtool queries are read-only unless you change settings with -s.