Page MenuHomeFreeBSD

Fix window update issue when scaling disabled
ClosedPublic

Authored by shurd on Jan 11 2019, 5:16 PM.
Tags
None
Referenced Files
F139084850: D18821.diff
Sun, Dec 7, 2:08 PM
Unknown Object (File)
Fri, Nov 28, 4:45 AM
Unknown Object (File)
Wed, Nov 26, 5:17 AM
Unknown Object (File)
Sun, Nov 23, 2:38 PM
Unknown Object (File)
Thu, Nov 20, 7:21 PM
Unknown Object (File)
Thu, Nov 20, 7:21 PM
Unknown Object (File)
Thu, Nov 20, 7:20 PM
Unknown Object (File)
Thu, Nov 20, 7:09 PM
Subscribers

Details

Summary

When the TCP window scale option is not used, and the window
opens up enough in one soreceive, a window update will not be sent.

For example, if recwin == 65535, so->so_rcv.sb_hiwat >= 262144, and
so->so_rcv.sb_hiwat <= 524272, the window update will never be sent.
This is because recwin and adv are clamped to TCP_MAXWIN << tp->rcv_scale,
and so will never be >= so->so_rcv.sb_hiwat or <= so->so_rcv.sb_hiwat / 8.

This patch ensures a window update is sent if the window opens by
TCP_MAXWIN << tp->rcv_scale, which should only happen when the window
size goes from zero to the max expressible.

This issue looks like it was introduced in r306769 when recwin was clamped
to TCP_MAXWIN << tp->rcv_scale.

Test Plan

Test RFC1323 extensions enabled and disabled to ensure there
are no regressions.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

This revision was not accepted when it landed; it landed in state Needs Review.Jan 15 2019, 5:40 PM
This revision was automatically updated to reflect the committed changes.