diff options
author | fenner <fenner@FreeBSD.org> | 1998-05-17 06:39:38 +0000 |
---|---|---|
committer | fenner <fenner@FreeBSD.org> | 1998-05-17 06:39:38 +0000 |
commit | e8a137bc32966c8dae0c5b61af86afc27acb77d4 (patch) | |
tree | 59e1064ad31f70b5bf815dd35e96ff8263653c21 /sbin | |
parent | 9b04841c1bd3ffd81c2ef5dcbc033b53388c4dea (diff) | |
download | FreeBSD-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.
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/dump/dumprmt.c | 9 |
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 |