Skip to content

RTL8196E Ethernet Driver — Performance

All rows: standard release bench (scripts/bench_release_iperf3.sh), one image per row, fresh boot, radio and userland quiesced, no gateway access during a measurement, host direct-cabled to the gateway. TCP: 11 reps × 30 s, median (min–max). UDP: 3 reps × 20 s, median delivered rate and receiver loss. Every row recorded zero TCP retransmissions and zero hard-counter failures. Rows marked ⁽¹⁾ predate the standard bench and were measured with a shorter protocol (see the notes under each table).

Absolute levels move by a few Mbit/s between sessions; a difference between two rows is only a finding when it was measured paired in the same session; those paired runs live in the driver's performance archive.

Stable line (Linux 6.18, production default)

Release Kernel TCP RX host to gateway TCP TX gateway to host UDP RX at 100 Mbit/s offered UDP TX unconstrained
v3.10.0 6.18.35 93.8 Mbit/s (93.2–94.0) 68.7 Mbit/s (68.3–72.1) 30.5 Mbit/s, 68% loss 32.6 Mbit/s, 0% loss
v4.0.0 6.18.41 92.4 Mbit/s (91.8–92.6) 71.4 Mbit/s (70.3–72.7) 33.3 Mbit/s, 65% loss 33.6 Mbit/s, 0% loss
v4.2.0 6.18.45 91.7 Mbit/s (91.1–92.5) 82.8 Mbit/s (81.2–83.6) 40.7 Mbit/s, 57% loss 36.7 Mbit/s, 0% loss
v4.5.0 6.18.51 93.5 Mbit/s (92.5–93.9) 82.8 Mbit/s (81.7–84.3) 41.5 Mbit/s, 57% loss 37.2 Mbit/s, 0% loss

Notes: - v3.10.0, v4.0.0 and v4.2.0 were re-measured on the same day (2026-08-22) on the same rig with the final harness, so those three rows are directly comparable. - From v4.2.0 on, the kernel places its hottest network code in the SoC's on-chip instruction memory; that is the TCP TX step between v4.0.0 and v4.2.0. - TCP RX from v4.0.0 on includes the deliberate driver v2.23 checksum-integrity policy (about −2 %); it is not a regression.

Development line (Linux 7.x, experimental)

Release Kernel TCP RX host to gateway TCP TX gateway to host UDP RX at 100 Mbit/s offered UDP TX unconstrained
pre-4.0.0, never tagged ⁽¹⁾ 7.1.3 88.6 Mbit/s (88.2–88.9) 69.6 Mbit/s (68.1–70.4) — —
v4.0.0 ⁽¹⁾ 7.1.7 88.8 Mbit/s (87.9–88.9) 70.0 Mbit/s (69.0–71.2) 35.5 Mbit/s, 63% loss 31.4 Mbit/s, 0% loss
v4.2.0 7.1.9 92.8 Mbit/s (91.8–93.4) 82.8 Mbit/s (81.4–84.2) 43.2 Mbit/s, 55% loss 34.3 Mbit/s, 0% loss
v4.5.0 7.2.5 93.7 Mbit/s (91.9–93.8) 84.3 Mbit/s (82.3–85.8) 41.5 Mbit/s, 57% loss 35.1 Mbit/s, 0% loss

Notes: - ⁽¹⁾ 7.1.3 (2026-07-17) and 7.1.7 (2026-08-08): 3 RX reps and 10 TX reps of 30 s, measured before the standard bench existed; 7.1.3 had no UDP phase. Their RX medians sit lower than the 2026-08 rows partly because of that protocol. - 7.1.9 is the 2026-08-21 qualification run of the shipped v4.2.0 image; 7.2.5 was measured on 2026-09-13. - The two lines are never compared across rows: each row is one session.

History

The detailed campaign record that used to follow these tables — per-driver-version gate runs (v2.9 to v2.24), paired A/B experiments, the I-cache geometry measurements, the on-chip SRAM work, the TX/RX per-packet CPU decompositions, the levers explored and the in-driver instrumentation notes — was moved out of the tree on 2026-09-14 to keep this file readable. It is unchanged in git history:

git show bb1c874:3-Main-SoC-Realtek-RTL8196E/32-Kernel/files-6.18/drivers/net/ethernet/rtl8196e-eth/PERFORMANCE.md

References elsewhere in this directory to a "v2.x entry", "Levers explored", "In-driver instrumentation" or the "TX path per-packet decomposition" of PERFORMANCE.md point at that archived version.