Ethernet Duplex Mismatch: Read Both Ends and the Error Counters

Ethernet switch with active network cables in a lab setting.

An Ethernet link can stay up while a duplex mismatch destroys useful throughput. The decisive check is not the link light or a single speed reading: read speed, duplex and autonegotiation at both ends, then compare collision and frame-error counter changes during the same traffic interval.

Start with endpoint readback, not a new cable

On Linux, identify the interface and ask the driver what it negotiated:

ip -br link
sudo ethtool enp2s0
sudo ethtool -S enp2s0

The ethtool manual defines the basic query as the interface name alone; -S requests driver-defined statistics. Record Speed, Duplex, Auto-negotiation and Link detected. Then read the connected switch port through its management interface or CLI. A full/full or half/half link is internally consistent even if the speed is lower than expected. Full on one end and half on the other is the mismatch.

Red Hat ethtool output showing 1000Mb/s speed, full duplex, auto-negotiation and link detected
Official Red Hat ethtool example showing negotiated speed, duplex, auto-negotiation and link state. Image: Red Hat.

The classic fault is asymmetric

Cisco’s Ethernet duplex guidance explains the mechanism. The half-duplex endpoint uses carrier sense and collision handling. The full-duplex endpoint is allowed to transmit and receive at the same time. When both send together, the half-duplex side treats the event as a collision. Cisco identifies rapidly increasing FCS and alignment errors on the half-duplex side, while the full-duplex port may report runts.

That is why one counter on one device is not enough. Late collisions plus rapidly increasing FCS or alignment errors on the half-duplex side, paired with runts on the full-duplex port, form a much stronger signature than any counter alone. Cisco also cautions that late collisions can indicate an overlength cable or segment, so the duplex readback still matters.

Measure deltas over one controlled interval

Driver counters are often lifetime totals. Capture them before and after a reproducible transfer rather than reacting to a nonzero number left by an old fault:

sudo ethtool -S enp2s0 > before.txt
# run the same bidirectional transfer for 60 seconds
sudo ethtool -S enp2s0 > after.txt
diff -u before.txt after.txt

The Linux kernel’s interface-statistics documentation distinguishes standard counters from driver-defined ethtool statistics. Names vary by NIC, but useful candidates include late or excessive collisions, receive CRC/FCS errors, alignment errors and carrier errors. Check the switch’s corresponding port counters over the same 60-second window.

Normalize the change by traffic volume when comparing runs. For a receive-side counter, calculate error rate = Δ errors / Δ received frames; for a transmit collision counter, use transmitted frames. Ten errors during a few hundred frames and ten during several million frames are different signals. Save the raw outputs as well as the ratio because an interface reset, driver reload or device reboot can return a counter to zero. A falling lifetime total is a reset, not a spontaneous repair.

Red Hat ethtool -S example showing receive and transmit interface error counters
Official Red Hat ethtool -S example showing receive and transmit error counters. Image: Red Hat.

Do not confuse four different failure paths

  • Duplex mismatch: endpoint readback disagrees; late collisions and FCS/alignment errors rise on the half-duplex side, while the full-duplex port may report runts.
  • Physical cabling fault: CRC/FCS or symbol errors rise without contradictory duplex settings, often changing when the cable, connector or port changes.
  • Congestion: queue drops rise while physical-layer CRC and collision counters stay quiet.
  • Speed negotiation: both ends agree on duplex but settle at 100 Mbit/s instead of 1 Gbit/s, pointing toward cable-pair, advertisement or PHY issues rather than a duplex mismatch.

The Cisco Meraki troubleshooting note likewise describes high error rates and reduced performance when one endpoint uses full duplex and the other half duplex. It recommends verifying both ends rather than assuming the managed switch is the only authoritative view.

Fix negotiation symmetrically

The safest normal correction is to restore autonegotiation on both endpoints, then bounce the link and verify the resulting mode. If legacy equipment requires a forced 10/100 setting, force the same speed and duplex on both ends and document it. Do not leave one side forced while the other remains automatic and assume that speed detection also communicated duplex.

After the change, repeat the same transfer and counter-delta capture. A clean result requires three observations together: both endpoints report the same mode, the collision/FCS signature stops increasing, and application throughput recovers without new queue drops. If errors persist with matching duplex, return to cable, connector, PHY and port isolation rather than forcing more settings.

Sources

About TVG Editorial Team

TVG Report editorial coverage for robotics, AI, maker hardware, automation, and STEM technology.

View all posts by TVG Editorial Team →

Leave a Reply

Your email address will not be published. Required fields are marked *