mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[DCCP] ccid3: Finer-grained resolution of sending rates
This patch * resolves a bug where packets smaller than 32/64 bytes resulted in sending rates of 0 * supports all sending rates from 1/64 bytes/second up to 4Gbyte/second * simplifies the present overflow problems in calculations Current sending rate X and the cached value X_recv of the receiver-estimated sending rate are both scaled by 64 (2^6) in order to * cope with low sending rates (minimally 1 byte/second) * allow upgrading to use a packets-per-second implementation of CCID 3 * avoid calculation errors due to integer arithmetic cut-off The patch implements a revised strategy from http://www.mail-archive.com/dccp@vger.kernel.org/msg01040.html The only difference with regard to that strategy is that t_ipi is already used in the calculation of the nofeedback timeout, which saves one division. 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>
This commit is contained in:
parent
179ebc9f92
commit
1a21e49a8d
3 changed files with 78 additions and 39 deletions
|
@ -37,10 +37,14 @@ struct tfrc_rx_info {
|
|||
* @tfrctx_p: current loss event rate (5.4)
|
||||
* @tfrctx_rto: estimate of RTO, equals 4*RTT (4.3)
|
||||
* @tfrctx_ipi: inter-packet interval (4.6)
|
||||
*
|
||||
* Note: X and X_recv are both maintained in units of 64 * bytes/second. This
|
||||
* enables a finer resolution of sending rates and avoids problems with
|
||||
* integer arithmetic; u32 is not sufficient as scaling consumes 6 bits.
|
||||
*/
|
||||
struct tfrc_tx_info {
|
||||
__u32 tfrctx_x;
|
||||
__u32 tfrctx_x_recv;
|
||||
__u64 tfrctx_x;
|
||||
__u64 tfrctx_x_recv;
|
||||
__u32 tfrctx_x_calc;
|
||||
__u32 tfrctx_rtt;
|
||||
__u32 tfrctx_p;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue