]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
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>
Tue, 26 Oct 2010 01:11:38 +0000 (18:11 -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.

Reviewed-on: http://gerrit.openafs.org/2997
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit 525ea8b60cc198f7e12da7a1aaffdcad2bb3ef21)
Change-Id: Ide4c225516dc7585b49ba7b244b56446297c74d1
Reviewed-on: http://gerrit.openafs.org/3112

src/rx/rx.c

index b9ee6d6d259e922e99f243b0b03f2a1d83124420..b845985014305b35d29f193f81fb7991083acd5b 100644 (file)
@@ -3864,10 +3864,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);