Page MenuHomeFreeBSD

tcp: Rack - in the absence of LRO fixed rate pacing (loopback or interfaces with no LRO) does not work correctly.
ClosedPublic

Authored by rrs on Apr 10 2023, 8:11 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Jul 14, 2:22 AM
Unknown Object (File)
Mon, Jul 13, 4:21 AM
Unknown Object (File)
Thu, Jun 25, 4:20 AM
Unknown Object (File)
Wed, Jun 24, 7:11 AM
Unknown Object (File)
Tue, Jun 23, 2:30 AM
Unknown Object (File)
Tue, Jun 23, 2:04 AM
Unknown Object (File)
May 17 2026, 7:55 PM
Unknown Object (File)
Apr 27 2026, 1:32 AM

Details

Summary

Rack is capable of fixed rate or dynamic rate pacing. Both of these can get mixed up when
LRO is not available. This is because LRO will hold off waking up the tcp connection to
processing the inbound packets until the pacing timer is up. Without LRO the pacing only
sort-of works. Sometimes we pace correctly, other times not so much.

This set of changes will make it so pacing works properly in the absence of LRO.

Test Plan

Easiest way to test this is to setup a fixed rate pacing test over the loopback (which has no LRO). If its fixed
then we should pace properly (the BB logs can be used to validate proper spacing of packets).

Diff Detail

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