]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rxrpc: Add a reason indicator to the tx_ack tracepoint
authorDavid Howells <dhowells@redhat.com>
Wed, 4 Dec 2024 07:47:04 +0000 (07:47 +0000)
committerJakub Kicinski <kuba@kernel.org>
Mon, 9 Dec 2024 21:48:32 +0000 (13:48 -0800)
Record the reason for the transmission of an ACK in the rxrpc_tx_ack
tracepoint, and not just in the rxrpc_propose_ack tracepoint.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/trace/events/rxrpc.h
net/rxrpc/conn_event.c
net/rxrpc/output.c

index d79623fff74644e648267aebe6218d8059e55001..0cfc8e1baf1f9030da9b5c755b9f0154eb0ac601 100644 (file)
        EM(rxrpc_propose_ack_processing_op,     "ProcOp ") \
        EM(rxrpc_propose_ack_respond_to_ack,    "Rsp2Ack") \
        EM(rxrpc_propose_ack_respond_to_ping,   "Rsp2Png") \
+       EM(rxrpc_propose_ack_retransmit,        "Retrans") \
        EM(rxrpc_propose_ack_retry_tx,          "RetryTx") \
        EM(rxrpc_propose_ack_rotate_rx,         "RxAck  ") \
        EM(rxrpc_propose_ack_rx_idle,           "RxIdle ") \
@@ -1267,9 +1268,10 @@ TRACE_EVENT(rxrpc_tx_data,
 TRACE_EVENT(rxrpc_tx_ack,
            TP_PROTO(unsigned int call, rxrpc_serial_t serial,
                     rxrpc_seq_t ack_first, rxrpc_serial_t ack_serial,
-                    u8 reason, u8 n_acks, u16 rwind),
+                    u8 reason, u8 n_acks, u16 rwind,
+                    enum rxrpc_propose_ack_trace trace),
 
-           TP_ARGS(call, serial, ack_first, ack_serial, reason, n_acks, rwind),
+           TP_ARGS(call, serial, ack_first, ack_serial, reason, n_acks, rwind, trace),
 
            TP_STRUCT__entry(
                    __field(unsigned int,       call)
@@ -1279,6 +1281,7 @@ TRACE_EVENT(rxrpc_tx_ack,
                    __field(u8,                 reason)
                    __field(u8,                 n_acks)
                    __field(u16,                rwind)
+                   __field(enum rxrpc_propose_ack_trace, trace)
                             ),
 
            TP_fast_assign(
@@ -1289,16 +1292,18 @@ TRACE_EVENT(rxrpc_tx_ack,
                    __entry->reason = reason;
                    __entry->n_acks = n_acks;
                    __entry->rwind = rwind;
+                   __entry->trace = trace;
                           ),
 
-           TP_printk(" c=%08x ACK  %08x %s f=%08x r=%08x n=%u rw=%u",
+           TP_printk(" c=%08x ACK  %08x %s f=%08x r=%08x n=%u rw=%u %s",
                      __entry->call,
                      __entry->serial,
                      __print_symbolic(__entry->reason, rxrpc_ack_names),
                      __entry->ack_first,
                      __entry->ack_serial,
                      __entry->n_acks,
-                     __entry->rwind)
+                     __entry->rwind,
+                     __print_symbolic(__entry->trace, rxrpc_propose_ack_traces))
            );
 
 TRACE_EVENT(rxrpc_receive,
index 6b29a294ee07d568f21c04aa49dbf99b794e8e54..713e04394ceb7b9768fd43e450d118ff69e64a63 100644 (file)
@@ -177,7 +177,8 @@ void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
                trace_rxrpc_tx_ack(chan->call_debug_id, serial,
                                   ntohl(pkt.ack.firstPacket),
                                   ntohl(pkt.ack.serial),
-                                  pkt.ack.reason, 0, rxrpc_rx_window_size);
+                                  pkt.ack.reason, 0, rxrpc_rx_window_size,
+                                  rxrpc_propose_ack_retransmit);
                break;
 
        default:
index 2633f955d1d0e7c937cc666f01331033e27d087a..74c3ff55b4825e877003b9ce3d311e8f4d7a586b 100644 (file)
@@ -267,7 +267,7 @@ static void rxrpc_send_ack_packet(struct rxrpc_call *call, int nr_kv, size_t len
        trace_rxrpc_tx_ack(call->debug_id, serial,
                           ntohl(ack->firstPacket),
                           ntohl(ack->serial), ack->reason, ack->nAcks,
-                          ntohl(trailer->rwind));
+                          ntohl(trailer->rwind), why);
 
        rxrpc_inc_stat(call->rxnet, stat_tx_ack_send);