dccp ccid-3: Fix "t_ipi explosion" bug
authorGerrit Renker <gerrit@erg.abdn.ac.uk>
Tue, 27 May 2008 13:33:54 +0000 (06:33 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 27 May 2008 13:33:54 +0000 (06:33 -0700)
commit825de27d9e40b3117b29a79d412b7a4b78c5d815
tree95ab0dc853b2f68d529162e5f1dfd5e0cb5e37a9
parent6079a463cf95fafcc704a4e5e92a4da12444bd3c
dccp ccid-3: Fix "t_ipi explosion" bug

The identification of this bug is thanks to Cheng Wei and Tomasz
Grobelny.

To avoid divide-by-zero, the implementation previously ignored RTTs
smaller than 4 microseconds when performing integer division RTT/4.

When the RTT reached a value less than 4 microseconds (as observed on
loopback), this prevented the Window Counter CCVal value from
advancing. As a result, the receiver stopped sending feedback. This in
turn caused non-ending expiries of the nofeedback timer at the sender,
so that the sending rate was progressively reduced until reaching the
minimum of one packet per 64 seconds.

The patch fixes this bug by handling integer division more
intelligently. Due to consistent use of dccp_sample_rtt(),
divide-by-zero-RTT is avoided.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dccp/ccids/ccid3.c