rx: Fix starting of transmit timers
authorSimon Wilkinson <sxw@your-file-system.com>
Mon, 25 Oct 2010 19:50:29 +0000 (20:50 +0100)
committerDerrick Brashear <shadow@dementia.org>
Tue, 26 Oct 2010 15:11:14 +0000 (08:11 -0700)
commite7066a9c30047e787d72f02dd1c28e5e473e494b
treefaa007c9ea2ec4953d4aa6052f85a2d5146cb5a3
parent802d50bc4e220b9bf404ac1ee36720023986d98e
rx: Fix starting of transmit timers

The code used to start the transmit timer once for every set of packets
that it sends. However, these packets might be sent individually or in
clumps, with blocking for sendmsg, and on peer->lock, between each set
of packet sends. This has the effect of, even on a very stable network,
producing a high degree of variation in RTTs and timeouts. This is a
particular issue where the connection size is larger, as the number of
packets being sent individually under the one timer grows too.

Fix this by moving timer initialisation to SendList. This already takes
the peer lock, so obtain the timeout value here too. This means that
each jumbo gram, or individual packet (where jumbograms are disabled)
is sent with its own start time, and stabilises RTTs.

Change-Id: Ifc8242211cedad9b52a66a44bbdee400130ab40b
Reviewed-on: http://gerrit.openafs.org/3137
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/rx/rx.c