Page MenuHomeFreeBSD

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

Authored by nick_spun.io on Thu, Jun 4, 11:20 AM.
Referenced Files
Unknown Object (File)
Thu, Jun 25, 9:32 AM
Unknown Object (File)
Fri, Jun 19, 1:59 AM
Unknown Object (File)
Wed, Jun 17, 12:10 PM
Unknown Object (File)
Wed, Jun 17, 12:09 PM
Unknown Object (File)
Mon, Jun 15, 1:58 AM
Unknown Object (File)
Sat, Jun 13, 12:56 PM
Unknown Object (File)
Sat, Jun 13, 7:53 AM
Unknown Object (File)
Tue, Jun 9, 9:33 PM
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 Skipped
Unit
Tests Skipped
Build Status
Buildable 73664
Build 70547: arc lint + arc unit