Commit b5099340 authored by David Howells's avatar David Howells Committed by Jakub Kicinski
Browse files

rxrpc: Add a reason indicator to the tx_ack tracepoint



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: default avatarDavid Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 372d12d1
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -375,6 +375,7 @@
	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,
+2 −1
Original line number Diff line number Diff line
@@ -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:
+1 −1
Original line number Diff line number Diff line
@@ -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);