linux/net/dccp
Gerrit Renker bfe24a6cc2 [DCCP] ccid3: Simplify calculation for reverse lookup of p
This simplifies the calculation of a value p for a given fval when the
 first loss interval is computed (RFC 3448, 6.3.1). It makes use of the
 two new functions scaled_div/scaled_div32 to provide overflow protection.

 Additionally, protection against divide-by-zero is extended - in this
 case the function will return the maximally possible value of p=100%.

Background:

 The maximum fval, f(100%), is approximately 244, i.e. the scaled value of fval
 should never exceed 244E6, which fits easily into u32. The problem is the scaling
 by 10^6, since additionally R(TT) is in microseconds.
 This is resolved by breaking the division into two stages: the first stage
 computes fval=(s*10^6)/R, stores that into u64; the second stage computes
 fval = (fval*10^6)/X_recv and complains if overflow is reached for u32.
 This case is safe since the TFRC reverse-lookup routine then returns p=100%.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-11 14:34:44 -08:00
..
ccids [DCCP] ccid3: Simplify calculation for reverse lookup of p 2006-12-11 14:34:44 -08:00
ackvec.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
ackvec.h [DCCP] ackvec: infrastructure for sending more than one ackvec per packet 2006-12-02 21:30:32 -08:00
ccid.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
ccid.h [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
dccp.h [DCCP]: Remove timeo from output.c 2006-12-11 14:34:37 -08:00
diag.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
feat.c [DCCP]: Simplified conditions due to use of enum:8 states 2006-12-02 21:24:38 -08:00
feat.h [DCCP]: Make feature negotiation more readable 2006-12-02 21:22:29 -08:00
input.c [DCCP]: Simplified conditions due to use of enum:8 states 2006-12-02 21:24:38 -08:00
ipv4.c [DCCP]: Simplified conditions due to use of enum:8 states 2006-12-02 21:24:38 -08:00
ipv6.c [DCCP]: Simplified conditions due to use of enum:8 states 2006-12-02 21:24:38 -08:00
ipv6.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
Kconfig [DCCP]: enable debug messages also for static builds 2006-12-02 21:24:35 -08:00
Makefile [DCCPv6]: Resolve conditional build problem 2006-12-02 21:22:28 -08:00
minisocks.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-05 14:37:56 +00:00
options.c [DCCP] ackvec: infrastructure for sending more than one ackvec per packet 2006-12-02 21:30:32 -08:00
output.c [DCCP]: Remove timeo from output.c 2006-12-11 14:34:37 -08:00
probe.c [DCCP]: Make dccp_probe more portable 2006-12-02 21:24:39 -08:00
proto.c [DCCP]: Make {set,get}sockopt(DCCP_SOCKOPT_PACKET_SIZE) return 0 2006-12-02 21:31:00 -08:00
sysctl.c [DCCP]: Remove allocation of sysctl numbers 2006-12-02 21:30:56 -08:00
timer.c [DCCP]: Remove forward declarations in timer.c 2006-12-02 21:22:20 -08:00