Page MenuHomeFreeBSD

aq(4): enable jumbo frames, software LRO, and suspend/resume
ClosedPublic

Authored by nick_spun.io on Jun 4 2026, 11:20 AM.
Referenced Files
F168003180: D57437.id.diff
Tue, Aug 25, 9:00 PM
F167917740: D57437.id179195.diff
Tue, Aug 25, 10:27 AM
Unknown Object (File)
Mon, Aug 24, 8:47 AM
Unknown Object (File)
Mon, Aug 24, 6:00 AM
Unknown Object (File)
Sun, Aug 23, 5:45 PM
Unknown Object (File)
Fri, Aug 21, 2:51 PM
Unknown Object (File)
Fri, Aug 21, 11:05 AM
Unknown Object (File)
Fri, Aug 21, 11:01 AM
Subscribers

Details

Summary
  • Configure the RX buffer size from the interface MTU and enable jumbo frames up to 9000 bytes, replacing the fixed standard-frame setup.
  • Advertise IFCAP_LRO so iflib coalesces received TCP segments with its software tcp_lro(9), like every other in-tree iflib driver (ix/igc/em/vmxnet3); aq does no hardware LRO. iflib builds the per-RX-queue LRO context unconditionally, so the capability bit is all that is required; enabled by default via isc_capenable, toggle at runtime with ifconfig.
  • Add suspend/shutdown/resume handlers, replacing the unimplemented- function placeholders. aq_if_shutdown/aq_if_suspend stop the interface and deinitialize the hardware; aq_if_resume re-resets the F/W, re-reads the mailbox address and re-selects fw_ops via aq_hw_mpi_create() before iflib re-inits, because the runtime init path (aq_hw_init) reuses the cached mailbox/fw_ops and a D3 power cycle can clear them. iflib calls IFDI_RESUME unconditionally, so this also covers resuming while the interface was administratively down.

Diff Detail

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