rxrpc: Obtain RTT data by requesting ACKs on DATA packets
In addition to sending a PING ACK to gain RTT data, we can set the RXRPC_REQUEST_ACK flag on a DATA packet and get a REQUESTED-ACK ACK. The ACK packet contains the serial number of the packet it is in response to, so we can look through the Tx buffer for a matching DATA packet. This requires that the data packets be stamped with the time of transmission as a ktime rather than having the resend_at time in jiffies. This further requires the resend code to do the resend determination in ktimes and convert to jiffies to set the timer. Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
@@ -142,10 +142,7 @@ struct rxrpc_host_header {
|
||||
*/
|
||||
struct rxrpc_skb_priv {
|
||||
union {
|
||||
unsigned long resend_at; /* time in jiffies at which to resend */
|
||||
struct {
|
||||
u8 nr_jumbo; /* Number of jumbo subpackets */
|
||||
};
|
||||
u8 nr_jumbo; /* Number of jumbo subpackets */
|
||||
};
|
||||
union {
|
||||
unsigned int offset; /* offset into buffer of next read */
|
||||
@@ -663,6 +660,7 @@ extern const char rxrpc_recvmsg_traces[rxrpc_recvmsg__nr_trace][5];
|
||||
|
||||
enum rxrpc_rtt_tx_trace {
|
||||
rxrpc_rtt_tx_ping,
|
||||
rxrpc_rtt_tx_data,
|
||||
rxrpc_rtt_tx__nr_trace
|
||||
};
|
||||
|
||||
@@ -670,6 +668,7 @@ extern const char rxrpc_rtt_tx_traces[rxrpc_rtt_tx__nr_trace][5];
|
||||
|
||||
enum rxrpc_rtt_rx_trace {
|
||||
rxrpc_rtt_rx_ping_response,
|
||||
rxrpc_rtt_rx_requested_ack,
|
||||
rxrpc_rtt_rx__nr_trace
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user