Rx: Do not compute RTT on non-last packets of a jumbogram
authorJeffrey Altman <jaltman@your-file-system.com>
Sat, 16 Oct 2010 17:14:03 +0000 (13:14 -0400)
committerDerrick Brashear <shadow@dementia.org>
Mon, 18 Oct 2010 17:19:09 +0000 (10:19 -0700)
A jumbogram is constructed as a series of rx packets that are
all sent at once and acknowledged at the same time.  Computing the
RTT for all of the packets that makes up the jumbogram provides
the jumbogram RTT more weight than for a non-jumbogram packet.
To restore fairness, only compute the RTT for the last packet of
a jumbogram.  The non-last packets with have the RX_JUMBO_PACKET flag
set in the packet header.

Change-Id: Ia5237d9ca0707b39fe623639233b748b6798063e
Reviewed-on: http://gerrit.openafs.org/2997
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/rx/rx.c

index 794834a..775fd62 100644 (file)
@@ -3916,10 +3916,12 @@ rxi_ComputePeerNetStats(struct rx_call *call, struct rx_packet *p,
     struct rx_peer *peer = call->conn->peer;
 
     /* Use RTT if not delayed by client and
-     * ignore packets that were retransmitted. */
+     * ignore packets that were retransmitted and
+     * ignore all but the last packet of a jumbogram. */
     if (!(p->flags & RX_PKTFLAG_ACKED) &&
         ap->reason != RX_ACK_DELAY &&
-        clock_Eq(&p->timeSent, &p->firstSent))
+        clock_Eq(&p->timeSent, &p->firstSent) &&
+        !(p->header.flags & RX_JUMBO_PACKET))
        rxi_ComputeRoundTripTime(p, &p->timeSent, peer, now);
 #ifdef ADAPT_WINDOW
     rxi_ComputeRate(peer, call, p, np, ap->reason);