linux/net
John Heffner 326f36e9e7 [TCP]: receive buffer growth limiting with mixed MTU
This is a patch for discussion addressing some receive buffer growing issues.
This is partially related to the thread "Possible BUG in IPv4 TCP window
handling..." last week.

Specifically it addresses the problem of an interaction between rcvbuf
moderation (receiver autotuning) and rcv_ssthresh.  The problem occurs when
sending small packets to a receiver with a larger MTU.  (A very common case I
have is a host with a 1500 byte MTU sending to a host with a 9k MTU.)  In
such a case, the rcv_ssthresh code is targeting a window size corresponding
to filling up the current rcvbuf, not taking into account that the new rcvbuf
moderation may increase the rcvbuf size.

One hunk makes rcv_ssthresh use tcp_rmem[2] as the size target rather than
rcvbuf.  The other changes the behavior when it overflows its memory bounds
with in-order data so that it tries to grow rcvbuf (the same as with
out-of-order data).

These changes should help my problem of mixed MTUs, and should also help the
case from last week's thread I think.  (In both cases though you still need
tcp_rmem[2] to be set much larger than the TCP window.)  One question is if
this is too aggressive at trying to increase rcvbuf if it's under memory
stress.

Orignally-from: John Heffner <jheffner@psc.edu>
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2005-11-10 17:11:48 -08:00
..
802 [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
8021q [8021Q]: Add endian annotations. 2005-09-19 15:41:28 -07:00
appletalk [APPLETALK]: Fix broadcast bug. 2005-09-27 16:11:29 -07:00
atm [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
ax25 [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
bluetooth [Bluetooth]: Remove the usage of /proc completely 2005-11-08 09:57:38 -08:00
bridge [BRIDGE]: Use ether_compare 2005-10-31 16:34:10 -02:00
core [NET]: Detect hardware rx checksum faults correctly 2005-11-10 13:01:24 -08:00
dccp [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
decnet [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
econet [IPV4]: Replace __in_dev_get with __in_dev_get_rcu/rtnl 2005-10-03 14:35:55 -07:00
ethernet [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
ieee80211 ieee80211: cleanup crypto list handling, other minor cleanups. 2005-11-09 01:01:04 -05:00
ipv4 [TCP]: receive buffer growth limiting with mixed MTU 2005-11-10 17:11:48 -08:00
ipv6 [NET]: Detect hardware rx checksum faults correctly 2005-11-10 13:01:24 -08:00
ipx [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
irda [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
key [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
lapb [NET]: Kill skb->list 2005-08-29 15:31:14 -07:00
llc [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
netfilter [NETFILTER]: Add nf_conntrack subsystem. 2005-11-09 16:38:16 -08:00
netlink [NETLINK]: Generic netlink family 2005-11-10 02:26:41 +01:00
netrom [AX.25]: Fix packet socket crash 2005-10-05 12:16:04 -07:00
packet [NET]: Fix packet timestamping. 2005-10-03 13:57:23 -07:00
rose [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
rxrpc [NET]: Detect hardware rx checksum faults correctly 2005-11-10 13:01:24 -08:00
sched [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
sctp [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
sunrpc [NET]: Detect hardware rx checksum faults correctly 2005-11-10 13:01:24 -08:00
unix [PATCH] add a vfs_permission helper 2005-11-09 07:55:58 -08:00
wanrouter [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
x25 [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
xfrm [XFRM]: Use generic netlink receive queue processor 2005-11-10 02:26:40 +01:00
compat.c [PATCH] Fix 32bit sendmsg() flaw 2005-09-08 08:14:11 -07:00
Kconfig [NETFILTER] move nfnetlink options to right location in kconfig menu 2005-09-17 00:41:21 -07:00
Makefile /spare/repo/netdev-2.6 branch 'master' 2005-09-01 18:02:01 -04:00
nonet.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
socket.c [NET]: Fix module reference counts for loadable protocol modules 2005-09-27 15:23:38 -07:00
sysctl_net.c [NET]: Fix "sysctl_net.c:36: error: 'core_table' undeclared here" 2005-10-03 14:16:34 -07:00
TUNABLE Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00