]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
rxrpc: Trace changes in a call's receive window size
authorDavid Howells <dhowells@redhat.com>
Thu, 6 Apr 2017 09:12:00 +0000 (10:12 +0100)
committerDavid Howells <dhowells@redhat.com>
Thu, 6 Apr 2017 10:10:41 +0000 (11:10 +0100)
Add a tracepoint (rxrpc_rx_rwind_change) to log changes in a call's receive
window size as imposed by the peer through an ACK packet.

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

index 85e0148c88a80e0f305706dead9e3421c864b8d7..15ba7387c243258e78038586c4b0176a4ffcdac5 100644 (file)
@@ -707,6 +707,33 @@ TRACE_EVENT(rxrpc_rx_abort,
                      __entry->abort_code)
            );
 
+TRACE_EVENT(rxrpc_rx_rwind_change,
+           TP_PROTO(struct rxrpc_call *call, rxrpc_serial_t serial,
+                    u32 rwind, bool wake),
+
+           TP_ARGS(call, serial, rwind, wake),
+
+           TP_STRUCT__entry(
+                   __field(struct rxrpc_call *,        call            )
+                   __field(rxrpc_serial_t,             serial          )
+                   __field(u32,                        rwind           )
+                   __field(bool,                       wake            )
+                            ),
+
+           TP_fast_assign(
+                   __entry->call = call;
+                   __entry->serial = serial;
+                   __entry->rwind = rwind;
+                   __entry->wake = wake;
+                          ),
+
+           TP_printk("c=%p %08x rw=%u%s",
+                     __entry->call,
+                     __entry->serial,
+                     __entry->rwind,
+                     __entry->wake ? " wake" : "")
+           );
+
 TRACE_EVENT(rxrpc_tx_data,
            TP_PROTO(struct rxrpc_call *call, rxrpc_seq_t seq,
                     rxrpc_serial_t serial, u8 flags, bool retrans, bool lose),
index 241e989597f2e1adb3b58b366457c0aee2ba8ce5..45dba732a3b4743ba37c46d05b02125f16eac23d 100644 (file)
@@ -665,6 +665,8 @@ static void rxrpc_input_ackinfo(struct rxrpc_call *call, struct sk_buff *skb,
                        rwind = RXRPC_RXTX_BUFF_SIZE - 1;
                if (rwind > call->tx_winsize)
                        wake = true;
+               trace_rxrpc_rx_rwind_change(call, sp->hdr.serial,
+                                           ntohl(ackinfo->rwind), wake);
                call->tx_winsize = rwind;
        }