rxrpc: Add a tracepoint to log received ACK packets
authorDavid Howells <dhowells@redhat.com>
Sat, 17 Sep 2016 09:49:13 +0000 (10:49 +0100)
committerDavid Howells <dhowells@redhat.com>
Sat, 17 Sep 2016 10:24:03 +0000 (11:24 +0100)
Add a tracepoint to log information from received ACK packets.

Signed-off-by: David Howells <dhowells@redhat.com>
include/trace/events/rxrpc.h
net/rxrpc/input.c

index ffc74b3e5b7677a0b15a9b638727ac52d0b304c5..2b19f3fa51744793defc4da4d2cc09a67b9bbe51 100644 (file)
@@ -234,6 +234,32 @@ TRACE_EVENT(rxrpc_transmit,
                      __entry->tx_top - __entry->tx_hard_ack)
            );
 
+TRACE_EVENT(rxrpc_rx_ack,
+           TP_PROTO(struct rxrpc_call *call, rxrpc_seq_t first, u8 reason, u8 n_acks),
+
+           TP_ARGS(call, first, reason, n_acks),
+
+           TP_STRUCT__entry(
+                   __field(struct rxrpc_call *,        call            )
+                   __field(rxrpc_seq_t,                first           )
+                   __field(u8,                         reason          )
+                   __field(u8,                         n_acks          )
+                            ),
+
+           TP_fast_assign(
+                   __entry->call = call;
+                   __entry->first = first;
+                   __entry->reason = reason;
+                   __entry->n_acks = n_acks;
+                          ),
+
+           TP_printk("c=%p %s f=%08x n=%u",
+                     __entry->call,
+                     rxrpc_acks(__entry->reason),
+                     __entry->first,
+                     __entry->n_acks)
+           );
+
 #endif /* _TRACE_RXRPC_H */
 
 /* This part must be outside protection */
index c7eb5104e91a547b5741d3f84c4756beb2303860..7b18ca1249784c0fb5f9e66d20a515262cd7f1bc 100644 (file)
@@ -440,6 +440,8 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb,
        hard_ack = first_soft_ack - 1;
        nr_acks = buf.ack.nAcks;
 
+       trace_rxrpc_rx_ack(call, first_soft_ack, buf.ack.reason, nr_acks);
+
        _proto("Rx ACK %%%u { m=%hu f=#%u p=#%u s=%%%u r=%s n=%u }",
               sp->hdr.serial,
               ntohs(buf.ack.maxSkew),