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)
Sep 4 2025, 11:34 AM
Unknown Object (File)
Sep 4 2025, 2:21 AM
Unknown Object (File)
Aug 13 2025, 3:44 AM
Unknown Object (File)
Aug 8 2025, 9:31 PM
Unknown Object (File)
Aug 2 2025, 1:56 PM
Unknown Object (File)
Jul 29 2025, 6:38 AM
Unknown Object (File)
Jun 30 2025, 9:55 AM
Unknown Object (File)
Jun 30 2025, 2:41 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