android_kernel_samsung_msm8976/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 [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
netfilter [NETFILTER] arp_tables: Fix unaligned accesses. 2007-04-13 16:37:54 -07:00
af_inet.c
ah4.c
arp.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
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 [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
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 [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ip_forward.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ip_fragment.c
ip_gre.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ip_input.c
ip_options.c
ip_output.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ip_sockglue.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ipcomp.c
ipconfig.c
ipip.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
ipmr.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
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.c
multipath_drr.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
multipath_random.c [IPV4]: Use random32() in net/ipv4/multipath 2007-02-26 11:43:00 -08:00
multipath_rr.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
multipath_wrandom.c [IPV4]: Use random32() in net/ipv4/multipath 2007-02-26 11:43:00 -08:00
netfilter.c
proc.c
protocol.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
raw.c
route.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
syncookies.c
sysctl_net_ipv4.c [TCP]: Add two new spurious RTO responses to FRTO 2007-04-25 22:23:23 -07:00
tcp.c [TCP]: Fix tcp_mem[] initialization. 2007-03-16 15:04:03 -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]: Use read mostly for CUBIC parameters. 2007-02-12 13:15:20 -08:00
tcp_diag.c
tcp_highspeed.c
tcp_htcp.c [TCP]: cleanup of htcp (resend) 2007-02-12 13:34:03 -08:00
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
tunnel4.c [IPSEC]: Changing API of xfrm4_tunnel_register. 2007-02-13 12:54:47 -08:00
udp.c [UDP]: Reread uh pointer after pskb_trim 2007-03-07 16:08:04 -08:00
udp_impl.h
udplite.c
xfrm4_input.c [IPSEC]: Changing API of xfrm4_tunnel_register. 2007-02-13 12:54:47 -08:00
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 [XFRM_TUNNEL]: Reload header pointer after pskb_may_pull/pskb_expand_head 2007-02-26 11:43:01 -08:00
xfrm4_output.c
xfrm4_policy.c [XFRM]: Fix oops in xfrm4_dst_destroy() 2007-02-26 12:10:32 -08:00
xfrm4_state.c
xfrm4_tunnel.c [IPSEC]: Changing API of xfrm4_tunnel_register. 2007-02-13 12:54:47 -08:00