Page MenuHomeFreeBSD

D24515.id71074.diff
No OneTemporary

D24515.id71074.diff

Index: sys/netinet/tcp_output.c
===================================================================
--- sys/netinet/tcp_output.c
+++ sys/netinet/tcp_output.c
@@ -1237,8 +1237,11 @@
if (flags & TH_SYN)
th->th_win = htons((u_short)
(min(sbspace(&so->so_rcv), TCP_MAXWIN)));
- else
+ else {
+ /* Avoid shrinking window with window scaling. */
+ recwin = roundup2(recwin, 1 << tp->rcv_scale);
th->th_win = htons((u_short)(recwin >> tp->rcv_scale));
+ }
/*
* Adjust the RXWIN0SENT flag - indicate that we have advertised
Index: sys/netinet/tcp_stacks/bbr.c
===================================================================
--- sys/netinet/tcp_stacks/bbr.c
+++ sys/netinet/tcp_stacks/bbr.c
@@ -13753,8 +13753,11 @@
if (flags & TH_SYN)
th->th_win = htons((u_short)
(min(sbspace(&so->so_rcv), TCP_MAXWIN)));
- else
+ else {
+ /* Avoid shrinking window with window scaling. */
+ recwin = roundup2(recwin, 1 << tp->rcv_scale);
th->th_win = htons((u_short)(recwin >> tp->rcv_scale));
+ }
/*
* Adjust the RXWIN0SENT flag - indicate that we have advertised a 0
* window. This may cause the remote transmitter to stall. This
Index: sys/netinet/tcp_stacks/rack.c
===================================================================
--- sys/netinet/tcp_stacks/rack.c
+++ sys/netinet/tcp_stacks/rack.c
@@ -9570,8 +9570,11 @@
if (flags & TH_SYN)
th->th_win = htons((u_short)
(min(sbspace(&so->so_rcv), TCP_MAXWIN)));
- else
+ else {
+ /* Avoid shrinking window with window scaling. */
+ recwin = roundup2(recwin, 1 << tp->rcv_scale);
th->th_win = htons((u_short)(recwin >> tp->rcv_scale));
+ }
/*
* Adjust the RXWIN0SENT flag - indicate that we have advertised a 0
* window. This may cause the remote transmitter to stall. This

File Metadata

Mime Type
text/plain
Expires
Wed, Jun 24, 12:35 AM (14 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34265577
Default Alt Text
D24515.id71074.diff (1 KB)

Event Timeline