linux/net/ipv4
Ilpo Järvinen e317f6f69c [TCP]: FRTO undo response falls back to ratehalving one if ECEd
Undoing ssthresh is disabled in fastretrans_alert whenever
FLAG_ECE is set by clearing prior_ssthresh. The clearing does
not protect FRTO because FRTO operates before fastretrans_alert.
Moving the clearing of prior_ssthresh earlier seems to be a
suboptimal solution to the FRTO case because then FLAG_ECE will
cause a second ssthresh reduction in try_to_open (the first
occurred when FRTO was entered). So instead, FRTO falls back
immediately to the rate halving response, which switches TCP to
CA_CWR state preventing the latter reduction of ssthresh.

If the first ECE arrived before the ACK after which FRTO is able
to decide RTO as spurious, prior_ssthresh is already cleared.
Thus no undoing for ssthresh occurs. Besides, FLAG_ECE should be
set also in the following ACKs resulting in rate halving response
that sees TCP is already in CA_CWR, which again prevents an extra
ssthresh reduction on that round-trip.

If the first ECE arrived before RTO, ssthresh has already been
adapted and prior_ssthresh remains cleared on entry because TCP
is in CA_CWR (the same applies also to a case where FRTO is
entered more than once and ECE comes in the middle).

High_seq must not be touched after tcp_enter_cwr because CWR
round-trip calculation depends on it.

I believe that after this patch, FRTO should be ECN-safe and
even able to take advantage of synergy benefits.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-04-25 22:23:26 -07:00
..
ipvs
netfilter [NETFILTER] arp_tables: Fix unaligned accesses. 2007-04-13 16:37:54 -07:00
af_inet.c
ah4.c
arp.c
cipso_ipv4.c [NetLabel]: parse the CIPSO ranged tag on incoming packets 2007-03-12 14:38:02 -07:00
datagram.c
devinet.c [IPV4]: Fix rtm_to_ifaddr() error handling. 2007-03-09 13:43:24 -08:00
esp4.c
fib_frontend.c [NETLINK]: Infinite recursion in netlink. 2007-04-25 13:07:28 -07:00
fib_hash.c
fib_lookup.h
fib_rules.c [NET]: Fix fib_rules compatibility breakage 2007-03-25 18:48:00 -07:00
fib_semantics.c [IPv4] fib: Fix out of bound access of fib_props[] 2007-03-25 18:48:03 -07:00
fib_trie.c [IPV4] fib_trie: Document locking. 2007-03-26 14:22:22 -07:00
icmp.c
igmp.c [IPV4]: Fix warning in ip_mc_rejoin_group. 2007-03-12 17:02:37 -07:00
inet_connection_sock.c
inet_diag.c
inet_hashtables.c
inet_timewait_sock.c
inetpeer.c
ip_forward.c
ip_fragment.c
ip_gre.c
ip_input.c
ip_options.c
ip_output.c
ip_sockglue.c
ipcomp.c
ipconfig.c
ipip.c
ipmr.c
Kconfig [TCP] YeAH-TCP: algorithm implementation 2007-04-25 22:23:18 -07:00
Makefile [TCP] YeAH-TCP: algorithm implementation 2007-04-25 22:23:18 -07:00
multipath_drr.c
multipath_random.c
multipath_rr.c
multipath_wrandom.c
multipath.c
netfilter.c
proc.c
protocol.c
raw.c
route.c
syncookies.c
sysctl_net_ipv4.c [TCP]: Add two new spurious RTO responses to FRTO 2007-04-25 22:23:23 -07:00
tcp_bic.c
tcp_cong.c [TCP]: Add RFC3742 Limited Slow-Start, controlled by variable sysctl_tcp_max_ssthresh. 2007-04-25 22:23:19 -07:00
tcp_cubic.c
tcp_diag.c
tcp_highspeed.c
tcp_htcp.c
tcp_hybla.c
tcp_input.c [TCP]: FRTO undo response falls back to ratehalving one if ECEd 2007-04-25 22:23:26 -07:00
tcp_ipv4.c [TCP]: struct *sock argument renamed: sp -> sk 2007-04-25 22:23:20 -07:00
tcp_lp.c
tcp_minisocks.c [TCP]: Keep copied_seq, rcv_wup and rcv_next together. 2007-04-25 22:23:21 -07:00
tcp_output.c [TCP]: Add two new spurious RTO responses to FRTO 2007-04-25 22:23:23 -07:00
tcp_probe.c
tcp_scalable.c
tcp_timer.c
tcp_vegas.c
tcp_veno.c
tcp_westwood.c
tcp_yeah.c [TCP] YeAH-TCP: algorithm implementation 2007-04-25 22:23:18 -07:00
tcp_yeah.h [TCP] YeAH-TCP: algorithm implementation 2007-04-25 22:23:18 -07:00
tcp.c [TCP]: Fix tcp_mem[] initialization. 2007-03-16 15:04:03 -07:00
tunnel4.c
udp_impl.h
udp.c [UDP]: Reread uh pointer after pskb_trim 2007-03-07 16:08:04 -08:00
udplite.c
xfrm4_input.c
xfrm4_mode_beet.c [XFRM]: beet: fix pseudo header length value 2007-04-23 22:39:02 -07:00
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c
xfrm4_output.c
xfrm4_policy.c
xfrm4_state.c
xfrm4_tunnel.c