summaryrefslogtreecommitdiff
path: root/net/dccp/ccids/lib/tfrc.h
diff options
context:
space:
mode:
authorGerrit Renker <gerrit@erg.abdn.ac.uk>2006-12-10 05:03:30 +0300
committerDavid S. Miller <davem@sunset.davemloft.net>2006-12-12 01:34:44 +0300
commitbfe24a6cc222d27e1491f850802fa6932232b8ef (patch)
treea1782cdb20b19ffb07e1e7ce1ab7aba34fddcecd /net/dccp/ccids/lib/tfrc.h
parentb9039a2a8df974d7702564318722434bb276a995 (diff)
downloadlinux-bfe24a6cc222d27e1491f850802fa6932232b8ef.tar.xz
[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>
Diffstat (limited to 'net/dccp/ccids/lib/tfrc.h')
0 files changed, 0 insertions, 0 deletions