Page MenuHomeFreeBSD

Preserve ECN bits when merging frames in LRO
AcceptedPublic

Authored by rstone on Sep 8 2016, 2:16 AM.

Details

Reviewers
hiren
Group Reviewers
transport
Summary

Currently LRO uses the L3 header from the first packet in the
flow basically verbatim. This is incorrect when ECN is in use.
If any packet in the flow has experienced congrestion and the
network has signalled this by setting the CE bits in the L3 header
it needs to be signalled in the L3 header that we send up the
stack.

Test Plan

Wrote a C wrapper around ng_source that injects TCP packets for a single flow into a network. I set CE only on the second packet of the flow and confirmed via tcpdump that without the fix, CE was not set without the fix. I repeated the test with the fix and confirmed that CE was set as expected. I tested both IPv4 and v6.

Diff Detail

Event Timeline

rstone retitled this revision from to Preserve ECN bits when merging frames in LRO.Sep 8 2016, 2:16 AM
rstone edited the test plan for this revision. (Show Details)
rstone updated this object.
rstone updated this revision to Diff 20160.
rstone edited the test plan for this revision. (Show Details)Sep 8 2016, 2:18 AM
rstone edited edge metadata.
kbowling added a subscriber: kbowling.
hiren edited edge metadata.Oct 23 2016, 11:34 PM
hiren accepted this revision.

Talked to @rstone about adding some comments to make code more readable.

This revision is now accepted and ready to land.Oct 23 2016, 11:34 PM