remarkable-linux/net/dccp
Samuel Jero 0ce95dc792 dccp ccid-2: increment cwnd correctly
This patch fixes an issue where CCID-2 will not increase the congestion
window for numerous RTTs after an idle period, application-limited period,
or a loss once the algorithm is in Congestion Avoidance.

What happens is that, when CCID-2 is in Congestion Avoidance mode, it will
increase hc->tx_packets_acked by one for every packet and will increment cwnd
every cwnd packets. However, if there is now an idle period in the connection,
cwnd will be reduced, possibly below the slow start threshold. This will
cause the connection to go into Slow Start. However, in Slow Start CCID-2
performs this test to increment cwnd every second ack:

	++hc->tx_packets_acked == 2

Unfortunately, this will be incorrect, if cwnd previous to the idle period
was larger than 2 and if tx_packets_acked was close to cwnd. For example:
	cwnd=50  and  tx_packets_acked=45.

In this case, the current code, will increment tx_packets_acked until it
equals two, which will only be once tx_packets_acked (an unsigned 32-bit
integer) overflows.

My fix is simply to change that test for tx_packets_acked greater than or
equal to two in slow start.

Signed-off-by: Samuel Jero <sj323707@ohio.edu>
Acked-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
2011-08-01 07:52:36 -06:00
..
ccids dccp ccid-2: increment cwnd correctly 2011-08-01 07:52:36 -06:00
ackvec.c
ackvec.h
ccid.c dccp: cosmetics of info message 2011-07-04 12:37:13 -06:00
ccid.h
dccp.h dccp: support for the exchange of NN options in established state 1/2 2011-08-01 07:52:34 -06:00
diag.c
feat.c dccp: send Confirm options only once 2011-08-01 07:52:35 -06:00
feat.h dccp: support for the exchange of NN options in established state 1/2 2011-08-01 07:52:34 -06:00
input.c dccp: Clean up slow-path input processing 2011-07-04 12:36:33 -06:00
ipv4.c ipv4: Make caller provide flowi4 key to inet_csk_route_req(). 2011-05-18 18:32:03 -04:00
ipv6.c inet: add RCU protection to inet->opt 2011-04-28 13:16:35 -07:00
ipv6.h
Kconfig
Makefile
minisocks.c
options.c dccp: handle invalid feature options length 2011-05-06 13:05:50 -07:00
output.c dccp: combine the functionality of enqeueing and cloning 2011-07-04 12:36:47 -06:00
probe.c
proto.c dccp ccid-2: use feature-negotiation to report Ack Ratio changes 2011-08-01 07:52:35 -06:00
qpolicy.c
sysctl.c
timer.c