rxrpc: Add a tracepoint to show variables pertinent to jumbo packet size

Add a tracepoint to be called right before packets are transmitted for the
first time that shows variable values that are pertinent to how many
subpackets will be added to a jumbo DATA packet.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Link: https://patch.msgid.link/20241204074710.990092-13-dhowells@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
David Howells 2024-12-04 07:46:40 +00:00 committed by Jakub Kicinski
parent b7313009c2
commit 149d002bee
2 changed files with 43 additions and 0 deletions

View File

@ -903,6 +903,47 @@ TRACE_EVENT(rxrpc_txqueue,
__entry->tx_winsize)
);
TRACE_EVENT(rxrpc_transmit,
TP_PROTO(struct rxrpc_call *call, int space),
TP_ARGS(call, space),
TP_STRUCT__entry(
__field(unsigned int, call)
__field(rxrpc_seq_t, seq)
__field(u16, space)
__field(u16, tx_winsize)
__field(u16, cong_cwnd)
__field(u16, cong_extra)
__field(u16, in_flight)
__field(u16, prepared)
__field(u16, pmtud_jumbo)
),
TP_fast_assign(
__entry->call = call->debug_id;
__entry->seq = call->tx_bottom;
__entry->space = space;
__entry->tx_winsize = call->tx_winsize;
__entry->cong_cwnd = call->cong_cwnd;
__entry->cong_extra = call->cong_extra;
__entry->prepared = call->tx_prepared - call->tx_bottom;
__entry->in_flight = call->tx_top - call->acks_hard_ack;
__entry->pmtud_jumbo = call->peer->pmtud_jumbo;
),
TP_printk("c=%08x q=%08x sp=%u tw=%u cw=%u+%u pr=%u if=%u pj=%u",
__entry->call,
__entry->seq,
__entry->space,
__entry->tx_winsize,
__entry->cong_cwnd,
__entry->cong_extra,
__entry->prepared,
__entry->in_flight,
__entry->pmtud_jumbo)
);
TRACE_EVENT(rxrpc_rx_data,
TP_PROTO(unsigned int call, rxrpc_seq_t seq,
rxrpc_serial_t serial, u8 flags),

View File

@ -259,6 +259,8 @@ static void rxrpc_decant_prepared_tx(struct rxrpc_call *call)
if (list_empty(&call->tx_sendmsg))
break;
trace_rxrpc_transmit(call, space);
spin_lock(&call->tx_lock);
do {
txb = list_first_entry(&call->tx_sendmsg,