How to Use ethtool in Linux to Diagnose Link Speed, Ring Buffer Drops, and Offload Settings

In high-throughput enterprise networks—such as 10GbE, 25GbE, and 100GbE data centre clusters—network performance degradations rarely originate from the operating system’s software routing logic. Instead, throughput bottlenecks and micro-burst packet loss frequently occur at the boundary between the physical Network Interface Card (NIC) hardware and the Linux kernel driver. When incoming packet rates exceed the rate at which the CPU processes Direct Memory Access (DMA) interrupt rings, NIC buffers overflow, dropping frames silently before they ever reach the Linux network stack.

The definitive Linux utility for inspecting, diagnosing, and tuning physical network hardware controllers is ethtool. By leveraging ethtool, systems engineers can audit PHY link negotiation states, inspect hardware ASIC statistics, expand Receive (RX) and Transmit (TX) ring buffer descriptor queues, and configure hardware offload engines (such as TSO, GSO, and GRO) to eliminate CPU bottlenecks and packet drops.

Architectural Overview: The NIC DMA Pipeline and Hardware Offloads

A physical Ethernet adapter processes incoming and outgoing network frames through a tightly coupled hardware-driver queue architecture:

Pipeline Stage Hardware / Driver Component Operational Role
Physical Layer (PHY) Transceiver & Auto-Negotiation Logic Establishes physical electrical or optical link speed (e.g. 10000Mb/s), duplex mode, and Pause frame flow control.
RX Ring Buffer Circular DMA Descriptor Queue Holds pointers to kernel memory buffers (sk_buff) allocated in host RAM where the NIC DMA controller writes raw frames.
TX Ring Buffer Circular Transmission Queue Queues outbound packets staged by the kernel network stack awaiting wire transmission by the NIC MAC controller.
TCP Segmentation Offload (TSO) Hardware Packet Slicing ASIC Enables the kernel to transmit massive 64KB TCP super-packets; the NIC hardware segments them into standard 1500-byte MTU frames.
Generic Receive Offload (GRO) Driver / ASIC Packet Aggregation Reassembles contiguous incoming MTU frames into large packets before passing them to the TCP stack, reducing CPU interrupts.

Verifying Physical Link State and Auto-Negotiation

Before investigating buffer or protocol issues, verify the physical hardware negotiation status on the active network interface (e.g. eth0 or enp3s0).

# Query link speed, duplex mode, and transceiver status
sudo ethtool eth0

Inspect key parameters in the output:

  • Speed: 10000Mb/s: Confirms the interface negotiated the expected line rate (e.g. 10 Gbps instead of dropping to 1 Gbps due to a degraded cable).
  • Duplex: Full: Confirms full-duplex operation; half-duplex indicates severe auto-negotiation collisions.
  • Link detected: yes: Verifies physical layer carrier signal integrity.
  • Auto-negotiation: on: Identifies IEEE 802.3 link negotiation parameters.

Locating Physical Ports in the Data Centre

To identify which physical RJ45 or SFP+ port on a dense rack server corresponds to eth0, blink the interface’s physical chassis LED:

# Flash the port LED for 10 seconds
sudo ethtool -p eth0 10

Diagnosing Buffer Drops Using ASIC Hardware Statistics

Standard Linux utilities like ifconfig or ip -s link display basic drop counters, but fail to pinpoint the exact queue failure. Query the hardware ASIC registers directly using ethtool -S:

# Query vendor-specific hardware telemetry counters
sudo ethtool -S eth0 | grep -E "drop|miss|error|fifo|overflow"
Counter Name (Intel / Broadcom / Mellanox) Underlying Root Cause Remediation Action
rx_missed_errors / rx_no_buffer_count Incoming frames arrived faster than the CPU could process the RX ring descriptors; the NIC ran out of buffers and dropped packets. Expand RX ring buffer size via ethtool -G; enable or optimize Receive Side Scaling (RSS) to spread interrupts across CPU cores.
rx_fifo_errors The internal FIFO buffer on the physical NIC chip overflowed before DMA memory transfer could commence. PCIe bus bottleneck or ASPM power-saving states causing PCIe link throttling; disable ASPM in BIOS.
rx_crc_errors / rx_fcs_errors Frame Check Sequence checksum failures; corrupted electrical or optical packets received. Replace damaged physical patch cables, dirty optical transceivers, or faulty switch ports.

