• David Howells's avatar
    rxrpc: Fix RTT gathering · b604dd98
    David Howells authored
    Fix RTT information gathering in AF_RXRPC by the following means:
    
     (1) Enable Rx timestamping on the transport socket with SO_TIMESTAMPNS.
    
     (2) If the sk_buff doesn't have a timestamp set when rxrpc_data_ready()
         collects it, set it at that point.
    
     (3) Allow ACKs to be requested on the last packet of a client call, but
         not a service call.  We need to be careful lest we undo:
    
    	bf7d620a
    	Author: David Howells <dhowells@redhat.com>
    	Date:   Thu Oct 6 08:11:51 2016 +0100
    	rxrpc: Don't request an ACK on the last DATA packet of a call's Tx phase
    
         but that only really applies to service calls that we're handling,
         since the client side gets to send the final ACK (or not).
    
     (4) When about to transmit an ACK or DATA packet, record the Tx timestamp
         before only; don't update the timestamp afterwards.
    
     (5) Switch the ordering between recording the serial and recording the
         timestamp to always set the serial number first.  The serial number
         shouldn't be seen referenced by an ACK packet until we've transmitted
         the packet bearing it - so in the Rx path, we don't need the timestamp
         until we've checked the serial number.
    
    Fixes: cf1a6474 ("rxrpc: Add per-peer RTT tracker")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    b604dd98
output.c 16.4 KB