android_kernel_oneplus_msm8998/net
Gerrit Renker 231cc2aaf1 dccp ccid-2: Replace broken RTT estimator with better algorithm
The current CCID-2 RTT estimator code is in parts broken and lags behind the
suggestions in RFC2988 of using scaled variants for SRTT/RTTVAR.

That code is replaced by the present patch, which reuses the Linux TCP RTT
estimator code.

Further details:
----------------
 1. The minimum RTO of previously one second has been replaced with TCP's, since
    RFC4341, sec. 5 says that the minimum of 1 sec. (suggested in RFC2988, 2.4)
    is not necessary. Instead, the TCP_RTO_MIN is used, which agrees with DCCP's
    concept of a default RTT (RFC 4340, 3.4).
 2. The maximum RTO has been set to DCCP_RTO_MAX (64 sec), which agrees with
    RFC2988, (2.5).
 3. De-inlined the function ccid2_new_ack().
 4. Added a FIXME: the RTT is sampled several times per Ack Vector, which will
    give the wrong estimate. It should be replaced with one sample per Ack.
    However, at the moment this can not be resolved easily, since
    - it depends on TX history code (which also needs some work),
    - the cleanest solution is not to use the `sent' time at all (saves 4 bytes
      per entry) and use DCCP timestamps / elapsed time to estimated the RTT,
      which however is non-trivial to get right (but needs to be done).

Reasons for reusing the Linux TCP estimator algorithm:
------------------------------------------------------
Some time was spent to find a better alternative, using basic RFC2988 as a first
step. Further analysis and experimentation showed that the Linux TCP RTO
estimator is superior to a basic RFC2988 implementation. A summary is on
http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/ccid2/rto_estimator/

In addition, this estimator fared well in a recent empirical evaluation:

    Rewaskar, Sushant, Jasleen Kaur and F. Donelson Smith.
    A Performance Study of Loss Detection/Recovery in Real-world TCP
    Implementations. Proceedings of 15th IEEE International
    Conference on Network Protocols (ICNP-07), 2007.

Thus there is significant benefit in reusing the existing TCP code.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-08-23 20:13:31 -07:00
..
9p fs/9p: destroy fid on failed remove 2010-08-02 14:28:36 -05:00
802
8021q net: 802.1q: make vlan_hwaccel_do_receive() return void 2010-08-22 21:03:33 -07:00
appletalk
atm atm: remove a net_device_stats clear 2010-08-19 00:14:36 -07:00
ax25 net/ax25: Use available error codes 2010-08-18 14:26:31 -07:00
bluetooth Bluetooth: Fix incorrect setting of remote_tx_win for L2CAP ERTM 2010-08-10 07:59:11 -04:00
bridge bridge: is PACKET_LOOPBACK unlikely()? 2010-08-22 21:09:04 -07:00
caif caif: Bugfix - Increase default headroom size for control channel. 2010-08-10 16:39:27 -07:00
can net: simplify flags for tx timestamping 2010-08-19 00:08:30 -07:00
core net: Rename skb_has_frags to skb_has_frag_list 2010-08-23 00:13:46 -07:00
dcb
dccp dccp ccid-2: Replace broken RTT estimator with better algorithm 2010-08-23 20:13:31 -07:00
decnet net/decnet: Adjust confusing if indentation 2010-08-16 21:06:30 -07:00
dns_resolver DNS: If the DNS server returns an error, allow that to be cached [ver #2] 2010-08-11 17:11:28 +00:00
dsa phylib: available for any speed ethernet 2010-08-11 23:03:50 -07:00
econet
ethernet
ieee802154
ipv4 net: Rename skb_has_frags to skb_has_frag_list 2010-08-23 00:13:46 -07:00
ipv6 net: Rename skb_has_frags to skb_has_frag_list 2010-08-23 00:13:46 -07:00
ipx
irda irda: use net_device_stats from struct net_device 2010-08-21 23:32:31 -07:00
iucv
key
l2tp ppp: make channel_ops const 2010-08-04 21:53:17 -07:00
lapb
llc
mac80211 param: simple locking for sysfs-writable charp parameters 2010-08-11 23:04:31 +09:30
netfilter netfilter: xt_hashlimit: use proto_ports_offset() to support AH message 2010-08-19 17:16:25 -07:00
netlabel
netlink netlink: fix compat recvmsg 2010-08-18 23:35:58 -07:00
netrom
packet net: simplify flags for tx timestamping 2010-08-19 00:08:30 -07:00
phonet
rds rds: fix a leak of kernel memory 2010-08-18 23:40:03 -07:00
rfkill
rose net/rose: Use GFP_ATOMIC 2010-08-01 00:32:12 -07:00
rxrpc Add a dummy printk function for the maintenance of unused printks 2010-08-12 09:51:35 -07:00
sched net/sched: need to include net/ip6_checksum.h 2010-08-22 20:31:14 -07:00
sctp Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-08-04 15:31:02 -07:00
sunrpc nfs: update for module_param_named API change 2010-08-11 23:04:15 +09:30
tipc tipc: Prevent missing name table entries when link flip-flops rapidly 2010-08-17 17:32:00 -07:00
unix
wanrouter
wimax
wireless cfg80211: fix locking in action frame TX 2010-08-09 15:18:57 -04:00
x25
xfrm xfrm: Use GFP_ATOMIC in xfrm_compile_policy 2010-08-14 22:38:09 -07:00
compat.c
Kconfig DNS: Separate out CIFS DNS Resolver code 2010-08-05 17:17:51 +00:00
Makefile DNS: Separate out CIFS DNS Resolver code 2010-08-05 17:17:51 +00:00
nonet.c
socket.c net: simplify flags for tx timestamping 2010-08-19 00:08:30 -07:00
sysctl_net.c
TUNABLE