]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
rx: Don't limit the # of packets sent in recovery
authorSimon Wilkinson <sxw@your-file-system.com>
Sat, 18 Jun 2011 12:17:07 +0000 (13:17 +0100)
committerDerrick Brashear <shadow@dementia.org>
Wed, 22 Jun 2011 01:59:19 +0000 (18:59 -0700)
The RX transmit engine limits the number of packets sent whilst in
loss recovery to one per invocation of the transmit engine. As the
engine cannot be called by the application thread whilst in recovery,
this means that we end up being limited to one packet per ACK received,
which means that despite a growing congestion window we'll only send
one packet per RTT (in effect, a congenstion window of 1).

This will remain the case until we exit recovery, and all of a sudden
can send a large number of packets. If this is larger than the current
capacity of the network, we'll probably end straight back in recovery
again.

Let the congestion window do its job, by removing this arbitrary limit.

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

index 1bad02d0a74b39bb32b6fef12bc3f5e2302cfaa0..917abcc327b14ca2a3cb57dbf6024c2f68b54512 100644 (file)
@@ -6036,13 +6036,6 @@ rxi_Start(struct rx_call *call, int istack)
                nXmitPackets = 0;
                maxXmitPackets = MIN(call->twind, call->cwind);
                for (queue_Scan(&call->tq, p, nxp, rx_packet)) {
-                   if ((nXmitPackets)
-                       && (call->flags & RX_CALL_FAST_RECOVER)) {
-                       /* Only send one packet during fast recovery */
-                       dpf(("call %d restricted to one packet per send during fast recovery\n",
-                            *(call->callNumber)));
-                       break;
-                   }
 #ifdef RX_TRACK_PACKETS
                    if ((p->flags & RX_PKTFLAG_FREE)
                        || (!queue_IsEnd(&call->tq, nxp)