summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfenner <fenner@FreeBSD.org>1998-05-17 06:39:38 +0000
committerfenner <fenner@FreeBSD.org>1998-05-17 06:39:38 +0000
commite8a137bc32966c8dae0c5b61af86afc27acb77d4 (patch)
tree59e1064ad31f70b5bf815dd35e96ff8263653c21
parent9b04841c1bd3ffd81c2ef5dcbc033b53388c4dea (diff)
downloadFreeBSD-src-e8a137bc32966c8dae0c5b61af86afc27acb77d4.zip
FreeBSD-src-e8a137bc32966c8dae0c5b61af86afc27acb77d4.tar.gz
Turn on TCP_NODELAY on the remote socket, to turn off sender silly window
syndrome avoidance. The combination of SWS avoidance and ack-every-other causes low throughput if the block size divided by the MSS is odd (which is true with the default block size and MSS). Turning on TCP_NODELAY disables the Nagle algorithm and sender SWS avoidance. The rdump request/response protocol can not invoke Nagle and cannot cause SWS, so this has no negative effects.
-rw-r--r--sbin/dump/dumprmt.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/sbin/dump/dumprmt.c b/sbin/dump/dumprmt.c
index 0be7866..6420eaa 100644
--- a/sbin/dump/dumprmt.c
+++ b/sbin/dump/dumprmt.c
@@ -51,6 +51,7 @@ static char sccsid[] = "@(#)dumprmt.c 8.3 (Berkeley) 4/28/95";
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
+#include <netinet/tcp.h>
#include <protocols/dumprestore.h>
@@ -142,12 +143,10 @@ rmtgetconn()
register const char *rmt;
static struct servent *sp = NULL;
static struct passwd *pwd = NULL;
-#ifdef notdef
- static int on = 1;
-#endif
char *tuser;
int size;
int throughput;
+ int on;
if (sp == NULL) {
sp = getservbyname(dokerberos ? "kshell" : "shell", "tcp");
@@ -199,11 +198,9 @@ rmtgetconn()
if (setsockopt(rmtape, IPPROTO_IP, IP_TOS,
&throughput, sizeof(throughput)) < 0)
perror("IP_TOS:IPTOS_THROUGHPUT setsockopt");
-
-#ifdef notdef
+ on = 1;
if (setsockopt(rmtape, IPPROTO_TCP, TCP_NODELAY, &on, sizeof (on)) < 0)
perror("TCP_NODELAY setsockopt");
-#endif
}
static int
OpenPOWER on IntegriCloud