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)
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
Unknown Object (File)
Tue, Jun 9, 3:15 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 Not Applicable
Unit
Tests Not Applicable