Yesterday I ran into a networking issue that looked trivial at first and turned out to be a great reminder of why debugging layer by layer still matters.

This post documents the failure, the investigation, and the real root cause.

The Symptom

  • Ethernet Link: UP
  • Speed: 100 Mbps, full duplex (ethtool <interface>)
  • IP assigned via DHCP
  • IP Routes look correct
  • Firewall Flushed
  • Interface up and running

Yet:

  • I couldn’t ping the gateway ( 192.168.0.1)
  • I couldn’t ping another host on the same subnet
  • ping immediately returned:
Destination Host Unreachable

Classic “networking is broken” vibes.

First-Level Checks (Nothing Unusual)

I checked obvious things:

  • ip addr -> Ip was correct ( 192.168.0.3/24 )
  • ip route -> route to 192.168.0.0/24 present
  • Firewall -> disabled
  • Interface state -> UP

The Clue: Neighbor Table

Running:

ip neigh show dev enx207bd52aeb33

Got:

192.168.0.1 INCOMPLETE

This means:

  • Kernel tried to resolve the gateway’s MAC address
  • ARP resolution was never completed

Now, to confirm this ARP issue

Smoke Gun: Tcpdump

To confirm:

sudo tcpdump -i enx207bd52aeb33 -e -n arp

and ran ping 192.168.0.1 in another terminal

Result

0 packets captured

At this moment, I realised ARP request never left my machine.
If ARP were being transmitted, tcpdump would see it — even if the router were dead.

The Actual Issue: r8152

The Ethernet adapter was using the Realtek r8152 USB Ethernet driver:

driver: r8152
version: v1.12.13

You can check in your machine using:

 ethtool -i <interface>

What happened internally was a TX-path deadlock:

  • RX still worked (that’s why DHCP succeeded)
  • TX queue was wedged
  • Packets never made it to the USB layer
  • No kernel errors
  • No timeouts
  • No warnings

From the kernel’s point of view, packets were “queued successfully”. From reality’s point of view, nothing was leaving the NIC.

This is one of the nastiest classes of bugs: silent failure.

The Fix

Out of curiosity, I tried resetting the driver:

sudo modprobe -r r8152
sudo modprobe r8152

Immediately:

  • ARP packets appeared in tcpdump
  • Neighbor entry moved to REACHABLE
  • Ping to the gateway worked
  • Network fully recovered