Page MenuHomeFreeBSD

Compressed ack enhancements to LRO

Authored by rrs on Jan 27 2021, 5:18 PM.



For quite some time NF has had a new enhancement to LRO which
allows a transport (tcp) to get a number of compressed acknowledgements
in one small (or large) mbuf. This saves further CPU and can create
added fast paths since you only have one cache miss getting the
mbuf into cache and then from there you can walk through the small
mbuf that gives TCP all the ack information it needs.

Now the transport needs to support this new type of ack processing
and so indicate that on the inp otherwise the processing stays as before.
After these changes are in the follow on will be an updated rack that
uses these features to make pacing more affordable.

Test Plan

We have been running this code at NF now for roughly 6 months, though
full testing cannot be done without the rack update since the transport must
subscribe to this feature. Only limited testing, making sure not setting the flags
does not change the existing LRO behavior, can be done without an transport
that subscribes to the new type of acknowledgment via inp_flags2 flags.

Diff Detail

R10 FreeBSD src repository
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

rrs requested review of this revision.Jan 27 2021, 5:18 PM

Looks like I forgot to make sure we get the counters properly initialized in tcp_subr.c opps.

This revision is now accepted and ready to land.Feb 4 2021, 5:20 PM