freebsd-nq/sys/netinet
Andre Oppermann f62563d33c Prevent a flurry of forced window updates when an application is
doing small reads on a (partially) filled receive socket buffer.

Normally one would a send a window update every time the available
space in the socket buffer increases by two times MSS.  This leads
to a flurry of window updates that do not provide any meaningful
new information to the sender.  There still is available space in
the window and the sender can continue sending data.  All window
updates then get carried by the regular ACKs.  Only when the socket
buffer was (almost) full and the window closed accordingly a window
updates delivery new information and allows the sender to start
sending more data again.

Send window updates only every two MSS when the socket buffer
has less than 1/8 space available, or the available space in the
socket buffer increased by 1/4 its full capacity, or the socket
buffer is very small.  The next regular data ACK will carry and
report the exact window size again.

Reported by:	sbruno
Tested by:	darrenr
Tested by:	Darren Baginski
PR:		kern/116335
MFC after:	2 weeks
2012-10-28 17:40:35 +00:00
..
cc Staticize malloc types. 2011-04-13 11:28:46 +00:00
khelp The TCP PAWS fix for kernels with fast tick rates (r231767) changed the TCP 2012-08-17 01:49:51 +00:00
libalias Avoid potential bad pointer dereference. 2012-10-17 20:23:07 +00:00
accf_data.c
accf_dns.c
accf_http.c Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
cc.h Use the full and proper company name for Swinburne University of Technology 2011-04-12 08:13:18 +00:00
icmp6.h Correct typo in the RFC number for the constants based on IANA assignments 2012-03-04 18:47:20 +00:00
icmp_var.h Add rate limitation for SCTP OOTB responses. 2012-06-18 17:11:24 +00:00
if_atm.c
if_atm.h
if_ether.c Provide a sysctl switch that allows to install ARP entries 2012-09-03 14:29:28 +00:00
if_ether.h - Updated TOE support in the kernel. 2012-06-19 07:34:13 +00:00
igmp_var.h
igmp.c Do not reduce ip_len by size of IP header in the ip_input() 2012-10-23 08:33:13 +00:00
igmp.h
in_cksum.c nobody uses this file except the userspace ipfw code, but the cast 2012-07-31 08:04:49 +00:00
in_debug.c Remove last remnants of classful addressing: 2011-10-15 16:28:06 +00:00
in_gif.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
in_gif.h
in_mcast.c Remove unused variable. 2012-01-24 14:27:14 +00:00
in_pcb.c There is a complex race in in_pcblookup_hash() and in_pcblookup_group(). 2012-10-02 12:03:02 +00:00
in_pcb.h There is a complex race in in_pcblookup_hash() and in_pcblookup_group(). 2012-10-02 12:03:02 +00:00
in_pcbgroup.c Implement a CPU-affine TCP and UDP connection lookup data structure, 2011-06-06 12:55:02 +00:00
in_proto.c Bunch of fixes to pfsync(4) module load/unload: 2012-01-09 08:50:22 +00:00
in_rmx.c Cleanup documentation: cloning route support has been removed in r186119. 2012-10-13 09:31:01 +00:00
in_systm.h
in_var.h Do not check if found IPv4 rte is dynamic if net.inet.icmp.drop_redirect is 2012-10-10 19:06:11 +00:00
in.c Though I disagree, I conceed to jhb & Rui. Note 2012-08-19 11:54:02 +00:00
in.h Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
ip6.h
ip_carp.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
ip_carp.h Restore a feature that was present in 5.x and 6.x, and was cleared in 2011-12-20 13:53:31 +00:00
ip_divert.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
ip_divert.h
ip_dummynet.h s/lenght/length/ in comments 2012-08-07 07:52:25 +00:00
ip_ecn.c
ip_ecn.h
ip_encap.c
ip_encap.h
ip_fastfwd.c o Remove last argument to ip_fragment(), and obtain all needed information 2012-10-26 21:06:33 +00:00
ip_fw.h Revert r234834 per luigi@ request. 2012-05-03 08:56:43 +00:00
ip_gre.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
ip_gre.h
ip_icmp.c Use ip_stripoptions() instead of handrolled version. 2012-10-23 10:30:09 +00:00
ip_icmp.h
ip_id.c
ip_input.c Remove the IPFIREWALL_FORWARD kernel option and make possible to turn 2012-10-25 09:39:14 +00:00
ip_ipsec.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
ip_ipsec.h
ip_mroute.c o Remove last argument to ip_fragment(), and obtain all needed information 2012-10-26 21:06:33 +00:00
ip_mroute.h Remove route caching from IP multicast routing code. There is no 2012-07-02 19:44:18 +00:00
ip_options.c Simplify ip_stripoptions() reducing number of intermediate 2012-10-23 10:29:31 +00:00
ip_options.h In ip_stripoptions(): 2012-10-12 09:24:24 +00:00
ip_output.c o Remove last argument to ip_fragment(), and obtain all needed information 2012-10-26 21:06:33 +00:00
ip_var.h o Remove last argument to ip_fragment(), and obtain all needed information 2012-10-26 21:06:33 +00:00
ip.h Add ToS definitions for DiffServ Codepoints as per RFC2474. 2012-05-04 21:00:32 +00:00
pim_var.h
pim.h
raw_ip.c Do not reduce ip_len by size of IP header in the ip_input() 2012-10-23 08:33:13 +00:00
sctp_asconf.c Whitespace cleanup. 2012-09-08 20:54:54 +00:00
sctp_asconf.h Pass the src and dst address of a received packet explicitly around. 2012-06-28 16:01:08 +00:00
sctp_auth.c Using %p in a format string requires a void *. 2012-09-05 18:52:01 +00:00
sctp_auth.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_bsd_addr.c Testing an interface property should depend on the interface, not 2012-08-04 08:03:30 +00:00
sctp_bsd_addr.h Do packet logging in a consistent way. 2012-06-24 21:25:54 +00:00
sctp_cc_functions.c Get rid of a gcc'ism. 2012-09-06 07:03:56 +00:00
sctp_constants.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_crc32.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_crc32.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_dtrace_declare.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_dtrace_define.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_header.h Don't include a structure containing a flexible array in another 2012-09-07 13:36:42 +00:00
sctp_indata.c Don't include a structure containing a flexible array in another 2012-09-07 13:36:42 +00:00
sctp_indata.h Pass the src and dst address of a received packet explicitly around. 2012-06-28 16:01:08 +00:00
sctp_input.c Do not reduce ip_len by size of IP header in the ip_input() 2012-10-23 08:33:13 +00:00
sctp_input.h Don't include a structure containing a flexible array in another 2012-09-07 13:36:42 +00:00
sctp_lock_bsd.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_os_bsd.h Pass the src and dst address of a received packet explicitly around. 2012-06-28 16:01:08 +00:00
sctp_os.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_output.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
sctp_output.h Small cleanups. No functional change. 2012-09-22 14:39:20 +00:00
sctp_pcb.c Whitespace change. 2012-09-23 07:43:10 +00:00
sctp_pcb.h Pass the src and dst address of a received packet explicitly around. 2012-06-28 16:01:08 +00:00
sctp_peeloff.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_peeloff.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_ss_functions.c Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_structs.h Don't include a structure containing a flexible array in another 2012-09-07 13:36:42 +00:00
sctp_sysctl.c Whitespace cleanup. 2012-06-25 17:15:09 +00:00
sctp_sysctl.h Whitespace cleanup. 2012-06-25 17:15:09 +00:00
sctp_timer.c Using %p in a format string requires a void *. 2012-09-05 18:52:01 +00:00
sctp_timer.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
sctp_uio.h Remove __P. 2012-10-22 21:49:56 +00:00
sctp_usrreq.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
sctp_var.h Remove __P. 2012-10-22 21:49:56 +00:00
sctp.h Undefine SCTP_PACKED before including sctp_uio.h, which doesn't 2012-05-25 11:14:08 +00:00
sctputil.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
sctputil.h Pass the src and dst address of a received packet explicitly around. 2012-06-28 16:01:08 +00:00
siftr.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
tcp_debug.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
tcp_debug.h
tcp_fsm.h
tcp_hostcache.c - Update cachelimit after hashsize and bucketlimit were set. 2012-10-19 14:00:03 +00:00
tcp_hostcache.h
tcp_input.c When SYN or SYN/ACK had to be retransmitted RFC5681 requires us to 2012-10-28 17:25:08 +00:00
tcp_lro.c Make TCP LRO work properly with VIMAGE kernels rather than just panicing. 2012-06-01 11:42:50 +00:00
tcp_lro.h MFp4 bz_ipv6_fast: 2012-05-24 23:03:23 +00:00
tcp_offload.c - Updated TOE support in the kernel. 2012-06-19 07:34:13 +00:00
tcp_offload.h - Updated TOE support in the kernel. 2012-06-19 07:34:13 +00:00
tcp_output.c Prevent a flurry of forced window updates when an application is 2012-10-28 17:40:35 +00:00
tcp_reass.c Plug a TCP reassembly UMA zone leak introduced in r226113 by only using the 2011-11-27 02:32:08 +00:00
tcp_sack.c Covers values if (BYTES_THIS_ACK(tp, th) / tp->t_maxseg) value is from 2011-03-28 19:03:56 +00:00
tcp_seq.h Fix PAWS (Protect Against Wrapped Sequence numbers) in cases when 2012-02-15 16:09:56 +00:00
tcp_subr.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
tcp_syncache.c When SYN or SYN/ACK had to be retransmitted RFC5681 requires us to 2012-10-28 17:25:08 +00:00
tcp_syncache.h - Updated TOE support in the kernel. 2012-06-19 07:34:13 +00:00
tcp_timer.c When SYN or SYN/ACK had to be retransmitted RFC5681 requires us to 2012-10-28 17:25:08 +00:00
tcp_timer.h Add new socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL and 2012-02-05 16:53:02 +00:00
tcp_timewait.c Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
tcp_usrreq.c Fix bug in TCP_KEEPCNT setting, which slipped in in the last round 2012-09-27 07:13:21 +00:00
tcp_var.h - Updated TOE support in the kernel. 2012-06-19 07:34:13 +00:00
tcp.h Add new socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL and 2012-02-05 16:53:02 +00:00
tcpip.h
toecore.c Revert previous commit... 2012-10-10 08:36:38 +00:00
toecore.h Correctly handle the case where an inp has already been dropped by the time 2012-08-21 18:09:33 +00:00
udp_usrreq.c Remove the IPFIREWALL_FORWARD kernel option and make possible to turn 2012-10-25 09:39:14 +00:00
udp_var.h Export the udp_cksum sysctl for upcoming SCTP work. Rather than always, 2012-03-27 15:14:29 +00:00
udp.h Trim extra spaces before tabs. 2011-01-07 21:40:34 +00:00