Skip to content

Commit fba6995

Browse files
dhowellskuba-moo
authored andcommitted
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 <[email protected]> cc: Marc Dionne <[email protected]> cc: Simon Horman <[email protected]> cc: [email protected] Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent d98c317 commit fba6995

File tree

4 files changed

+85
-1
lines changed

4 files changed

+85
-1
lines changed

include/trace/events/rxrpc.h

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1201,6 +1201,39 @@ TRACE_EVENT(rxrpc_rx_conn_abort,
12011201
__entry->abort_code)
12021202
);
12031203

1204+
TRACE_EVENT(rxrpc_tx_challenge,
1205+
TP_PROTO(struct rxrpc_connection *conn, rxrpc_serial_t serial,
1206+
u32 version, u32 nonce),
1207+
1208+
TP_ARGS(conn, serial, version, nonce),
1209+
1210+
TP_STRUCT__entry(
1211+
__field(unsigned int, conn)
1212+
__field(rxrpc_serial_t, serial)
1213+
__field(u32, version)
1214+
__field(u32, nonce)
1215+
__field(u16, service_id)
1216+
__field(u8, security_ix)
1217+
),
1218+
1219+
TP_fast_assign(
1220+
__entry->conn = conn->debug_id;
1221+
__entry->serial = serial;
1222+
__entry->version = version;
1223+
__entry->nonce = nonce;
1224+
__entry->service_id = conn->service_id;
1225+
__entry->security_ix = conn->security_ix;
1226+
),
1227+
1228+
TP_printk("C=%08x CHALLENGE r=%08x sv=%u+%u v=%x n=%x",
1229+
__entry->conn,
1230+
__entry->serial,
1231+
__entry->service_id,
1232+
__entry->security_ix,
1233+
__entry->version,
1234+
__entry->nonce)
1235+
);
1236+
12041237
TRACE_EVENT(rxrpc_rx_challenge,
12051238
TP_PROTO(struct rxrpc_connection *conn, rxrpc_serial_t serial,
12061239
u32 version, u32 nonce, u32 min_level),
@@ -1213,6 +1246,7 @@ TRACE_EVENT(rxrpc_rx_challenge,
12131246
__field(u32, version)
12141247
__field(u32, nonce)
12151248
__field(u32, min_level)
1249+
__field(u16, service_id)
12161250
__field(u8, security_ix)
12171251
),
12181252

@@ -1222,18 +1256,60 @@ TRACE_EVENT(rxrpc_rx_challenge,
12221256
__entry->version = version;
12231257
__entry->nonce = nonce;
12241258
__entry->min_level = min_level;
1259+
__entry->service_id = conn->service_id;
12251260
__entry->security_ix = conn->security_ix;
12261261
),
12271262

1228-
TP_printk("C=%08x CHALLENGE r=%08x sx=%u v=%x n=%x ml=%x",
1263+
TP_printk("C=%08x CHALLENGE r=%08x sv=%u+%u v=%x n=%x ml=%x",
12291264
__entry->conn,
12301265
__entry->serial,
1266+
__entry->service_id,
12311267
__entry->security_ix,
12321268
__entry->version,
12331269
__entry->nonce,
12341270
__entry->min_level)
12351271
);
12361272

1273+
TRACE_EVENT(rxrpc_tx_response,
1274+
TP_PROTO(struct rxrpc_connection *conn, rxrpc_serial_t serial,
1275+
struct rxrpc_skb_priv *rsp),
1276+
1277+
TP_ARGS(conn, serial, rsp),
1278+
1279+
TP_STRUCT__entry(
1280+
__field(unsigned int, conn)
1281+
__field(rxrpc_serial_t, serial)
1282+
__field(rxrpc_serial_t, challenge)
1283+
__field(u32, version)
1284+
__field(u32, kvno)
1285+
__field(u16, ticket_len)
1286+
__field(u16, appdata_len)
1287+
__field(u16, service_id)
1288+
__field(u8, security_ix)
1289+
),
1290+
1291+
TP_fast_assign(
1292+
__entry->conn = conn->debug_id;
1293+
__entry->serial = serial;
1294+
__entry->challenge = rsp->resp.challenge_serial;
1295+
__entry->version = rsp->resp.version;
1296+
__entry->kvno = rsp->resp.kvno;
1297+
__entry->ticket_len = rsp->resp.ticket_len;
1298+
__entry->service_id = conn->service_id;
1299+
__entry->security_ix = conn->security_ix;
1300+
),
1301+
1302+
TP_printk("C=%08x RESPONSE r=%08x cr=%08x sv=%u+%u v=%x kv=%x tl=%u",
1303+
__entry->conn,
1304+
__entry->serial,
1305+
__entry->challenge,
1306+
__entry->service_id,
1307+
__entry->security_ix,
1308+
__entry->version,
1309+
__entry->kvno,
1310+
__entry->ticket_len)
1311+
);
1312+
12371313
TRACE_EVENT(rxrpc_rx_response,
12381314
TP_PROTO(struct rxrpc_connection *conn, rxrpc_serial_t serial,
12391315
u32 version, u32 kvno, u32 ticket_len),

net/rxrpc/output.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -953,6 +953,8 @@ void rxrpc_send_response(struct rxrpc_connection *conn, struct sk_buff *response
953953
serial = rxrpc_get_next_serials(conn, 1);
954954
wserial = htonl(serial);
955955

956+
trace_rxrpc_tx_response(conn, serial, sp);
957+
956958
ret = skb_store_bits(response, offsetof(struct rxrpc_wire_header, serial),
957959
&wserial, sizeof(wserial));
958960
if (ret < 0)

net/rxrpc/rxgk.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,8 @@ static int rxgk_issue_challenge(struct rxrpc_connection *conn)
668668
serial = rxrpc_get_next_serials(conn, 1);
669669
whdr->serial = htonl(serial);
670670

671+
trace_rxrpc_tx_challenge(conn, serial, 0, *(u32 *)&conn->rxgk.nonce);
672+
671673
ret = do_udp_sendmsg(conn->local->socket, &msg, len);
672674
if (ret > 0)
673675
conn->peer->last_tx_at = ktime_get_seconds();
@@ -1203,6 +1205,8 @@ static int rxgk_verify_response(struct rxrpc_connection *conn,
12031205
if (xdr_round_up(token_len) + sizeof(__be32) > len)
12041206
goto short_packet;
12051207

1208+
trace_rxrpc_rx_response(conn, sp->hdr.serial, 0, sp->hdr.cksum, token_len);
1209+
12061210
offset += xdr_round_up(token_len);
12071211
len -= xdr_round_up(token_len);
12081212

net/rxrpc/rxkad.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,8 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn)
685685
serial = rxrpc_get_next_serial(conn);
686686
whdr.serial = htonl(serial);
687687

688+
trace_rxrpc_tx_challenge(conn, serial, 0, conn->rxkad.nonce);
689+
688690
ret = kernel_sendmsg(conn->local->socket, &msg, iov, 2, len);
689691
if (ret < 0) {
690692
trace_rxrpc_tx_fail(conn->debug_id, serial, ret,

0 commit comments

Comments
 (0)