Page MenuHomeFreeBSD

ice: Honor iflib transmit completion batching
ClosedPublic

Authored by kbowling on Aug 18 2026, 11:35 AM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Oct 3, 12:42 AM
Unknown Object (File)
Fri, Oct 2, 8:31 AM
Unknown Object (File)
Thu, Oct 1, 8:38 AM
Unknown Object (File)
Thu, Oct 1, 8:34 AM
Unknown Object (File)
Wed, Sep 30, 2:51 PM
Unknown Object (File)
Tue, Sep 29, 6:16 PM
Unknown Object (File)
Tue, Sep 29, 6:16 PM
Unknown Object (File)
Tue, Sep 29, 4:12 PM
Subscribers

Details

Reviewers
kgalazka
gallatin
Group Reviewers
Intel Networking
Restricted Owners Package(Owns No Changed Paths)
Commits
rG99191ce8044d: ice: Honor iflib transmit completion batching
Summary
ice marked every transmitted packet RS and recorded every last
descriptor in its report-status queue.  Hardware therefore wrote
descriptor status for every packet, and the driver traversed every
packet while reclaiming completed descriptors.

iflib marks selected packets with IPI_TX_INTR as completion
checkpoints.  It forces a checkpoint as deferred work or ring pressure
grows.  Retain EOP on every packet, but set RS and record the descriptor
only at those checkpoints.

DPDK uses the same sparse-RS design and defaults tx_rs_thresh to 32.
Let iflib choose the adaptive interval for FreeBSD.  This reduces PCIe
and memory traffic while preserving bounded descriptor reclamation.

Validated on an E810-XXV in an A-B-A test with five matched
four-stream, TSO-disabled transmit runs per phase.  Median throughput
was 9.413, 9.413, and 9.414 Gbps.  Median whole-system CPU was 21.54%,
17.75%, and 21.62%, respectively.  The candidate used less system CPU
than both exact-baseline phases in every pair.  Interrupt rate was
unchanged, no transmit watchdog fired, and normal TSO traffic remained
line-rate.  DTrace confirmed that only iflib-selected packet-final
descriptors carried RS after the change.  The effect should be more
profound at 200Gbps but my DUT is network limited.

MFC after:      2 weeks

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable