mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 10:01:39 -05:00
rxrpc: Add more CHALLENGE/RESPONSE packet tracing
Add more tracing for CHALLENGE and RESPONSE packets. Currently, rxrpc only has client-relevant tracepoints (rx_challenge and tx_response), but add the server-side ones too. Further, record the service ID in the rx_challenge tracepoint as well. Signed-off-by: David Howells <dhowells@redhat.com> cc: Marc Dionne <marc.dionne@auristor.com> cc: Simon Horman <horms@kernel.org> cc: linux-afs@lists.infradead.org Link: https://patch.msgid.link/20250411095303.2316168-14-dhowells@redhat.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
d98c317fd9
commit
fba6995798
@@ -1201,6 +1201,39 @@ TRACE_EVENT(rxrpc_rx_conn_abort,
|
||||
__entry->abort_code)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rxrpc_tx_challenge,
|
||||
TP_PROTO(struct rxrpc_connection *conn, rxrpc_serial_t serial,
|
||||
u32 version, u32 nonce),
|
||||
|
||||
TP_ARGS(conn, serial, version, nonce),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned int, conn)
|
||||
__field(rxrpc_serial_t, serial)
|
||||
__field(u32, version)
|
||||
__field(u32, nonce)
|
||||
__field(u16, service_id)
|
||||
__field(u8, security_ix)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->conn = conn->debug_id;
|
||||
__entry->serial = serial;
|
||||
__entry->version = version;
|
||||
__entry->nonce = nonce;
|
||||
__entry->service_id = conn->service_id;
|
||||
__entry->security_ix = conn->security_ix;
|
||||
),
|
||||
|
||||
TP_printk("C=%08x CHALLENGE r=%08x sv=%u+%u v=%x n=%x",
|
||||
__entry->conn,
|
||||
__entry->serial,
|
||||
__entry->service_id,
|
||||
__entry->security_ix,
|
||||
__entry->version,
|
||||
__entry->nonce)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rxrpc_rx_challenge,
|
||||
TP_PROTO(struct rxrpc_connection *conn, rxrpc_serial_t serial,
|
||||
u32 version, u32 nonce, u32 min_level),
|
||||
@@ -1213,6 +1246,7 @@ TRACE_EVENT(rxrpc_rx_challenge,
|
||||
__field(u32, version)
|
||||
__field(u32, nonce)
|
||||
__field(u32, min_level)
|
||||
__field(u16, service_id)
|
||||
__field(u8, security_ix)
|
||||
),
|
||||
|
||||
@@ -1222,18 +1256,60 @@ TRACE_EVENT(rxrpc_rx_challenge,
|
||||
__entry->version = version;
|
||||
__entry->nonce = nonce;
|
||||
__entry->min_level = min_level;
|
||||
__entry->service_id = conn->service_id;
|
||||
__entry->security_ix = conn->security_ix;
|
||||
),
|
||||
|
||||
TP_printk("C=%08x CHALLENGE r=%08x sx=%u v=%x n=%x ml=%x",
|
||||
TP_printk("C=%08x CHALLENGE r=%08x sv=%u+%u v=%x n=%x ml=%x",
|
||||
__entry->conn,
|
||||
__entry->serial,
|
||||
__entry->service_id,
|
||||
__entry->security_ix,
|
||||
__entry->version,
|
||||
__entry->nonce,
|
||||
__entry->min_level)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rxrpc_tx_response,
|
||||
TP_PROTO(struct rxrpc_connection *conn, rxrpc_serial_t serial,
|
||||
struct rxrpc_skb_priv *rsp),
|
||||
|
||||
TP_ARGS(conn, serial, rsp),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned int, conn)
|
||||
__field(rxrpc_serial_t, serial)
|
||||
__field(rxrpc_serial_t, challenge)
|
||||
__field(u32, version)
|
||||
__field(u32, kvno)
|
||||
__field(u16, ticket_len)
|
||||
__field(u16, appdata_len)
|
||||
__field(u16, service_id)
|
||||
__field(u8, security_ix)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->conn = conn->debug_id;
|
||||
__entry->serial = serial;
|
||||
__entry->challenge = rsp->resp.challenge_serial;
|
||||
__entry->version = rsp->resp.version;
|
||||
__entry->kvno = rsp->resp.kvno;
|
||||
__entry->ticket_len = rsp->resp.ticket_len;
|
||||
__entry->service_id = conn->service_id;
|
||||
__entry->security_ix = conn->security_ix;
|
||||
),
|
||||
|
||||
TP_printk("C=%08x RESPONSE r=%08x cr=%08x sv=%u+%u v=%x kv=%x tl=%u",
|
||||
__entry->conn,
|
||||
__entry->serial,
|
||||
__entry->challenge,
|
||||
__entry->service_id,
|
||||
__entry->security_ix,
|
||||
__entry->version,
|
||||
__entry->kvno,
|
||||
__entry->ticket_len)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rxrpc_rx_response,
|
||||
TP_PROTO(struct rxrpc_connection *conn, rxrpc_serial_t serial,
|
||||
u32 version, u32 kvno, u32 ticket_len),
|
||||
|
||||
@@ -953,6 +953,8 @@ void rxrpc_send_response(struct rxrpc_connection *conn, struct sk_buff *response
|
||||
serial = rxrpc_get_next_serials(conn, 1);
|
||||
wserial = htonl(serial);
|
||||
|
||||
trace_rxrpc_tx_response(conn, serial, sp);
|
||||
|
||||
ret = skb_store_bits(response, offsetof(struct rxrpc_wire_header, serial),
|
||||
&wserial, sizeof(wserial));
|
||||
if (ret < 0)
|
||||
|
||||
@@ -668,6 +668,8 @@ static int rxgk_issue_challenge(struct rxrpc_connection *conn)
|
||||
serial = rxrpc_get_next_serials(conn, 1);
|
||||
whdr->serial = htonl(serial);
|
||||
|
||||
trace_rxrpc_tx_challenge(conn, serial, 0, *(u32 *)&conn->rxgk.nonce);
|
||||
|
||||
ret = do_udp_sendmsg(conn->local->socket, &msg, len);
|
||||
if (ret > 0)
|
||||
conn->peer->last_tx_at = ktime_get_seconds();
|
||||
@@ -1203,6 +1205,8 @@ static int rxgk_verify_response(struct rxrpc_connection *conn,
|
||||
if (xdr_round_up(token_len) + sizeof(__be32) > len)
|
||||
goto short_packet;
|
||||
|
||||
trace_rxrpc_rx_response(conn, sp->hdr.serial, 0, sp->hdr.cksum, token_len);
|
||||
|
||||
offset += xdr_round_up(token_len);
|
||||
len -= xdr_round_up(token_len);
|
||||
|
||||
|
||||
@@ -685,6 +685,8 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn)
|
||||
serial = rxrpc_get_next_serial(conn);
|
||||
whdr.serial = htonl(serial);
|
||||
|
||||
trace_rxrpc_tx_challenge(conn, serial, 0, conn->rxkad.nonce);
|
||||
|
||||
ret = kernel_sendmsg(conn->local->socket, &msg, iov, 2, len);
|
||||
if (ret < 0) {
|
||||
trace_rxrpc_tx_fail(conn->debug_id, serial, ret,
|
||||
|
||||
Reference in New Issue
Block a user