]> git.michaelhowe.org Git - packages/o/openafs.git/commit
rx: do not rxi_AckAll for one data packet call
authorJeffrey Altman <jaltman@your-file-system.com>
Sun, 5 Jun 2011 20:02:46 +0000 (16:02 -0400)
committerDerrick Brashear <shadow@dementia.org>
Thu, 7 Jul 2011 14:04:09 +0000 (07:04 -0700)
commit587cc8652bab48da7282f49bedf2eff8ea1cc88e
treefd3d0860c3de3d0921b15621455f34589a8b6b06
parent8103a9a0e92d937c187515db5a0d57fff5a50df0
rx: do not rxi_AckAll for one data packet call

rxi_ReceiveDataPacket() calls rxi_AckAll() when the call reaches
the RX_CALL_RECEIVE_DONE state to permit the caller to empty the
transmit queue.  That reduces the memory consumption of the caller
and avoids unnecessary retransmits which the call is in process.

If the call data consists of a single packet it is possible that
Ping ACK packets sent as part of connection establishment could
race with the ACKALL and be delivered out of order.  If the Ping
ACK is delivered second, it will be ignored by the peer forcing
a two second delay in connection establishment.  To avoid the race
do not send an ACKALL for a single packet call.

Reviewed-on: http://gerrit.openafs.org/4799
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
(cherry picked from commit ff30293624a7e31d585b9e8f2e1a439cf87b6524)

Change-Id: Ic64917c40aa29f9e99c434ab2f9ba2e4abc38883
Reviewed-on: http://gerrit.openafs.org/4913
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/rx/rx.c