kern/82470: FreeBSD advertises wrong window scale in some
situations
Pieter de Boer
pieter at os3.nl
Sun Jul 24 13:40:24 GMT 2005
The following reply was made to PR kern/82470; it has been noted by GNATS.
From: Pieter de Boer <pieter at os3.nl>
To: bug-followup at freebsd.org
Cc:
Subject: Re: kern/82470: FreeBSD advertises wrong window scale in some situations
Date: Sun, 24 Jul 2005 15:39:15 +0200
The following patch seems to fix the problem:
diff -u netinet.orig/tcp_syncache.c netinet/tcp_syncache.c
--- netinet.orig/tcp_syncache.c Sun Jul 24 15:26:14 2005
+++ netinet/tcp_syncache.c Sun Jul 24 15:26:56 2005
@@ -966,7 +966,7 @@
/* Compute proper scaling value from buffer space */
while (wscale < TCP_MAX_WINSHIFT &&
- (TCP_MAXWIN << wscale) < so->so_rcv.sb_hiwat)
+ (TCP_MAXWIN << (wscale + 1)) <= so->so_rcv.sb_hiwat)
wscale++;
sc->sc_request_r_scale = wscale;
sc->sc_requested_s_scale = to->to_requested_s_scale;
diff -u netinet.orig/tcp_usrreq.c netinet/tcp_usrreq.c
--- netinet.orig/tcp_usrreq.c Sun Jul 24 15:26:14 2005
+++ netinet/tcp_usrreq.c Sun Jul 24 15:26:47 2005
@@ -888,7 +888,7 @@
/* Compute window scaling to request. */
while (tp->request_r_scale < TCP_MAX_WINSHIFT &&
- (TCP_MAXWIN << tp->request_r_scale) < so->so_rcv.sb_hiwat)
+ (TCP_MAXWIN << (tp->request_r_scale + 1)) <= so->so_rcv.sb_hiwat)
tp->request_r_scale++;
soisconnecting(so);
@@ -950,7 +950,7 @@
/* Compute window scaling to request. */
while (tp->request_r_scale < TCP_MAX_WINSHIFT &&
- (TCP_MAXWIN << tp->request_r_scale) < so->so_rcv.sb_hiwat)
+ (TCP_MAXWIN << (tp->request_r_scale + 1)) <= so->so_rcv.sb_hiwat)
tp->request_r_scale++;
soisconnecting(so);
More information about the freebsd-net
mailing list