]> git.baikalelectronics.ru Git - kernel.git/commit
rxrpc: Fix RTT gathering
authorDavid Howells <dhowells@redhat.com>
Thu, 27 Sep 2018 14:13:08 +0000 (15:13 +0100)
committerDavid Howells <dhowells@redhat.com>
Fri, 28 Sep 2018 09:32:03 +0000 (10:32 +0100)
commit18bb04a65f4b3094a0ef2ba2cdc51a6cf2cf1d2a
tree4aea958be93cbd979e2325ac8a2126b836f13f9c
parent19c7c04213c0aeddd9f63fc26ce2703d5a5918d2
rxrpc: Fix RTT gathering

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:

8c2b218cd598e83c2d7760355642ab852bf9a296
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: 81c496a19ab7 ("rxrpc: Add per-peer RTT tracker")
Signed-off-by: David Howells <dhowells@redhat.com>
net/rxrpc/input.c
net/rxrpc/local_object.c
net/rxrpc/output.c