Inspecting and Expanding Ring Buffer Descriptors

If hardware statistics reveal rx_missed_errors, expanding the DMA ring buffer queues provides essential burst headroom.

Step 1: Check Current vs. Maximum Ring Buffer Capacity

# Display ring buffer sizes
sudo ethtool -g eth0

The output reports two distinct sections: Pre-set maximums (the physical limits supported by the NIC firmware) and Current hardware settings. Often, a NIC capable of 4096 descriptors is configured with a default of only 256 or 512.

Step 2: Expand RX and TX Ring Buffers

Maximize descriptor depth to absorb transient micro-bursts:

# Maximize ring buffers to 4096 descriptors
sudo ethtool -G eth0 rx 4096 tx 4096

# Confirm newly applied parameters
sudo ethtool -g eth0

Auditing and Tuning Hardware Offload Settings

Hardware offloads shift CPU-intensive packet slicing and checksum verification onto dedicated NIC ASICs, dramatically reducing CPU utilisation.

Step 1: Audit Offload States

# Inspect all offload features and active states
sudo ethtool -k eth0

Step 2: Ensure Critical Offloads are Enabled

For standard high-throughput servers, ensure TSO, GSO, and GRO are active:

# Enable TCP Segmentation Offload, Generic Segmentation, and Receive Offload
sudo ethtool -K eth0 tso on gso on gro on rx on tx on

Note for Virtualised Routers / Middleboxes: If the Linux host operates as a network firewall or router performing deep packet inspection (e.g. Zeek, Suricata, or Open vSwitch), GRO/LRO can reassemble packets into non-standard frame sizes that bypass inspection rules. In those dedicated routing environments, disable GRO: sudo ethtool -K eth0 gro off.

Persisting ethtool Configurations Across Reboots

By default, ethtool adjustments are volatile and revert upon system reboot. Persist them using modern systemd network configuration.

Method: systemd-networkd Link Configuration

Create /etc/systemd/network/10-eth0.link:

[Match]
OriginalName=eth0

[Link]
BitsPerSecond=10G
Duplex=full
AutoNegotiation=yes
RxBufferSize=4096
TxBufferSize=4096
GenericReceiveOffload=yes
TCPSegmentationOffload=yes

Alternatively, on Ubuntu systems using Netplan, declare ring buffer sizes inside /etc/netplan/*.yaml under the ethernets.eth0.receive-buffers: 4096 directive.

Troubleshooting ethtool Device and Driver Denials

Consult this diagnostic reference table to debug configuration rejections and driver limitations:

Error / Symptom Underlying Root Cause Remediation Procedure
Cannot set device ring parameters: Operation not supported The interface is a virtual network device (e.g. Docker veth, KVM virbr, or virtual tunnel) lacking physical DMA rings. Ring buffer configuration applies strictly to physical hardware interfaces (Intel, Broadcom, Realtek). Tune virtual devices via software qdiscs.
Cannot change offload settings: Operation not permitted Command executed without root privileges, or interface is locked by hypervisor passthrough mode (SR-IOV). Execute using sudo. For SR-IOV Virtual Functions (VF), offload policies must be configured on the host Physical Function (PF).
Expanding ring buffers increases packet round-trip latency. Oversized ring buffers induce bufferbloat, queuing stale packets rather than dropping them to signal TCP congestion. Pair expanded ring buffers with modern active queue management (AQM) disciplines like FQ-CoDel: sudo tc qdisc replace dev eth0 root fq_codel.
Link speed locked at 100Mb/s despite 1Gb/s or 10Gb/s hardware. Auto-negotiation failure caused by broken wire pairs inside CAT5e/CAT6 cabling (pins 4, 5, 7, 8 severed). Replace Ethernet cabling. Verify with a cable tester to ensure all four twisted pairs establish continuity.

Mastering ethtool hardware auditing, ring buffer expansion, and offload management empowers engineers to extract full line-rate performance from physical network adapters, eliminating mysterious packet drops and ensuring rock-solid enterprise connectivity.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.