Page MenuHomeFreeBSD

Fix window update issue when scaling disabled
ClosedPublic

Authored by shurd on Jan 11 2019, 5:16 PM.
Tags
None
Referenced Files
F106247083: D18821.diff
Fri, Dec 27, 9:08 PM
Unknown Object (File)
Thu, Dec 26, 2:13 AM
Unknown Object (File)
Wed, Dec 25, 5:34 AM
Unknown Object (File)
Sat, Dec 14, 10:56 AM
Unknown Object (File)
Fri, Dec 13, 5:40 AM
Unknown Object (File)
Nov 14 2024, 1:10 PM
Unknown Object (File)
Nov 9 2024, 2:54 AM
Unknown Object (File)
Nov 8 2024, 10:06 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.