1b4d0d230SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2df844fd4SDavid Howells /* AF_RXRPC tracepoints 3df844fd4SDavid Howells * 4df844fd4SDavid Howells * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved. 5df844fd4SDavid Howells * Written by David Howells (dhowells@redhat.com) 6df844fd4SDavid Howells */ 7df844fd4SDavid Howells #undef TRACE_SYSTEM 8df844fd4SDavid Howells #define TRACE_SYSTEM rxrpc 9df844fd4SDavid Howells 10df844fd4SDavid Howells #if !defined(_TRACE_RXRPC_H) || defined(TRACE_HEADER_MULTI_READ) 11df844fd4SDavid Howells #define _TRACE_RXRPC_H 12df844fd4SDavid Howells 13df844fd4SDavid Howells #include <linux/tracepoint.h> 14494337c9SDavid Howells #include <linux/errqueue.h> 15df844fd4SDavid Howells 16b54a134aSDavid Howells /* 17b54a134aSDavid Howells * Declare tracing information enums and their string mappings for display. 18b54a134aSDavid Howells */ 19b54a134aSDavid Howells #define rxrpc_skb_traces \ 20d57a3a15SDavid Howells EM(rxrpc_skb_ack, "ACK") \ 21987db9f7SDavid Howells EM(rxrpc_skb_cleaned, "CLN") \ 22d4d02d8bSDavid Howells EM(rxrpc_skb_cloned_jumbo, "CLJ") \ 23987db9f7SDavid Howells EM(rxrpc_skb_freed, "FRE") \ 24987db9f7SDavid Howells EM(rxrpc_skb_got, "GOT") \ 25987db9f7SDavid Howells EM(rxrpc_skb_lost, "*L*") \ 26987db9f7SDavid Howells EM(rxrpc_skb_new, "NEW") \ 27987db9f7SDavid Howells EM(rxrpc_skb_purged, "PUR") \ 28987db9f7SDavid Howells EM(rxrpc_skb_received, "RCV") \ 29987db9f7SDavid Howells EM(rxrpc_skb_rotated, "ROT") \ 30d0d5c0cdSDavid Howells EM(rxrpc_skb_seen, "SEE") \ 31d0d5c0cdSDavid Howells EM(rxrpc_skb_unshared, "UNS") \ 32d0d5c0cdSDavid Howells E_(rxrpc_skb_unshared_nomem, "US0") 33b54a134aSDavid Howells 3409d2bf59SDavid Howells #define rxrpc_local_traces \ 3509d2bf59SDavid Howells EM(rxrpc_local_got, "GOT") \ 3609d2bf59SDavid Howells EM(rxrpc_local_new, "NEW") \ 3709d2bf59SDavid Howells EM(rxrpc_local_processing, "PRO") \ 3809d2bf59SDavid Howells EM(rxrpc_local_put, "PUT") \ 3972f0c6fbSDavid Howells EM(rxrpc_local_queued, "QUE") \ 4072f0c6fbSDavid Howells E_(rxrpc_local_tx_ack, "TAK") 4109d2bf59SDavid Howells 421159d4b4SDavid Howells #define rxrpc_peer_traces \ 431159d4b4SDavid Howells EM(rxrpc_peer_got, "GOT") \ 441159d4b4SDavid Howells EM(rxrpc_peer_new, "NEW") \ 451159d4b4SDavid Howells EM(rxrpc_peer_processing, "PRO") \ 46f3344303SDavid Howells E_(rxrpc_peer_put, "PUT") 471159d4b4SDavid Howells 48b54a134aSDavid Howells #define rxrpc_conn_traces \ 49b54a134aSDavid Howells EM(rxrpc_conn_got, "GOT") \ 50b54a134aSDavid Howells EM(rxrpc_conn_new_client, "NWc") \ 51b54a134aSDavid Howells EM(rxrpc_conn_new_service, "NWs") \ 52b54a134aSDavid Howells EM(rxrpc_conn_put_client, "PTc") \ 53b54a134aSDavid Howells EM(rxrpc_conn_put_service, "PTs") \ 54b54a134aSDavid Howells EM(rxrpc_conn_queued, "QUE") \ 55f859ab61SDavid Howells EM(rxrpc_conn_reap_service, "RPs") \ 56b54a134aSDavid Howells E_(rxrpc_conn_seen, "SEE") 57b54a134aSDavid Howells 58b54a134aSDavid Howells #define rxrpc_client_traces \ 59b54a134aSDavid Howells EM(rxrpc_client_activate_chans, "Activa") \ 60b54a134aSDavid Howells EM(rxrpc_client_alloc, "Alloc ") \ 61b54a134aSDavid Howells EM(rxrpc_client_chan_activate, "ChActv") \ 62b54a134aSDavid Howells EM(rxrpc_client_chan_disconnect, "ChDisc") \ 63b54a134aSDavid Howells EM(rxrpc_client_chan_pass, "ChPass") \ 64930c9f91SDavid Howells EM(rxrpc_client_chan_wait_failed, "ChWtFl") \ 65b54a134aSDavid Howells EM(rxrpc_client_cleanup, "Clean ") \ 66b54a134aSDavid Howells EM(rxrpc_client_discard, "Discar") \ 67b54a134aSDavid Howells EM(rxrpc_client_duplicate, "Duplic") \ 68b54a134aSDavid Howells EM(rxrpc_client_exposed, "Expose") \ 69b54a134aSDavid Howells EM(rxrpc_client_replace, "Replac") \ 70b54a134aSDavid Howells EM(rxrpc_client_to_active, "->Actv") \ 71245500d8SDavid Howells E_(rxrpc_client_to_idle, "->Idle") 72b54a134aSDavid Howells 73b54a134aSDavid Howells #define rxrpc_call_traces \ 74b54a134aSDavid Howells EM(rxrpc_call_connected, "CON") \ 75b54a134aSDavid Howells EM(rxrpc_call_error, "*E*") \ 76b54a134aSDavid Howells EM(rxrpc_call_got, "GOT") \ 77b54a134aSDavid Howells EM(rxrpc_call_got_kernel, "Gke") \ 784a7f62f9SDavid Howells EM(rxrpc_call_got_timer, "GTM") \ 79a4ea4c47SDavid Howells EM(rxrpc_call_got_tx, "Gtx") \ 80b54a134aSDavid Howells EM(rxrpc_call_got_userid, "Gus") \ 81b54a134aSDavid Howells EM(rxrpc_call_new_client, "NWc") \ 82b54a134aSDavid Howells EM(rxrpc_call_new_service, "NWs") \ 83b54a134aSDavid Howells EM(rxrpc_call_put, "PUT") \ 84b54a134aSDavid Howells EM(rxrpc_call_put_kernel, "Pke") \ 854a7f62f9SDavid Howells EM(rxrpc_call_put_noqueue, "PnQ") \ 864a7f62f9SDavid Howells EM(rxrpc_call_put_notimer, "PnT") \ 874a7f62f9SDavid Howells EM(rxrpc_call_put_timer, "PTM") \ 88a4ea4c47SDavid Howells EM(rxrpc_call_put_tx, "Ptx") \ 89b54a134aSDavid Howells EM(rxrpc_call_put_userid, "Pus") \ 90b54a134aSDavid Howells EM(rxrpc_call_queued, "QUE") \ 91b54a134aSDavid Howells EM(rxrpc_call_queued_ref, "QUR") \ 92b54a134aSDavid Howells EM(rxrpc_call_release, "RLS") \ 93b54a134aSDavid Howells E_(rxrpc_call_seen, "SEE") 94b54a134aSDavid Howells 95a4ea4c47SDavid Howells #define rxrpc_txqueue_traces \ 96a4ea4c47SDavid Howells EM(rxrpc_txqueue_await_reply, "AWR") \ 97a4ea4c47SDavid Howells EM(rxrpc_txqueue_dequeue, "DEQ") \ 98a4ea4c47SDavid Howells EM(rxrpc_txqueue_end, "END") \ 99a4ea4c47SDavid Howells EM(rxrpc_txqueue_queue, "QUE") \ 100a4ea4c47SDavid Howells EM(rxrpc_txqueue_queue_last, "QLS") \ 101a4ea4c47SDavid Howells EM(rxrpc_txqueue_rotate, "ROT") \ 102a4ea4c47SDavid Howells EM(rxrpc_txqueue_rotate_last, "RLS") \ 103a4ea4c47SDavid Howells E_(rxrpc_txqueue_wait, "WAI") 104b54a134aSDavid Howells 105b54a134aSDavid Howells #define rxrpc_receive_traces \ 106b54a134aSDavid Howells EM(rxrpc_receive_end, "END") \ 107b54a134aSDavid Howells EM(rxrpc_receive_front, "FRN") \ 108b54a134aSDavid Howells EM(rxrpc_receive_incoming, "INC") \ 109b54a134aSDavid Howells EM(rxrpc_receive_queue, "QUE") \ 110b54a134aSDavid Howells EM(rxrpc_receive_queue_last, "QLS") \ 1115d7edbc9SDavid Howells EM(rxrpc_receive_queue_oos, "QUO") \ 1125d7edbc9SDavid Howells EM(rxrpc_receive_queue_oos_last, "QOL") \ 1135d7edbc9SDavid Howells EM(rxrpc_receive_oos, "OOS") \ 1145d7edbc9SDavid Howells EM(rxrpc_receive_oos_last, "OSL") \ 1155d7edbc9SDavid Howells EM(rxrpc_receive_rotate, "ROT") \ 1165d7edbc9SDavid Howells E_(rxrpc_receive_rotate_last, "RLS") 117b54a134aSDavid Howells 118b54a134aSDavid Howells #define rxrpc_recvmsg_traces \ 119b54a134aSDavid Howells EM(rxrpc_recvmsg_cont, "CONT") \ 120b54a134aSDavid Howells EM(rxrpc_recvmsg_data_return, "DATA") \ 121b54a134aSDavid Howells EM(rxrpc_recvmsg_dequeue, "DEQU") \ 122b54a134aSDavid Howells EM(rxrpc_recvmsg_enter, "ENTR") \ 123b54a134aSDavid Howells EM(rxrpc_recvmsg_full, "FULL") \ 124b54a134aSDavid Howells EM(rxrpc_recvmsg_hole, "HOLE") \ 125b54a134aSDavid Howells EM(rxrpc_recvmsg_next, "NEXT") \ 126540b1c48SDavid Howells EM(rxrpc_recvmsg_requeue, "REQU") \ 127b54a134aSDavid Howells EM(rxrpc_recvmsg_return, "RETN") \ 128b54a134aSDavid Howells EM(rxrpc_recvmsg_terminal, "TERM") \ 129b54a134aSDavid Howells EM(rxrpc_recvmsg_to_be_accepted, "TBAC") \ 130b54a134aSDavid Howells E_(rxrpc_recvmsg_wait, "WAIT") 131b54a134aSDavid Howells 132b54a134aSDavid Howells #define rxrpc_rtt_tx_traces \ 1334700c4d8SDavid Howells EM(rxrpc_rtt_tx_cancel, "CNCE") \ 134b54a134aSDavid Howells EM(rxrpc_rtt_tx_data, "DATA") \ 1354700c4d8SDavid Howells EM(rxrpc_rtt_tx_no_slot, "FULL") \ 136b54a134aSDavid Howells E_(rxrpc_rtt_tx_ping, "PING") 137b54a134aSDavid Howells 138b54a134aSDavid Howells #define rxrpc_rtt_rx_traces \ 1394700c4d8SDavid Howells EM(rxrpc_rtt_rx_cancel, "CNCL") \ 1404700c4d8SDavid Howells EM(rxrpc_rtt_rx_obsolete, "OBSL") \ 1414700c4d8SDavid Howells EM(rxrpc_rtt_rx_lost, "LOST") \ 142b54a134aSDavid Howells EM(rxrpc_rtt_rx_ping_response, "PONG") \ 143b54a134aSDavid Howells E_(rxrpc_rtt_rx_requested_ack, "RACK") 144b54a134aSDavid Howells 145b54a134aSDavid Howells #define rxrpc_timer_traces \ 146b54a134aSDavid Howells EM(rxrpc_timer_begin, "Begin ") \ 147a158bdd3SDavid Howells EM(rxrpc_timer_exp_ack, "ExpAck") \ 148a158bdd3SDavid Howells EM(rxrpc_timer_exp_hard, "ExpHrd") \ 149a158bdd3SDavid Howells EM(rxrpc_timer_exp_idle, "ExpIdl") \ 150415f44e4SDavid Howells EM(rxrpc_timer_exp_keepalive, "ExpKA ") \ 151bd1fdf8cSDavid Howells EM(rxrpc_timer_exp_lost_ack, "ExpLoA") \ 152a158bdd3SDavid Howells EM(rxrpc_timer_exp_normal, "ExpNml") \ 153a158bdd3SDavid Howells EM(rxrpc_timer_exp_ping, "ExpPng") \ 154a158bdd3SDavid Howells EM(rxrpc_timer_exp_resend, "ExpRsn") \ 155b54a134aSDavid Howells EM(rxrpc_timer_init_for_reply, "IniRpl") \ 156b54a134aSDavid Howells EM(rxrpc_timer_init_for_send_reply, "SndRpl") \ 157a158bdd3SDavid Howells EM(rxrpc_timer_restart, "Restrt") \ 158b54a134aSDavid Howells EM(rxrpc_timer_set_for_ack, "SetAck") \ 159a158bdd3SDavid Howells EM(rxrpc_timer_set_for_hard, "SetHrd") \ 160a158bdd3SDavid Howells EM(rxrpc_timer_set_for_idle, "SetIdl") \ 161415f44e4SDavid Howells EM(rxrpc_timer_set_for_keepalive, "KeepAl") \ 162bd1fdf8cSDavid Howells EM(rxrpc_timer_set_for_lost_ack, "SetLoA") \ 163a158bdd3SDavid Howells EM(rxrpc_timer_set_for_normal, "SetNml") \ 164b54a134aSDavid Howells EM(rxrpc_timer_set_for_ping, "SetPng") \ 165b54a134aSDavid Howells EM(rxrpc_timer_set_for_resend, "SetRTx") \ 166a158bdd3SDavid Howells E_(rxrpc_timer_set_for_send, "SetSnd") 167b54a134aSDavid Howells 168b54a134aSDavid Howells #define rxrpc_propose_ack_traces \ 169b54a134aSDavid Howells EM(rxrpc_propose_ack_client_tx_end, "ClTxEnd") \ 170b54a134aSDavid Howells EM(rxrpc_propose_ack_input_data, "DataIn ") \ 171530403d9SDavid Howells EM(rxrpc_propose_ack_input_data_hole, "DataInH") \ 1727150ceaaSDavid Howells EM(rxrpc_propose_ack_ping_for_check_life, "ChkLife") \ 173415f44e4SDavid Howells EM(rxrpc_propose_ack_ping_for_keepalive, "KeepAlv") \ 174b54a134aSDavid Howells EM(rxrpc_propose_ack_ping_for_lost_ack, "LostAck") \ 175b54a134aSDavid Howells EM(rxrpc_propose_ack_ping_for_lost_reply, "LostRpl") \ 176b54a134aSDavid Howells EM(rxrpc_propose_ack_ping_for_params, "Params ") \ 177b54a134aSDavid Howells EM(rxrpc_propose_ack_processing_op, "ProcOp ") \ 178b54a134aSDavid Howells EM(rxrpc_propose_ack_respond_to_ack, "Rsp2Ack") \ 179b54a134aSDavid Howells EM(rxrpc_propose_ack_respond_to_ping, "Rsp2Png") \ 180b54a134aSDavid Howells EM(rxrpc_propose_ack_retry_tx, "RetryTx") \ 181b54a134aSDavid Howells EM(rxrpc_propose_ack_rotate_rx, "RxAck ") \ 182b54a134aSDavid Howells E_(rxrpc_propose_ack_terminal_ack, "ClTerm ") 183b54a134aSDavid Howells 184b54a134aSDavid Howells #define rxrpc_congest_modes \ 185b54a134aSDavid Howells EM(RXRPC_CALL_CONGEST_AVOIDANCE, "CongAvoid") \ 186b54a134aSDavid Howells EM(RXRPC_CALL_FAST_RETRANSMIT, "FastReTx ") \ 187b54a134aSDavid Howells EM(RXRPC_CALL_PACKET_LOSS, "PktLoss ") \ 188b54a134aSDavid Howells E_(RXRPC_CALL_SLOW_START, "SlowStart") 189b54a134aSDavid Howells 190b54a134aSDavid Howells #define rxrpc_congest_changes \ 191b54a134aSDavid Howells EM(rxrpc_cong_begin_retransmission, " Retrans") \ 192b54a134aSDavid Howells EM(rxrpc_cong_cleared_nacks, " Cleared") \ 193b54a134aSDavid Howells EM(rxrpc_cong_new_low_nack, " NewLowN") \ 194aadf9dceSDavid Howells EM(rxrpc_cong_no_change, " -") \ 195b54a134aSDavid Howells EM(rxrpc_cong_progress, " Progres") \ 1961fc4fa2aSDavid Howells EM(rxrpc_cong_idle_reset, " IdleRes") \ 197b54a134aSDavid Howells EM(rxrpc_cong_retransmit_again, " ReTxAgn") \ 198b54a134aSDavid Howells EM(rxrpc_cong_rtt_window_end, " RttWinE") \ 199b54a134aSDavid Howells E_(rxrpc_cong_saw_nack, " SawNack") 200b54a134aSDavid Howells 201b54a134aSDavid Howells #define rxrpc_pkts \ 202b54a134aSDavid Howells EM(0, "?00") \ 203b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_DATA, "DATA") \ 204b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_ACK, "ACK") \ 205b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_BUSY, "BUSY") \ 206b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_ABORT, "ABORT") \ 207b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_ACKALL, "ACKALL") \ 208b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_CHALLENGE, "CHALL") \ 209b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_RESPONSE, "RESP") \ 210b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_DEBUG, "DEBUG") \ 211b54a134aSDavid Howells EM(9, "?09") \ 212b54a134aSDavid Howells EM(10, "?10") \ 213b54a134aSDavid Howells EM(11, "?11") \ 214b54a134aSDavid Howells EM(12, "?12") \ 215b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_VERSION, "VERSION") \ 216b54a134aSDavid Howells EM(14, "?14") \ 217b54a134aSDavid Howells E_(15, "?15") 218b54a134aSDavid Howells 219b54a134aSDavid Howells #define rxrpc_ack_names \ 220b54a134aSDavid Howells EM(0, "-0-") \ 221b54a134aSDavid Howells EM(RXRPC_ACK_REQUESTED, "REQ") \ 222b54a134aSDavid Howells EM(RXRPC_ACK_DUPLICATE, "DUP") \ 223b54a134aSDavid Howells EM(RXRPC_ACK_OUT_OF_SEQUENCE, "OOS") \ 224b54a134aSDavid Howells EM(RXRPC_ACK_EXCEEDS_WINDOW, "WIN") \ 225b54a134aSDavid Howells EM(RXRPC_ACK_NOSPACE, "MEM") \ 226b54a134aSDavid Howells EM(RXRPC_ACK_PING, "PNG") \ 227b54a134aSDavid Howells EM(RXRPC_ACK_PING_RESPONSE, "PNR") \ 228b54a134aSDavid Howells EM(RXRPC_ACK_DELAY, "DLY") \ 229b54a134aSDavid Howells EM(RXRPC_ACK_IDLE, "IDL") \ 230b54a134aSDavid Howells E_(RXRPC_ACK__INVALID, "-?-") 231b54a134aSDavid Howells 2321bae5d22SDavid Howells #define rxrpc_completions \ 2331bae5d22SDavid Howells EM(RXRPC_CALL_SUCCEEDED, "Succeeded") \ 2341bae5d22SDavid Howells EM(RXRPC_CALL_REMOTELY_ABORTED, "RemoteAbort") \ 2351bae5d22SDavid Howells EM(RXRPC_CALL_LOCALLY_ABORTED, "LocalAbort") \ 2361bae5d22SDavid Howells EM(RXRPC_CALL_LOCAL_ERROR, "LocalError") \ 2371bae5d22SDavid Howells E_(RXRPC_CALL_NETWORK_ERROR, "NetError") 2381bae5d22SDavid Howells 2394764c0daSDavid Howells #define rxrpc_tx_points \ 2404764c0daSDavid Howells EM(rxrpc_tx_point_call_abort, "CallAbort") \ 2414764c0daSDavid Howells EM(rxrpc_tx_point_call_ack, "CallAck") \ 2424764c0daSDavid Howells EM(rxrpc_tx_point_call_data_frag, "CallDataFrag") \ 2434764c0daSDavid Howells EM(rxrpc_tx_point_call_data_nofrag, "CallDataNofrag") \ 2444764c0daSDavid Howells EM(rxrpc_tx_point_call_final_resend, "CallFinalResend") \ 2454764c0daSDavid Howells EM(rxrpc_tx_point_conn_abort, "ConnAbort") \ 2464764c0daSDavid Howells EM(rxrpc_tx_point_reject, "Reject") \ 2474764c0daSDavid Howells EM(rxrpc_tx_point_rxkad_challenge, "RxkadChall") \ 2484764c0daSDavid Howells EM(rxrpc_tx_point_rxkad_response, "RxkadResp") \ 2494764c0daSDavid Howells EM(rxrpc_tx_point_version_keepalive, "VerKeepalive") \ 2504764c0daSDavid Howells E_(rxrpc_tx_point_version_reply, "VerReply") 2516b47fe1dSDavid Howells 2524d843be5SDavid Howells #define rxrpc_req_ack_traces \ 2534d843be5SDavid Howells EM(rxrpc_reqack_ack_lost, "ACK-LOST ") \ 2544d843be5SDavid Howells EM(rxrpc_reqack_already_on, "ALREADY-ON") \ 2554d843be5SDavid Howells EM(rxrpc_reqack_more_rtt, "MORE-RTT ") \ 2564d843be5SDavid Howells EM(rxrpc_reqack_no_srv_last, "NO-SRVLAST") \ 2574d843be5SDavid Howells EM(rxrpc_reqack_old_rtt, "OLD-RTT ") \ 2584d843be5SDavid Howells EM(rxrpc_reqack_retrans, "RETRANS ") \ 2594d843be5SDavid Howells EM(rxrpc_reqack_slow_start, "SLOW-START") \ 2604d843be5SDavid Howells E_(rxrpc_reqack_small_txwin, "SMALL-TXWN") 261f7fa5242SDavid Howells /* ---- Must update size of stat_why_req_ack[] if more are added! */ 2624d843be5SDavid Howells 26302a19356SDavid Howells #define rxrpc_txbuf_traces \ 26402a19356SDavid Howells EM(rxrpc_txbuf_alloc_ack, "ALLOC ACK ") \ 26502a19356SDavid Howells EM(rxrpc_txbuf_alloc_data, "ALLOC DATA ") \ 26602a19356SDavid Howells EM(rxrpc_txbuf_free, "FREE ") \ 267a4ea4c47SDavid Howells EM(rxrpc_txbuf_get_buffer, "GET BUFFER ") \ 26802a19356SDavid Howells EM(rxrpc_txbuf_get_trans, "GET TRANS ") \ 26902a19356SDavid Howells EM(rxrpc_txbuf_get_retrans, "GET RETRANS") \ 27072f0c6fbSDavid Howells EM(rxrpc_txbuf_put_ack_tx, "PUT ACK TX ") \ 27102a19356SDavid Howells EM(rxrpc_txbuf_put_cleaned, "PUT CLEANED") \ 27272f0c6fbSDavid Howells EM(rxrpc_txbuf_put_nomem, "PUT NOMEM ") \ 27302a19356SDavid Howells EM(rxrpc_txbuf_put_rotated, "PUT ROTATED") \ 27402a19356SDavid Howells EM(rxrpc_txbuf_put_send_aborted, "PUT SEND-X ") \ 275a4ea4c47SDavid Howells EM(rxrpc_txbuf_put_trans, "PUT TRANS ") \ 27602a19356SDavid Howells EM(rxrpc_txbuf_see_send_more, "SEE SEND+ ") \ 27702a19356SDavid Howells E_(rxrpc_txbuf_see_unacked, "SEE UNACKED") 27802a19356SDavid Howells 279b54a134aSDavid Howells /* 280dc9fd093SDavid Howells * Generate enums for tracing information. 281dc9fd093SDavid Howells */ 282dc9fd093SDavid Howells #ifndef __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY 283dc9fd093SDavid Howells #define __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY 284dc9fd093SDavid Howells 285dc9fd093SDavid Howells #undef EM 286dc9fd093SDavid Howells #undef E_ 287dc9fd093SDavid Howells #define EM(a, b) a, 288dc9fd093SDavid Howells #define E_(a, b) a 289dc9fd093SDavid Howells 290dc9fd093SDavid Howells enum rxrpc_call_trace { rxrpc_call_traces } __mode(byte); 291dc9fd093SDavid Howells enum rxrpc_client_trace { rxrpc_client_traces } __mode(byte); 292dc9fd093SDavid Howells enum rxrpc_congest_change { rxrpc_congest_changes } __mode(byte); 293dc9fd093SDavid Howells enum rxrpc_conn_trace { rxrpc_conn_traces } __mode(byte); 294dc9fd093SDavid Howells enum rxrpc_local_trace { rxrpc_local_traces } __mode(byte); 295dc9fd093SDavid Howells enum rxrpc_peer_trace { rxrpc_peer_traces } __mode(byte); 296dc9fd093SDavid Howells enum rxrpc_propose_ack_outcome { rxrpc_propose_ack_outcomes } __mode(byte); 297dc9fd093SDavid Howells enum rxrpc_propose_ack_trace { rxrpc_propose_ack_traces } __mode(byte); 298dc9fd093SDavid Howells enum rxrpc_receive_trace { rxrpc_receive_traces } __mode(byte); 299dc9fd093SDavid Howells enum rxrpc_recvmsg_trace { rxrpc_recvmsg_traces } __mode(byte); 3004d843be5SDavid Howells enum rxrpc_req_ack_trace { rxrpc_req_ack_traces } __mode(byte); 301dc9fd093SDavid Howells enum rxrpc_rtt_rx_trace { rxrpc_rtt_rx_traces } __mode(byte); 302dc9fd093SDavid Howells enum rxrpc_rtt_tx_trace { rxrpc_rtt_tx_traces } __mode(byte); 303dc9fd093SDavid Howells enum rxrpc_skb_trace { rxrpc_skb_traces } __mode(byte); 304dc9fd093SDavid Howells enum rxrpc_timer_trace { rxrpc_timer_traces } __mode(byte); 305dc9fd093SDavid Howells enum rxrpc_tx_point { rxrpc_tx_points } __mode(byte); 30602a19356SDavid Howells enum rxrpc_txbuf_trace { rxrpc_txbuf_traces } __mode(byte); 307a4ea4c47SDavid Howells enum rxrpc_txqueue_trace { rxrpc_txqueue_traces } __mode(byte); 308dc9fd093SDavid Howells 309dc9fd093SDavid Howells #endif /* end __RXRPC_DECLARE_TRACE_ENUMS_ONCE_ONLY */ 310dc9fd093SDavid Howells 311dc9fd093SDavid Howells /* 312b54a134aSDavid Howells * Export enum symbols via userspace. 313b54a134aSDavid Howells */ 314b54a134aSDavid Howells #undef EM 315b54a134aSDavid Howells #undef E_ 316b54a134aSDavid Howells #define EM(a, b) TRACE_DEFINE_ENUM(a); 317b54a134aSDavid Howells #define E_(a, b) TRACE_DEFINE_ENUM(a); 318b54a134aSDavid Howells 319b54a134aSDavid Howells rxrpc_call_traces; 320dc9fd093SDavid Howells rxrpc_client_traces; 321dc9fd093SDavid Howells rxrpc_congest_changes; 322dc9fd093SDavid Howells rxrpc_congest_modes; 323dc9fd093SDavid Howells rxrpc_conn_traces; 324dc9fd093SDavid Howells rxrpc_local_traces; 325dc9fd093SDavid Howells rxrpc_propose_ack_traces; 326b54a134aSDavid Howells rxrpc_receive_traces; 327b54a134aSDavid Howells rxrpc_recvmsg_traces; 3284d843be5SDavid Howells rxrpc_req_ack_traces; 329b54a134aSDavid Howells rxrpc_rtt_rx_traces; 330dc9fd093SDavid Howells rxrpc_rtt_tx_traces; 331dc9fd093SDavid Howells rxrpc_skb_traces; 332b54a134aSDavid Howells rxrpc_timer_traces; 3334764c0daSDavid Howells rxrpc_tx_points; 33402a19356SDavid Howells rxrpc_txbuf_traces; 335a4ea4c47SDavid Howells rxrpc_txqueue_traces; 336b54a134aSDavid Howells 337b54a134aSDavid Howells /* 338b54a134aSDavid Howells * Now redefine the EM() and E_() macros to map the enums to the strings that 339b54a134aSDavid Howells * will be printed in the output. 340b54a134aSDavid Howells */ 341b54a134aSDavid Howells #undef EM 342b54a134aSDavid Howells #undef E_ 343b54a134aSDavid Howells #define EM(a, b) { a, b }, 344b54a134aSDavid Howells #define E_(a, b) { a, b } 345b54a134aSDavid Howells 34609d2bf59SDavid Howells TRACE_EVENT(rxrpc_local, 34706d9532fSDavid Howells TP_PROTO(unsigned int local_debug_id, enum rxrpc_local_trace op, 34809d2bf59SDavid Howells int usage, const void *where), 34909d2bf59SDavid Howells 35006d9532fSDavid Howells TP_ARGS(local_debug_id, op, usage, where), 35109d2bf59SDavid Howells 35209d2bf59SDavid Howells TP_STRUCT__entry( 35309d2bf59SDavid Howells __field(unsigned int, local ) 35409d2bf59SDavid Howells __field(int, op ) 35509d2bf59SDavid Howells __field(int, usage ) 35609d2bf59SDavid Howells __field(const void *, where ) 35709d2bf59SDavid Howells ), 35809d2bf59SDavid Howells 35909d2bf59SDavid Howells TP_fast_assign( 36006d9532fSDavid Howells __entry->local = local_debug_id; 36109d2bf59SDavid Howells __entry->op = op; 36209d2bf59SDavid Howells __entry->usage = usage; 36309d2bf59SDavid Howells __entry->where = where; 36409d2bf59SDavid Howells ), 36509d2bf59SDavid Howells 36609d2bf59SDavid Howells TP_printk("L=%08x %s u=%d sp=%pSR", 36709d2bf59SDavid Howells __entry->local, 36809d2bf59SDavid Howells __print_symbolic(__entry->op, rxrpc_local_traces), 36909d2bf59SDavid Howells __entry->usage, 37009d2bf59SDavid Howells __entry->where) 37109d2bf59SDavid Howells ); 37209d2bf59SDavid Howells 3731159d4b4SDavid Howells TRACE_EVENT(rxrpc_peer, 37455f6c98eSDavid Howells TP_PROTO(unsigned int peer_debug_id, enum rxrpc_peer_trace op, 3751159d4b4SDavid Howells int usage, const void *where), 3761159d4b4SDavid Howells 37755f6c98eSDavid Howells TP_ARGS(peer_debug_id, op, usage, where), 3781159d4b4SDavid Howells 3791159d4b4SDavid Howells TP_STRUCT__entry( 3801159d4b4SDavid Howells __field(unsigned int, peer ) 3811159d4b4SDavid Howells __field(int, op ) 3821159d4b4SDavid Howells __field(int, usage ) 3831159d4b4SDavid Howells __field(const void *, where ) 3841159d4b4SDavid Howells ), 3851159d4b4SDavid Howells 3861159d4b4SDavid Howells TP_fast_assign( 38755f6c98eSDavid Howells __entry->peer = peer_debug_id; 3881159d4b4SDavid Howells __entry->op = op; 3891159d4b4SDavid Howells __entry->usage = usage; 3901159d4b4SDavid Howells __entry->where = where; 3911159d4b4SDavid Howells ), 3921159d4b4SDavid Howells 3931159d4b4SDavid Howells TP_printk("P=%08x %s u=%d sp=%pSR", 3941159d4b4SDavid Howells __entry->peer, 3951159d4b4SDavid Howells __print_symbolic(__entry->op, rxrpc_peer_traces), 3961159d4b4SDavid Howells __entry->usage, 3971159d4b4SDavid Howells __entry->where) 3981159d4b4SDavid Howells ); 3991159d4b4SDavid Howells 400363deeabSDavid Howells TRACE_EVENT(rxrpc_conn, 4014c1295dcSDavid Howells TP_PROTO(unsigned int conn_debug_id, enum rxrpc_conn_trace op, 402363deeabSDavid Howells int usage, const void *where), 403363deeabSDavid Howells 4044c1295dcSDavid Howells TP_ARGS(conn_debug_id, op, usage, where), 405363deeabSDavid Howells 406363deeabSDavid Howells TP_STRUCT__entry( 407a25e21f0SDavid Howells __field(unsigned int, conn ) 408363deeabSDavid Howells __field(int, op ) 409363deeabSDavid Howells __field(int, usage ) 410363deeabSDavid Howells __field(const void *, where ) 411363deeabSDavid Howells ), 412363deeabSDavid Howells 413363deeabSDavid Howells TP_fast_assign( 4144c1295dcSDavid Howells __entry->conn = conn_debug_id; 415363deeabSDavid Howells __entry->op = op; 416363deeabSDavid Howells __entry->usage = usage; 417363deeabSDavid Howells __entry->where = where; 418363deeabSDavid Howells ), 419363deeabSDavid Howells 420a25e21f0SDavid Howells TP_printk("C=%08x %s u=%d sp=%pSR", 421363deeabSDavid Howells __entry->conn, 422b54a134aSDavid Howells __print_symbolic(__entry->op, rxrpc_conn_traces), 423363deeabSDavid Howells __entry->usage, 424363deeabSDavid Howells __entry->where) 425363deeabSDavid Howells ); 426363deeabSDavid Howells 427363deeabSDavid Howells TRACE_EVENT(rxrpc_client, 428363deeabSDavid Howells TP_PROTO(struct rxrpc_connection *conn, int channel, 429363deeabSDavid Howells enum rxrpc_client_trace op), 430363deeabSDavid Howells 431363deeabSDavid Howells TP_ARGS(conn, channel, op), 432363deeabSDavid Howells 433363deeabSDavid Howells TP_STRUCT__entry( 434a25e21f0SDavid Howells __field(unsigned int, conn ) 435363deeabSDavid Howells __field(u32, cid ) 436363deeabSDavid Howells __field(int, channel ) 437363deeabSDavid Howells __field(int, usage ) 438363deeabSDavid Howells __field(enum rxrpc_client_trace, op ) 439363deeabSDavid Howells ), 440363deeabSDavid Howells 441363deeabSDavid Howells TP_fast_assign( 442245500d8SDavid Howells __entry->conn = conn ? conn->debug_id : 0; 443363deeabSDavid Howells __entry->channel = channel; 444a0575429SDavid Howells __entry->usage = conn ? refcount_read(&conn->ref) : -2; 445363deeabSDavid Howells __entry->op = op; 44696a9c425SDavid Howells __entry->cid = conn ? conn->proto.cid : 0; 447363deeabSDavid Howells ), 448363deeabSDavid Howells 449245500d8SDavid Howells TP_printk("C=%08x h=%2d %s i=%08x u=%d", 450363deeabSDavid Howells __entry->conn, 451363deeabSDavid Howells __entry->channel, 452b54a134aSDavid Howells __print_symbolic(__entry->op, rxrpc_client_traces), 453363deeabSDavid Howells __entry->cid, 454363deeabSDavid Howells __entry->usage) 455363deeabSDavid Howells ); 456363deeabSDavid Howells 457e34d4234SDavid Howells TRACE_EVENT(rxrpc_call, 45848c9e0ecSDavid Howells TP_PROTO(unsigned int call_debug_id, enum rxrpc_call_trace op, 4592ab27215SDavid Howells int usage, const void *where, const void *aux), 460e34d4234SDavid Howells 46148c9e0ecSDavid Howells TP_ARGS(call_debug_id, op, usage, where, aux), 462e34d4234SDavid Howells 463e34d4234SDavid Howells TP_STRUCT__entry( 464a25e21f0SDavid Howells __field(unsigned int, call ) 465e34d4234SDavid Howells __field(int, op ) 466e34d4234SDavid Howells __field(int, usage ) 467e34d4234SDavid Howells __field(const void *, where ) 468e34d4234SDavid Howells __field(const void *, aux ) 469e34d4234SDavid Howells ), 470e34d4234SDavid Howells 471e34d4234SDavid Howells TP_fast_assign( 47248c9e0ecSDavid Howells __entry->call = call_debug_id; 473e34d4234SDavid Howells __entry->op = op; 474e34d4234SDavid Howells __entry->usage = usage; 475e34d4234SDavid Howells __entry->where = where; 476e34d4234SDavid Howells __entry->aux = aux; 477e34d4234SDavid Howells ), 478e34d4234SDavid Howells 479a25e21f0SDavid Howells TP_printk("c=%08x %s u=%d sp=%pSR a=%p", 480e34d4234SDavid Howells __entry->call, 481b54a134aSDavid Howells __print_symbolic(__entry->op, rxrpc_call_traces), 482e34d4234SDavid Howells __entry->usage, 483e34d4234SDavid Howells __entry->where, 484e34d4234SDavid Howells __entry->aux) 485e34d4234SDavid Howells ); 486e34d4234SDavid Howells 487df844fd4SDavid Howells TRACE_EVENT(rxrpc_skb, 48871f3ca40SDavid Howells TP_PROTO(struct sk_buff *skb, enum rxrpc_skb_trace op, 48927f699ccSDavid Howells int usage, int mod_count, const void *where), 490df844fd4SDavid Howells 49127f699ccSDavid Howells TP_ARGS(skb, op, usage, mod_count, where), 492df844fd4SDavid Howells 493df844fd4SDavid Howells TP_STRUCT__entry( 494df844fd4SDavid Howells __field(struct sk_buff *, skb ) 49571f3ca40SDavid Howells __field(enum rxrpc_skb_trace, op ) 496df844fd4SDavid Howells __field(int, usage ) 497df844fd4SDavid Howells __field(int, mod_count ) 498df844fd4SDavid Howells __field(const void *, where ) 499df844fd4SDavid Howells ), 500df844fd4SDavid Howells 501df844fd4SDavid Howells TP_fast_assign( 502df844fd4SDavid Howells __entry->skb = skb; 503df844fd4SDavid Howells __entry->op = op; 504df844fd4SDavid Howells __entry->usage = usage; 505df844fd4SDavid Howells __entry->mod_count = mod_count; 506df844fd4SDavid Howells __entry->where = where; 507df844fd4SDavid Howells ), 508df844fd4SDavid Howells 50927f699ccSDavid Howells TP_printk("s=%p Rx %s u=%d m=%d p=%pSR", 510df844fd4SDavid Howells __entry->skb, 511b54a134aSDavid Howells __print_symbolic(__entry->op, rxrpc_skb_traces), 512df844fd4SDavid Howells __entry->usage, 513df844fd4SDavid Howells __entry->mod_count, 514df844fd4SDavid Howells __entry->where) 515df844fd4SDavid Howells ); 516df844fd4SDavid Howells 51749e19ec7SDavid Howells TRACE_EVENT(rxrpc_rx_packet, 51849e19ec7SDavid Howells TP_PROTO(struct rxrpc_skb_priv *sp), 51949e19ec7SDavid Howells 52049e19ec7SDavid Howells TP_ARGS(sp), 52149e19ec7SDavid Howells 52249e19ec7SDavid Howells TP_STRUCT__entry( 52349e19ec7SDavid Howells __field_struct(struct rxrpc_host_header, hdr ) 52449e19ec7SDavid Howells ), 52549e19ec7SDavid Howells 52649e19ec7SDavid Howells TP_fast_assign( 52749e19ec7SDavid Howells memcpy(&__entry->hdr, &sp->hdr, sizeof(__entry->hdr)); 52849e19ec7SDavid Howells ), 52949e19ec7SDavid Howells 530a3868bfcSDavid Howells TP_printk("%08x:%08x:%08x:%04x %08x %08x %02x %02x %s", 53149e19ec7SDavid Howells __entry->hdr.epoch, __entry->hdr.cid, 53249e19ec7SDavid Howells __entry->hdr.callNumber, __entry->hdr.serviceId, 53349e19ec7SDavid Howells __entry->hdr.serial, __entry->hdr.seq, 534a3868bfcSDavid Howells __entry->hdr.type, __entry->hdr.flags, 535b54a134aSDavid Howells __entry->hdr.type <= 15 ? 536b54a134aSDavid Howells __print_symbolic(__entry->hdr.type, rxrpc_pkts) : "?UNK") 53749e19ec7SDavid Howells ); 53849e19ec7SDavid Howells 53949e19ec7SDavid Howells TRACE_EVENT(rxrpc_rx_done, 54049e19ec7SDavid Howells TP_PROTO(int result, int abort_code), 54149e19ec7SDavid Howells 54249e19ec7SDavid Howells TP_ARGS(result, abort_code), 54349e19ec7SDavid Howells 54449e19ec7SDavid Howells TP_STRUCT__entry( 54549e19ec7SDavid Howells __field(int, result ) 54649e19ec7SDavid Howells __field(int, abort_code ) 54749e19ec7SDavid Howells ), 54849e19ec7SDavid Howells 54949e19ec7SDavid Howells TP_fast_assign( 55049e19ec7SDavid Howells __entry->result = result; 55149e19ec7SDavid Howells __entry->abort_code = abort_code; 55249e19ec7SDavid Howells ), 55349e19ec7SDavid Howells 55449e19ec7SDavid Howells TP_printk("r=%d a=%d", __entry->result, __entry->abort_code) 55549e19ec7SDavid Howells ); 55649e19ec7SDavid Howells 5575a42976dSDavid Howells TRACE_EVENT(rxrpc_abort, 558a25e21f0SDavid Howells TP_PROTO(unsigned int call_nr, const char *why, u32 cid, u32 call_id, 559a25e21f0SDavid Howells rxrpc_seq_t seq, int abort_code, int error), 5605a42976dSDavid Howells 561a25e21f0SDavid Howells TP_ARGS(call_nr, why, cid, call_id, seq, abort_code, error), 5625a42976dSDavid Howells 5635a42976dSDavid Howells TP_STRUCT__entry( 564a25e21f0SDavid Howells __field(unsigned int, call_nr ) 5655a42976dSDavid Howells __array(char, why, 4 ) 5665a42976dSDavid Howells __field(u32, cid ) 5675a42976dSDavid Howells __field(u32, call_id ) 5685a42976dSDavid Howells __field(rxrpc_seq_t, seq ) 5695a42976dSDavid Howells __field(int, abort_code ) 5705a42976dSDavid Howells __field(int, error ) 5715a42976dSDavid Howells ), 5725a42976dSDavid Howells 5735a42976dSDavid Howells TP_fast_assign( 5745a42976dSDavid Howells memcpy(__entry->why, why, 4); 575a25e21f0SDavid Howells __entry->call_nr = call_nr; 5765a42976dSDavid Howells __entry->cid = cid; 5775a42976dSDavid Howells __entry->call_id = call_id; 5785a42976dSDavid Howells __entry->abort_code = abort_code; 5795a42976dSDavid Howells __entry->error = error; 5805a42976dSDavid Howells __entry->seq = seq; 5815a42976dSDavid Howells ), 5825a42976dSDavid Howells 583a25e21f0SDavid Howells TP_printk("c=%08x %08x:%08x s=%u a=%d e=%d %s", 584a25e21f0SDavid Howells __entry->call_nr, 5855a42976dSDavid Howells __entry->cid, __entry->call_id, __entry->seq, 5865a42976dSDavid Howells __entry->abort_code, __entry->error, __entry->why) 5875a42976dSDavid Howells ); 5885a42976dSDavid Howells 5891bae5d22SDavid Howells TRACE_EVENT(rxrpc_call_complete, 5901bae5d22SDavid Howells TP_PROTO(struct rxrpc_call *call), 5911bae5d22SDavid Howells 5921bae5d22SDavid Howells TP_ARGS(call), 5931bae5d22SDavid Howells 5941bae5d22SDavid Howells TP_STRUCT__entry( 5951bae5d22SDavid Howells __field(unsigned int, call ) 5961bae5d22SDavid Howells __field(enum rxrpc_call_completion, compl ) 5971bae5d22SDavid Howells __field(int, error ) 5981bae5d22SDavid Howells __field(u32, abort_code ) 5991bae5d22SDavid Howells ), 6001bae5d22SDavid Howells 6011bae5d22SDavid Howells TP_fast_assign( 6021bae5d22SDavid Howells __entry->call = call->debug_id; 6031bae5d22SDavid Howells __entry->compl = call->completion; 6041bae5d22SDavid Howells __entry->error = call->error; 6051bae5d22SDavid Howells __entry->abort_code = call->abort_code; 6061bae5d22SDavid Howells ), 6071bae5d22SDavid Howells 6081bae5d22SDavid Howells TP_printk("c=%08x %s r=%d ac=%d", 6091bae5d22SDavid Howells __entry->call, 6101bae5d22SDavid Howells __print_symbolic(__entry->compl, rxrpc_completions), 6111bae5d22SDavid Howells __entry->error, 6121bae5d22SDavid Howells __entry->abort_code) 6131bae5d22SDavid Howells ); 6141bae5d22SDavid Howells 615a4ea4c47SDavid Howells TRACE_EVENT(rxrpc_txqueue, 616a4ea4c47SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_txqueue_trace why), 617a124fe3eSDavid Howells 618a124fe3eSDavid Howells TP_ARGS(call, why), 619a124fe3eSDavid Howells 620a124fe3eSDavid Howells TP_STRUCT__entry( 621a25e21f0SDavid Howells __field(unsigned int, call ) 622a4ea4c47SDavid Howells __field(enum rxrpc_txqueue_trace, why ) 623a4ea4c47SDavid Howells __field(rxrpc_seq_t, acks_hard_ack ) 624a4ea4c47SDavid Howells __field(rxrpc_seq_t, tx_bottom ) 625a124fe3eSDavid Howells __field(rxrpc_seq_t, tx_top ) 626b1d9f7fdSDavid Howells __field(int, tx_winsize ) 627a124fe3eSDavid Howells ), 628a124fe3eSDavid Howells 629a124fe3eSDavid Howells TP_fast_assign( 630a25e21f0SDavid Howells __entry->call = call->debug_id; 631a124fe3eSDavid Howells __entry->why = why; 632a4ea4c47SDavid Howells __entry->acks_hard_ack = call->acks_hard_ack; 633a4ea4c47SDavid Howells __entry->tx_bottom = call->tx_bottom; 634a124fe3eSDavid Howells __entry->tx_top = call->tx_top; 635b1d9f7fdSDavid Howells __entry->tx_winsize = call->tx_winsize; 636a124fe3eSDavid Howells ), 637a124fe3eSDavid Howells 638a4ea4c47SDavid Howells TP_printk("c=%08x %s f=%08x h=%08x n=%u/%u/%u", 639a124fe3eSDavid Howells __entry->call, 640a4ea4c47SDavid Howells __print_symbolic(__entry->why, rxrpc_txqueue_traces), 641a4ea4c47SDavid Howells __entry->tx_bottom, 642a4ea4c47SDavid Howells __entry->acks_hard_ack, 643a4ea4c47SDavid Howells __entry->tx_top - __entry->tx_bottom, 644a4ea4c47SDavid Howells __entry->tx_top - __entry->acks_hard_ack, 645b1d9f7fdSDavid Howells __entry->tx_winsize) 646a124fe3eSDavid Howells ); 647a124fe3eSDavid Howells 648b1d9f7fdSDavid Howells TRACE_EVENT(rxrpc_rx_data, 6494764c0daSDavid Howells TP_PROTO(unsigned int call, rxrpc_seq_t seq, 650d4d02d8bSDavid Howells rxrpc_serial_t serial, u8 flags), 651ec71eb9aSDavid Howells 652d4d02d8bSDavid Howells TP_ARGS(call, seq, serial, flags), 653ec71eb9aSDavid Howells 654ec71eb9aSDavid Howells TP_STRUCT__entry( 655a25e21f0SDavid Howells __field(unsigned int, call ) 656b1d9f7fdSDavid Howells __field(rxrpc_seq_t, seq ) 657b1d9f7fdSDavid Howells __field(rxrpc_serial_t, serial ) 658b1d9f7fdSDavid Howells __field(u8, flags ) 659b1d9f7fdSDavid Howells ), 660b1d9f7fdSDavid Howells 661b1d9f7fdSDavid Howells TP_fast_assign( 6624764c0daSDavid Howells __entry->call = call; 663b1d9f7fdSDavid Howells __entry->seq = seq; 664b1d9f7fdSDavid Howells __entry->serial = serial; 665b1d9f7fdSDavid Howells __entry->flags = flags; 666b1d9f7fdSDavid Howells ), 667b1d9f7fdSDavid Howells 668d4d02d8bSDavid Howells TP_printk("c=%08x DATA %08x q=%08x fl=%02x", 669b1d9f7fdSDavid Howells __entry->call, 670b1d9f7fdSDavid Howells __entry->serial, 671b1d9f7fdSDavid Howells __entry->seq, 672d4d02d8bSDavid Howells __entry->flags) 673b1d9f7fdSDavid Howells ); 674b1d9f7fdSDavid Howells 675b1d9f7fdSDavid Howells TRACE_EVENT(rxrpc_rx_ack, 676b1d9f7fdSDavid Howells TP_PROTO(struct rxrpc_call *call, 677b1d9f7fdSDavid Howells rxrpc_serial_t serial, rxrpc_serial_t ack_serial, 678b1d9f7fdSDavid Howells rxrpc_seq_t first, rxrpc_seq_t prev, u8 reason, u8 n_acks), 679b1d9f7fdSDavid Howells 680b1d9f7fdSDavid Howells TP_ARGS(call, serial, ack_serial, first, prev, reason, n_acks), 681b1d9f7fdSDavid Howells 682b1d9f7fdSDavid Howells TP_STRUCT__entry( 683a25e21f0SDavid Howells __field(unsigned int, call ) 684b1d9f7fdSDavid Howells __field(rxrpc_serial_t, serial ) 685b1d9f7fdSDavid Howells __field(rxrpc_serial_t, ack_serial ) 686ec71eb9aSDavid Howells __field(rxrpc_seq_t, first ) 687b1d9f7fdSDavid Howells __field(rxrpc_seq_t, prev ) 688ec71eb9aSDavid Howells __field(u8, reason ) 689ec71eb9aSDavid Howells __field(u8, n_acks ) 690ec71eb9aSDavid Howells ), 691ec71eb9aSDavid Howells 692ec71eb9aSDavid Howells TP_fast_assign( 693a25e21f0SDavid Howells __entry->call = call->debug_id; 694b1d9f7fdSDavid Howells __entry->serial = serial; 695b1d9f7fdSDavid Howells __entry->ack_serial = ack_serial; 696ec71eb9aSDavid Howells __entry->first = first; 697b1d9f7fdSDavid Howells __entry->prev = prev; 698ec71eb9aSDavid Howells __entry->reason = reason; 699ec71eb9aSDavid Howells __entry->n_acks = n_acks; 700ec71eb9aSDavid Howells ), 701ec71eb9aSDavid Howells 702a25e21f0SDavid Howells TP_printk("c=%08x %08x %s r=%08x f=%08x p=%08x n=%u", 703ec71eb9aSDavid Howells __entry->call, 704b1d9f7fdSDavid Howells __entry->serial, 705b54a134aSDavid Howells __print_symbolic(__entry->reason, rxrpc_ack_names), 706b1d9f7fdSDavid Howells __entry->ack_serial, 707ec71eb9aSDavid Howells __entry->first, 708b1d9f7fdSDavid Howells __entry->prev, 709ec71eb9aSDavid Howells __entry->n_acks) 710ec71eb9aSDavid Howells ); 711ec71eb9aSDavid Howells 712005ede28SDavid Howells TRACE_EVENT(rxrpc_rx_abort, 713005ede28SDavid Howells TP_PROTO(struct rxrpc_call *call, rxrpc_serial_t serial, 714005ede28SDavid Howells u32 abort_code), 715005ede28SDavid Howells 716005ede28SDavid Howells TP_ARGS(call, serial, abort_code), 717005ede28SDavid Howells 718005ede28SDavid Howells TP_STRUCT__entry( 719a25e21f0SDavid Howells __field(unsigned int, call ) 720005ede28SDavid Howells __field(rxrpc_serial_t, serial ) 721005ede28SDavid Howells __field(u32, abort_code ) 722005ede28SDavid Howells ), 723005ede28SDavid Howells 724005ede28SDavid Howells TP_fast_assign( 725a25e21f0SDavid Howells __entry->call = call->debug_id; 726005ede28SDavid Howells __entry->serial = serial; 727005ede28SDavid Howells __entry->abort_code = abort_code; 728005ede28SDavid Howells ), 729005ede28SDavid Howells 730a25e21f0SDavid Howells TP_printk("c=%08x ABORT %08x ac=%d", 731005ede28SDavid Howells __entry->call, 732005ede28SDavid Howells __entry->serial, 733005ede28SDavid Howells __entry->abort_code) 734005ede28SDavid Howells ); 735005ede28SDavid Howells 736*2ebdb26eSDavid Howells TRACE_EVENT(rxrpc_rx_challenge, 737*2ebdb26eSDavid Howells TP_PROTO(struct rxrpc_connection *conn, rxrpc_serial_t serial, 738*2ebdb26eSDavid Howells u32 version, u32 nonce, u32 min_level), 739*2ebdb26eSDavid Howells 740*2ebdb26eSDavid Howells TP_ARGS(conn, serial, version, nonce, min_level), 741*2ebdb26eSDavid Howells 742*2ebdb26eSDavid Howells TP_STRUCT__entry( 743*2ebdb26eSDavid Howells __field(unsigned int, conn ) 744*2ebdb26eSDavid Howells __field(rxrpc_serial_t, serial ) 745*2ebdb26eSDavid Howells __field(u32, version ) 746*2ebdb26eSDavid Howells __field(u32, nonce ) 747*2ebdb26eSDavid Howells __field(u32, min_level ) 748*2ebdb26eSDavid Howells ), 749*2ebdb26eSDavid Howells 750*2ebdb26eSDavid Howells TP_fast_assign( 751*2ebdb26eSDavid Howells __entry->conn = conn->debug_id; 752*2ebdb26eSDavid Howells __entry->serial = serial; 753*2ebdb26eSDavid Howells __entry->version = version; 754*2ebdb26eSDavid Howells __entry->nonce = nonce; 755*2ebdb26eSDavid Howells __entry->min_level = min_level; 756*2ebdb26eSDavid Howells ), 757*2ebdb26eSDavid Howells 758*2ebdb26eSDavid Howells TP_printk("C=%08x CHALLENGE %08x v=%x n=%x ml=%x", 759*2ebdb26eSDavid Howells __entry->conn, 760*2ebdb26eSDavid Howells __entry->serial, 761*2ebdb26eSDavid Howells __entry->version, 762*2ebdb26eSDavid Howells __entry->nonce, 763*2ebdb26eSDavid Howells __entry->min_level) 764*2ebdb26eSDavid Howells ); 765*2ebdb26eSDavid Howells 766*2ebdb26eSDavid Howells TRACE_EVENT(rxrpc_rx_response, 767*2ebdb26eSDavid Howells TP_PROTO(struct rxrpc_connection *conn, rxrpc_serial_t serial, 768*2ebdb26eSDavid Howells u32 version, u32 kvno, u32 ticket_len), 769*2ebdb26eSDavid Howells 770*2ebdb26eSDavid Howells TP_ARGS(conn, serial, version, kvno, ticket_len), 771*2ebdb26eSDavid Howells 772*2ebdb26eSDavid Howells TP_STRUCT__entry( 773*2ebdb26eSDavid Howells __field(unsigned int, conn ) 774*2ebdb26eSDavid Howells __field(rxrpc_serial_t, serial ) 775*2ebdb26eSDavid Howells __field(u32, version ) 776*2ebdb26eSDavid Howells __field(u32, kvno ) 777*2ebdb26eSDavid Howells __field(u32, ticket_len ) 778*2ebdb26eSDavid Howells ), 779*2ebdb26eSDavid Howells 780*2ebdb26eSDavid Howells TP_fast_assign( 781*2ebdb26eSDavid Howells __entry->conn = conn->debug_id; 782*2ebdb26eSDavid Howells __entry->serial = serial; 783*2ebdb26eSDavid Howells __entry->version = version; 784*2ebdb26eSDavid Howells __entry->kvno = kvno; 785*2ebdb26eSDavid Howells __entry->ticket_len = ticket_len; 786*2ebdb26eSDavid Howells ), 787*2ebdb26eSDavid Howells 788*2ebdb26eSDavid Howells TP_printk("C=%08x RESPONSE %08x v=%x kvno=%x tl=%x", 789*2ebdb26eSDavid Howells __entry->conn, 790*2ebdb26eSDavid Howells __entry->serial, 791*2ebdb26eSDavid Howells __entry->version, 792*2ebdb26eSDavid Howells __entry->kvno, 793*2ebdb26eSDavid Howells __entry->ticket_len) 794*2ebdb26eSDavid Howells ); 795*2ebdb26eSDavid Howells 796740586d2SDavid Howells TRACE_EVENT(rxrpc_rx_rwind_change, 797740586d2SDavid Howells TP_PROTO(struct rxrpc_call *call, rxrpc_serial_t serial, 798740586d2SDavid Howells u32 rwind, bool wake), 799740586d2SDavid Howells 800740586d2SDavid Howells TP_ARGS(call, serial, rwind, wake), 801740586d2SDavid Howells 802740586d2SDavid Howells TP_STRUCT__entry( 803a25e21f0SDavid Howells __field(unsigned int, call ) 804740586d2SDavid Howells __field(rxrpc_serial_t, serial ) 805740586d2SDavid Howells __field(u32, rwind ) 806740586d2SDavid Howells __field(bool, wake ) 807740586d2SDavid Howells ), 808740586d2SDavid Howells 809740586d2SDavid Howells TP_fast_assign( 810a25e21f0SDavid Howells __entry->call = call->debug_id; 811740586d2SDavid Howells __entry->serial = serial; 812740586d2SDavid Howells __entry->rwind = rwind; 813740586d2SDavid Howells __entry->wake = wake; 814740586d2SDavid Howells ), 815740586d2SDavid Howells 816a25e21f0SDavid Howells TP_printk("c=%08x %08x rw=%u%s", 817740586d2SDavid Howells __entry->call, 818740586d2SDavid Howells __entry->serial, 819740586d2SDavid Howells __entry->rwind, 820740586d2SDavid Howells __entry->wake ? " wake" : "") 821740586d2SDavid Howells ); 822740586d2SDavid Howells 8234764c0daSDavid Howells TRACE_EVENT(rxrpc_tx_packet, 8244764c0daSDavid Howells TP_PROTO(unsigned int call_id, struct rxrpc_wire_header *whdr, 8254764c0daSDavid Howells enum rxrpc_tx_point where), 8264764c0daSDavid Howells 8274764c0daSDavid Howells TP_ARGS(call_id, whdr, where), 8284764c0daSDavid Howells 8294764c0daSDavid Howells TP_STRUCT__entry( 8304764c0daSDavid Howells __field(unsigned int, call ) 8314764c0daSDavid Howells __field(enum rxrpc_tx_point, where ) 8324764c0daSDavid Howells __field_struct(struct rxrpc_wire_header, whdr ) 8334764c0daSDavid Howells ), 8344764c0daSDavid Howells 8354764c0daSDavid Howells TP_fast_assign( 8364764c0daSDavid Howells __entry->call = call_id; 8374764c0daSDavid Howells memcpy(&__entry->whdr, whdr, sizeof(__entry->whdr)); 8384e2abd3cSDavid Howells __entry->where = where; 8394764c0daSDavid Howells ), 8404764c0daSDavid Howells 8414764c0daSDavid Howells TP_printk("c=%08x %08x:%08x:%08x:%04x %08x %08x %02x %02x %s %s", 8424764c0daSDavid Howells __entry->call, 8434764c0daSDavid Howells ntohl(__entry->whdr.epoch), 8444764c0daSDavid Howells ntohl(__entry->whdr.cid), 8454764c0daSDavid Howells ntohl(__entry->whdr.callNumber), 8464764c0daSDavid Howells ntohs(__entry->whdr.serviceId), 8474764c0daSDavid Howells ntohl(__entry->whdr.serial), 8484764c0daSDavid Howells ntohl(__entry->whdr.seq), 8494764c0daSDavid Howells __entry->whdr.type, __entry->whdr.flags, 8504764c0daSDavid Howells __entry->whdr.type <= 15 ? 8514764c0daSDavid Howells __print_symbolic(__entry->whdr.type, rxrpc_pkts) : "?UNK", 8524764c0daSDavid Howells __print_symbolic(__entry->where, rxrpc_tx_points)) 8534764c0daSDavid Howells ); 8544764c0daSDavid Howells 855be832aecSDavid Howells TRACE_EVENT(rxrpc_tx_data, 856be832aecSDavid Howells TP_PROTO(struct rxrpc_call *call, rxrpc_seq_t seq, 857a1767077SDavid Howells rxrpc_serial_t serial, u8 flags, bool retrans, bool lose), 858f3639df2SDavid Howells 859a1767077SDavid Howells TP_ARGS(call, seq, serial, flags, retrans, lose), 860f3639df2SDavid Howells 861f3639df2SDavid Howells TP_STRUCT__entry( 862a25e21f0SDavid Howells __field(unsigned int, call ) 863be832aecSDavid Howells __field(rxrpc_seq_t, seq ) 864f3639df2SDavid Howells __field(rxrpc_serial_t, serial ) 8654764c0daSDavid Howells __field(u32, cid ) 8664764c0daSDavid Howells __field(u32, call_id ) 867be832aecSDavid Howells __field(u8, flags ) 868a1767077SDavid Howells __field(bool, retrans ) 869be832aecSDavid Howells __field(bool, lose ) 870be832aecSDavid Howells ), 871be832aecSDavid Howells 872be832aecSDavid Howells TP_fast_assign( 873a25e21f0SDavid Howells __entry->call = call->debug_id; 8744764c0daSDavid Howells __entry->cid = call->cid; 8754764c0daSDavid Howells __entry->call_id = call->call_id; 876be832aecSDavid Howells __entry->seq = seq; 877be832aecSDavid Howells __entry->serial = serial; 878be832aecSDavid Howells __entry->flags = flags; 879a1767077SDavid Howells __entry->retrans = retrans; 880be832aecSDavid Howells __entry->lose = lose; 881be832aecSDavid Howells ), 882be832aecSDavid Howells 8834764c0daSDavid Howells TP_printk("c=%08x DATA %08x:%08x %08x q=%08x fl=%02x%s%s", 884be832aecSDavid Howells __entry->call, 8854764c0daSDavid Howells __entry->cid, 8864764c0daSDavid Howells __entry->call_id, 887be832aecSDavid Howells __entry->serial, 888be832aecSDavid Howells __entry->seq, 889be832aecSDavid Howells __entry->flags, 890265a44bbSDavid Howells __entry->retrans ? " *RETRANS*" : "", 891be832aecSDavid Howells __entry->lose ? " *LOSE*" : "") 892be832aecSDavid Howells ); 893be832aecSDavid Howells 894be832aecSDavid Howells TRACE_EVENT(rxrpc_tx_ack, 8954764c0daSDavid Howells TP_PROTO(unsigned int call, rxrpc_serial_t serial, 896be832aecSDavid Howells rxrpc_seq_t ack_first, rxrpc_serial_t ack_serial, 897be832aecSDavid Howells u8 reason, u8 n_acks), 898be832aecSDavid Howells 899be832aecSDavid Howells TP_ARGS(call, serial, ack_first, ack_serial, reason, n_acks), 900be832aecSDavid Howells 901be832aecSDavid Howells TP_STRUCT__entry( 902a25e21f0SDavid Howells __field(unsigned int, call ) 903be832aecSDavid Howells __field(rxrpc_serial_t, serial ) 904be832aecSDavid Howells __field(rxrpc_seq_t, ack_first ) 905be832aecSDavid Howells __field(rxrpc_serial_t, ack_serial ) 906f3639df2SDavid Howells __field(u8, reason ) 907f3639df2SDavid Howells __field(u8, n_acks ) 908f3639df2SDavid Howells ), 909f3639df2SDavid Howells 910f3639df2SDavid Howells TP_fast_assign( 9114764c0daSDavid Howells __entry->call = call; 912f3639df2SDavid Howells __entry->serial = serial; 913be832aecSDavid Howells __entry->ack_first = ack_first; 914be832aecSDavid Howells __entry->ack_serial = ack_serial; 915f3639df2SDavid Howells __entry->reason = reason; 916f3639df2SDavid Howells __entry->n_acks = n_acks; 917f3639df2SDavid Howells ), 918f3639df2SDavid Howells 919a25e21f0SDavid Howells TP_printk(" c=%08x ACK %08x %s f=%08x r=%08x n=%u", 920f3639df2SDavid Howells __entry->call, 921f3639df2SDavid Howells __entry->serial, 922b54a134aSDavid Howells __print_symbolic(__entry->reason, rxrpc_ack_names), 923be832aecSDavid Howells __entry->ack_first, 924be832aecSDavid Howells __entry->ack_serial, 925f3639df2SDavid Howells __entry->n_acks) 926f3639df2SDavid Howells ); 927f3639df2SDavid Howells 92858dc63c9SDavid Howells TRACE_EVENT(rxrpc_receive, 92958dc63c9SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_receive_trace why, 93058dc63c9SDavid Howells rxrpc_serial_t serial, rxrpc_seq_t seq), 93158dc63c9SDavid Howells 93258dc63c9SDavid Howells TP_ARGS(call, why, serial, seq), 93358dc63c9SDavid Howells 93458dc63c9SDavid Howells TP_STRUCT__entry( 935a25e21f0SDavid Howells __field(unsigned int, call ) 93658dc63c9SDavid Howells __field(enum rxrpc_receive_trace, why ) 93758dc63c9SDavid Howells __field(rxrpc_serial_t, serial ) 93858dc63c9SDavid Howells __field(rxrpc_seq_t, seq ) 9395d7edbc9SDavid Howells __field(u64, window ) 94058dc63c9SDavid Howells ), 94158dc63c9SDavid Howells 94258dc63c9SDavid Howells TP_fast_assign( 943a25e21f0SDavid Howells __entry->call = call->debug_id; 94458dc63c9SDavid Howells __entry->why = why; 94558dc63c9SDavid Howells __entry->serial = serial; 94658dc63c9SDavid Howells __entry->seq = seq; 9475d7edbc9SDavid Howells __entry->window = atomic64_read(&call->ackr_window); 94858dc63c9SDavid Howells ), 94958dc63c9SDavid Howells 950a25e21f0SDavid Howells TP_printk("c=%08x %s r=%08x q=%08x w=%08x-%08x", 95158dc63c9SDavid Howells __entry->call, 952b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_receive_traces), 95358dc63c9SDavid Howells __entry->serial, 95458dc63c9SDavid Howells __entry->seq, 9555d7edbc9SDavid Howells lower_32_bits(__entry->window), 9565d7edbc9SDavid Howells upper_32_bits(__entry->window)) 95758dc63c9SDavid Howells ); 95858dc63c9SDavid Howells 95984997905SDavid Howells TRACE_EVENT(rxrpc_recvmsg, 96084997905SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_recvmsg_trace why, 961faf92e8dSDavid Howells int ret), 962faf92e8dSDavid Howells 963faf92e8dSDavid Howells TP_ARGS(call, why, ret), 964faf92e8dSDavid Howells 965faf92e8dSDavid Howells TP_STRUCT__entry( 966faf92e8dSDavid Howells __field(unsigned int, call ) 967faf92e8dSDavid Howells __field(enum rxrpc_recvmsg_trace, why ) 968faf92e8dSDavid Howells __field(int, ret ) 969faf92e8dSDavid Howells ), 970faf92e8dSDavid Howells 971faf92e8dSDavid Howells TP_fast_assign( 972faf92e8dSDavid Howells __entry->call = call ? call->debug_id : 0; 973faf92e8dSDavid Howells __entry->why = why; 974faf92e8dSDavid Howells __entry->ret = ret; 975faf92e8dSDavid Howells ), 976faf92e8dSDavid Howells 977faf92e8dSDavid Howells TP_printk("c=%08x %s ret=%d", 978faf92e8dSDavid Howells __entry->call, 979faf92e8dSDavid Howells __print_symbolic(__entry->why, rxrpc_recvmsg_traces), 980faf92e8dSDavid Howells __entry->ret) 981faf92e8dSDavid Howells ); 982faf92e8dSDavid Howells 983faf92e8dSDavid Howells TRACE_EVENT(rxrpc_recvdata, 984faf92e8dSDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_recvmsg_trace why, 98584997905SDavid Howells rxrpc_seq_t seq, unsigned int offset, unsigned int len, 98684997905SDavid Howells int ret), 98784997905SDavid Howells 98884997905SDavid Howells TP_ARGS(call, why, seq, offset, len, ret), 98984997905SDavid Howells 99084997905SDavid Howells TP_STRUCT__entry( 991a25e21f0SDavid Howells __field(unsigned int, call ) 99284997905SDavid Howells __field(enum rxrpc_recvmsg_trace, why ) 99384997905SDavid Howells __field(rxrpc_seq_t, seq ) 99484997905SDavid Howells __field(unsigned int, offset ) 99584997905SDavid Howells __field(unsigned int, len ) 99684997905SDavid Howells __field(int, ret ) 99784997905SDavid Howells ), 99884997905SDavid Howells 99984997905SDavid Howells TP_fast_assign( 1000db9b2e0aSDavid Howells __entry->call = call ? call->debug_id : 0; 100184997905SDavid Howells __entry->why = why; 100284997905SDavid Howells __entry->seq = seq; 100384997905SDavid Howells __entry->offset = offset; 100484997905SDavid Howells __entry->len = len; 100584997905SDavid Howells __entry->ret = ret; 100684997905SDavid Howells ), 100784997905SDavid Howells 1008a25e21f0SDavid Howells TP_printk("c=%08x %s q=%08x o=%u l=%u ret=%d", 100984997905SDavid Howells __entry->call, 1010b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_recvmsg_traces), 101184997905SDavid Howells __entry->seq, 101284997905SDavid Howells __entry->offset, 101384997905SDavid Howells __entry->len, 101484997905SDavid Howells __entry->ret) 101584997905SDavid Howells ); 101684997905SDavid Howells 1017cf1a6474SDavid Howells TRACE_EVENT(rxrpc_rtt_tx, 1018cf1a6474SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_rtt_tx_trace why, 10194700c4d8SDavid Howells int slot, rxrpc_serial_t send_serial), 1020cf1a6474SDavid Howells 10214700c4d8SDavid Howells TP_ARGS(call, why, slot, send_serial), 1022cf1a6474SDavid Howells 1023cf1a6474SDavid Howells TP_STRUCT__entry( 1024a25e21f0SDavid Howells __field(unsigned int, call ) 1025cf1a6474SDavid Howells __field(enum rxrpc_rtt_tx_trace, why ) 10264700c4d8SDavid Howells __field(int, slot ) 1027cf1a6474SDavid Howells __field(rxrpc_serial_t, send_serial ) 1028cf1a6474SDavid Howells ), 1029cf1a6474SDavid Howells 1030cf1a6474SDavid Howells TP_fast_assign( 1031a25e21f0SDavid Howells __entry->call = call->debug_id; 1032cf1a6474SDavid Howells __entry->why = why; 10334700c4d8SDavid Howells __entry->slot = slot; 1034cf1a6474SDavid Howells __entry->send_serial = send_serial; 1035cf1a6474SDavid Howells ), 1036cf1a6474SDavid Howells 10374700c4d8SDavid Howells TP_printk("c=%08x [%d] %s sr=%08x", 1038cf1a6474SDavid Howells __entry->call, 10394700c4d8SDavid Howells __entry->slot, 1040b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_rtt_tx_traces), 1041cf1a6474SDavid Howells __entry->send_serial) 1042cf1a6474SDavid Howells ); 1043cf1a6474SDavid Howells 1044cf1a6474SDavid Howells TRACE_EVENT(rxrpc_rtt_rx, 1045cf1a6474SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_rtt_rx_trace why, 10464700c4d8SDavid Howells int slot, 1047cf1a6474SDavid Howells rxrpc_serial_t send_serial, rxrpc_serial_t resp_serial, 1048c410bf01SDavid Howells u32 rtt, u32 rto), 1049cf1a6474SDavid Howells 10504700c4d8SDavid Howells TP_ARGS(call, why, slot, send_serial, resp_serial, rtt, rto), 1051cf1a6474SDavid Howells 1052cf1a6474SDavid Howells TP_STRUCT__entry( 1053a25e21f0SDavid Howells __field(unsigned int, call ) 1054cf1a6474SDavid Howells __field(enum rxrpc_rtt_rx_trace, why ) 10554700c4d8SDavid Howells __field(int, slot ) 1056cf1a6474SDavid Howells __field(rxrpc_serial_t, send_serial ) 1057cf1a6474SDavid Howells __field(rxrpc_serial_t, resp_serial ) 1058c410bf01SDavid Howells __field(u32, rtt ) 1059c410bf01SDavid Howells __field(u32, rto ) 1060cf1a6474SDavid Howells ), 1061cf1a6474SDavid Howells 1062cf1a6474SDavid Howells TP_fast_assign( 1063a25e21f0SDavid Howells __entry->call = call->debug_id; 1064cf1a6474SDavid Howells __entry->why = why; 10654700c4d8SDavid Howells __entry->slot = slot; 1066cf1a6474SDavid Howells __entry->send_serial = send_serial; 1067cf1a6474SDavid Howells __entry->resp_serial = resp_serial; 1068cf1a6474SDavid Howells __entry->rtt = rtt; 1069c410bf01SDavid Howells __entry->rto = rto; 1070cf1a6474SDavid Howells ), 1071cf1a6474SDavid Howells 10724700c4d8SDavid Howells TP_printk("c=%08x [%d] %s sr=%08x rr=%08x rtt=%u rto=%u", 1073cf1a6474SDavid Howells __entry->call, 10744700c4d8SDavid Howells __entry->slot, 1075b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_rtt_rx_traces), 1076cf1a6474SDavid Howells __entry->send_serial, 1077cf1a6474SDavid Howells __entry->resp_serial, 1078cf1a6474SDavid Howells __entry->rtt, 1079c410bf01SDavid Howells __entry->rto) 1080cf1a6474SDavid Howells ); 1081cf1a6474SDavid Howells 1082fc7ab6d2SDavid Howells TRACE_EVENT(rxrpc_timer, 1083fc7ab6d2SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_timer_trace why, 1084a158bdd3SDavid Howells unsigned long now), 1085fc7ab6d2SDavid Howells 1086a158bdd3SDavid Howells TP_ARGS(call, why, now), 1087fc7ab6d2SDavid Howells 1088fc7ab6d2SDavid Howells TP_STRUCT__entry( 1089a25e21f0SDavid Howells __field(unsigned int, call ) 1090fc7ab6d2SDavid Howells __field(enum rxrpc_timer_trace, why ) 1091a158bdd3SDavid Howells __field(long, now ) 1092a158bdd3SDavid Howells __field(long, ack_at ) 1093bd1fdf8cSDavid Howells __field(long, ack_lost_at ) 1094a158bdd3SDavid Howells __field(long, resend_at ) 1095a158bdd3SDavid Howells __field(long, ping_at ) 1096a158bdd3SDavid Howells __field(long, expect_rx_by ) 1097a158bdd3SDavid Howells __field(long, expect_req_by ) 1098a158bdd3SDavid Howells __field(long, expect_term_by ) 1099a158bdd3SDavid Howells __field(long, timer ) 1100fc7ab6d2SDavid Howells ), 1101fc7ab6d2SDavid Howells 1102fc7ab6d2SDavid Howells TP_fast_assign( 1103a25e21f0SDavid Howells __entry->call = call->debug_id; 1104fc7ab6d2SDavid Howells __entry->why = why; 1105fc7ab6d2SDavid Howells __entry->now = now; 1106530403d9SDavid Howells __entry->ack_at = call->delay_ack_at; 1107bd1fdf8cSDavid Howells __entry->ack_lost_at = call->ack_lost_at; 1108fc7ab6d2SDavid Howells __entry->resend_at = call->resend_at; 1109a158bdd3SDavid Howells __entry->expect_rx_by = call->expect_rx_by; 1110a158bdd3SDavid Howells __entry->expect_req_by = call->expect_req_by; 1111a158bdd3SDavid Howells __entry->expect_term_by = call->expect_term_by; 1112fc7ab6d2SDavid Howells __entry->timer = call->timer.expires; 1113fc7ab6d2SDavid Howells ), 1114fc7ab6d2SDavid Howells 1115a25e21f0SDavid Howells TP_printk("c=%08x %s a=%ld la=%ld r=%ld xr=%ld xq=%ld xt=%ld t=%ld", 1116fc7ab6d2SDavid Howells __entry->call, 1117b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_timer_traces), 1118a158bdd3SDavid Howells __entry->ack_at - __entry->now, 1119bd1fdf8cSDavid Howells __entry->ack_lost_at - __entry->now, 1120a158bdd3SDavid Howells __entry->resend_at - __entry->now, 1121a158bdd3SDavid Howells __entry->expect_rx_by - __entry->now, 1122a158bdd3SDavid Howells __entry->expect_req_by - __entry->now, 1123a158bdd3SDavid Howells __entry->expect_term_by - __entry->now, 1124a158bdd3SDavid Howells __entry->timer - __entry->now) 1125fc7ab6d2SDavid Howells ); 1126fc7ab6d2SDavid Howells 1127334dfbfcSDavid Howells TRACE_EVENT(rxrpc_timer_expired, 1128334dfbfcSDavid Howells TP_PROTO(struct rxrpc_call *call, unsigned long now), 1129334dfbfcSDavid Howells 1130334dfbfcSDavid Howells TP_ARGS(call, now), 1131334dfbfcSDavid Howells 1132334dfbfcSDavid Howells TP_STRUCT__entry( 1133334dfbfcSDavid Howells __field(unsigned int, call ) 1134334dfbfcSDavid Howells __field(long, now ) 1135334dfbfcSDavid Howells __field(long, ack_at ) 1136334dfbfcSDavid Howells __field(long, ack_lost_at ) 1137334dfbfcSDavid Howells __field(long, resend_at ) 1138334dfbfcSDavid Howells __field(long, ping_at ) 1139334dfbfcSDavid Howells __field(long, expect_rx_by ) 1140334dfbfcSDavid Howells __field(long, expect_req_by ) 1141334dfbfcSDavid Howells __field(long, expect_term_by ) 1142334dfbfcSDavid Howells __field(long, timer ) 1143334dfbfcSDavid Howells ), 1144334dfbfcSDavid Howells 1145334dfbfcSDavid Howells TP_fast_assign( 1146334dfbfcSDavid Howells __entry->call = call->debug_id; 1147334dfbfcSDavid Howells __entry->now = now; 1148530403d9SDavid Howells __entry->ack_at = call->delay_ack_at; 1149334dfbfcSDavid Howells __entry->ack_lost_at = call->ack_lost_at; 1150334dfbfcSDavid Howells __entry->resend_at = call->resend_at; 1151334dfbfcSDavid Howells __entry->expect_rx_by = call->expect_rx_by; 1152334dfbfcSDavid Howells __entry->expect_req_by = call->expect_req_by; 1153334dfbfcSDavid Howells __entry->expect_term_by = call->expect_term_by; 1154334dfbfcSDavid Howells __entry->timer = call->timer.expires; 1155334dfbfcSDavid Howells ), 1156334dfbfcSDavid Howells 1157334dfbfcSDavid Howells TP_printk("c=%08x EXPIRED a=%ld la=%ld r=%ld xr=%ld xq=%ld xt=%ld t=%ld", 1158334dfbfcSDavid Howells __entry->call, 1159334dfbfcSDavid Howells __entry->ack_at - __entry->now, 1160334dfbfcSDavid Howells __entry->ack_lost_at - __entry->now, 1161334dfbfcSDavid Howells __entry->resend_at - __entry->now, 1162334dfbfcSDavid Howells __entry->expect_rx_by - __entry->now, 1163334dfbfcSDavid Howells __entry->expect_req_by - __entry->now, 1164334dfbfcSDavid Howells __entry->expect_term_by - __entry->now, 1165334dfbfcSDavid Howells __entry->timer - __entry->now) 1166334dfbfcSDavid Howells ); 1167334dfbfcSDavid Howells 116889b475abSDavid Howells TRACE_EVENT(rxrpc_rx_lose, 116989b475abSDavid Howells TP_PROTO(struct rxrpc_skb_priv *sp), 117089b475abSDavid Howells 117189b475abSDavid Howells TP_ARGS(sp), 117289b475abSDavid Howells 117389b475abSDavid Howells TP_STRUCT__entry( 117489b475abSDavid Howells __field_struct(struct rxrpc_host_header, hdr ) 117589b475abSDavid Howells ), 117689b475abSDavid Howells 117789b475abSDavid Howells TP_fast_assign( 117889b475abSDavid Howells memcpy(&__entry->hdr, &sp->hdr, sizeof(__entry->hdr)); 117989b475abSDavid Howells ), 118089b475abSDavid Howells 118189b475abSDavid Howells TP_printk("%08x:%08x:%08x:%04x %08x %08x %02x %02x %s *LOSE*", 118289b475abSDavid Howells __entry->hdr.epoch, __entry->hdr.cid, 118389b475abSDavid Howells __entry->hdr.callNumber, __entry->hdr.serviceId, 118489b475abSDavid Howells __entry->hdr.serial, __entry->hdr.seq, 118589b475abSDavid Howells __entry->hdr.type, __entry->hdr.flags, 1186b54a134aSDavid Howells __entry->hdr.type <= 15 ? 1187b54a134aSDavid Howells __print_symbolic(__entry->hdr.type, rxrpc_pkts) : "?UNK") 118889b475abSDavid Howells ); 118989b475abSDavid Howells 11909c7ad434SDavid Howells TRACE_EVENT(rxrpc_propose_ack, 11919c7ad434SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_propose_ack_trace why, 1192530403d9SDavid Howells u8 ack_reason, rxrpc_serial_t serial), 11939c7ad434SDavid Howells 1194530403d9SDavid Howells TP_ARGS(call, why, ack_reason, serial), 11959c7ad434SDavid Howells 11969c7ad434SDavid Howells TP_STRUCT__entry( 1197a25e21f0SDavid Howells __field(unsigned int, call ) 11989c7ad434SDavid Howells __field(enum rxrpc_propose_ack_trace, why ) 11999c7ad434SDavid Howells __field(rxrpc_serial_t, serial ) 12009c7ad434SDavid Howells __field(u8, ack_reason ) 12019c7ad434SDavid Howells ), 12029c7ad434SDavid Howells 12039c7ad434SDavid Howells TP_fast_assign( 1204a25e21f0SDavid Howells __entry->call = call->debug_id; 12059c7ad434SDavid Howells __entry->why = why; 12069c7ad434SDavid Howells __entry->serial = serial; 12079c7ad434SDavid Howells __entry->ack_reason = ack_reason; 12089c7ad434SDavid Howells ), 12099c7ad434SDavid Howells 1210530403d9SDavid Howells TP_printk("c=%08x %s %s r=%08x", 12119c7ad434SDavid Howells __entry->call, 1212b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_propose_ack_traces), 1213b54a134aSDavid Howells __print_symbolic(__entry->ack_reason, rxrpc_ack_names), 1214530403d9SDavid Howells __entry->serial) 12159c7ad434SDavid Howells ); 12169c7ad434SDavid Howells 121772f0c6fbSDavid Howells TRACE_EVENT(rxrpc_send_ack, 121872f0c6fbSDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_propose_ack_trace why, 121972f0c6fbSDavid Howells u8 ack_reason, rxrpc_serial_t serial), 122072f0c6fbSDavid Howells 122172f0c6fbSDavid Howells TP_ARGS(call, why, ack_reason, serial), 122272f0c6fbSDavid Howells 122372f0c6fbSDavid Howells TP_STRUCT__entry( 122472f0c6fbSDavid Howells __field(unsigned int, call ) 122572f0c6fbSDavid Howells __field(enum rxrpc_propose_ack_trace, why ) 122672f0c6fbSDavid Howells __field(rxrpc_serial_t, serial ) 122772f0c6fbSDavid Howells __field(u8, ack_reason ) 122872f0c6fbSDavid Howells ), 122972f0c6fbSDavid Howells 123072f0c6fbSDavid Howells TP_fast_assign( 123172f0c6fbSDavid Howells __entry->call = call->debug_id; 123272f0c6fbSDavid Howells __entry->why = why; 123372f0c6fbSDavid Howells __entry->serial = serial; 123472f0c6fbSDavid Howells __entry->ack_reason = ack_reason; 123572f0c6fbSDavid Howells ), 123672f0c6fbSDavid Howells 123772f0c6fbSDavid Howells TP_printk("c=%08x %s %s r=%08x", 123872f0c6fbSDavid Howells __entry->call, 123972f0c6fbSDavid Howells __print_symbolic(__entry->why, rxrpc_propose_ack_traces), 124072f0c6fbSDavid Howells __print_symbolic(__entry->ack_reason, rxrpc_ack_names), 124172f0c6fbSDavid Howells __entry->serial) 124272f0c6fbSDavid Howells ); 124372f0c6fbSDavid Howells 1244530403d9SDavid Howells TRACE_EVENT(rxrpc_drop_ack, 1245530403d9SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_propose_ack_trace why, 1246530403d9SDavid Howells u8 ack_reason, rxrpc_serial_t serial, bool nobuf), 1247530403d9SDavid Howells 1248530403d9SDavid Howells TP_ARGS(call, why, ack_reason, serial, nobuf), 1249530403d9SDavid Howells 1250530403d9SDavid Howells TP_STRUCT__entry( 1251530403d9SDavid Howells __field(unsigned int, call ) 1252530403d9SDavid Howells __field(enum rxrpc_propose_ack_trace, why ) 1253530403d9SDavid Howells __field(rxrpc_serial_t, serial ) 1254530403d9SDavid Howells __field(u8, ack_reason ) 1255530403d9SDavid Howells __field(bool, nobuf ) 1256530403d9SDavid Howells ), 1257530403d9SDavid Howells 1258530403d9SDavid Howells TP_fast_assign( 1259530403d9SDavid Howells __entry->call = call->debug_id; 1260530403d9SDavid Howells __entry->why = why; 1261530403d9SDavid Howells __entry->serial = serial; 1262530403d9SDavid Howells __entry->ack_reason = ack_reason; 1263530403d9SDavid Howells __entry->nobuf = nobuf; 1264530403d9SDavid Howells ), 1265530403d9SDavid Howells 1266530403d9SDavid Howells TP_printk("c=%08x %s %s r=%08x nbf=%u", 1267530403d9SDavid Howells __entry->call, 1268530403d9SDavid Howells __print_symbolic(__entry->why, rxrpc_propose_ack_traces), 1269530403d9SDavid Howells __print_symbolic(__entry->ack_reason, rxrpc_ack_names), 1270530403d9SDavid Howells __entry->serial, __entry->nobuf) 1271530403d9SDavid Howells ); 1272530403d9SDavid Howells 1273c6672e3fSDavid Howells TRACE_EVENT(rxrpc_retransmit, 1274a4ea4c47SDavid Howells TP_PROTO(struct rxrpc_call *call, rxrpc_seq_t seq, s64 expiry), 1275c6672e3fSDavid Howells 1276a4ea4c47SDavid Howells TP_ARGS(call, seq, expiry), 1277c6672e3fSDavid Howells 1278c6672e3fSDavid Howells TP_STRUCT__entry( 1279a25e21f0SDavid Howells __field(unsigned int, call ) 1280c6672e3fSDavid Howells __field(rxrpc_seq_t, seq ) 1281c6672e3fSDavid Howells __field(s64, expiry ) 1282c6672e3fSDavid Howells ), 1283c6672e3fSDavid Howells 1284c6672e3fSDavid Howells TP_fast_assign( 1285a25e21f0SDavid Howells __entry->call = call->debug_id; 1286c6672e3fSDavid Howells __entry->seq = seq; 1287c6672e3fSDavid Howells __entry->expiry = expiry; 1288c6672e3fSDavid Howells ), 1289c6672e3fSDavid Howells 1290a4ea4c47SDavid Howells TP_printk("c=%08x q=%x xp=%lld", 1291c6672e3fSDavid Howells __entry->call, 1292c6672e3fSDavid Howells __entry->seq, 1293c6672e3fSDavid Howells __entry->expiry) 1294c6672e3fSDavid Howells ); 1295c6672e3fSDavid Howells 129657494343SDavid Howells TRACE_EVENT(rxrpc_congest, 129757494343SDavid Howells TP_PROTO(struct rxrpc_call *call, struct rxrpc_ack_summary *summary, 129857494343SDavid Howells rxrpc_serial_t ack_serial, enum rxrpc_congest_change change), 129957494343SDavid Howells 130057494343SDavid Howells TP_ARGS(call, summary, ack_serial, change), 130157494343SDavid Howells 130257494343SDavid Howells TP_STRUCT__entry( 1303a25e21f0SDavid Howells __field(unsigned int, call ) 130457494343SDavid Howells __field(enum rxrpc_congest_change, change ) 130557494343SDavid Howells __field(rxrpc_seq_t, hard_ack ) 130657494343SDavid Howells __field(rxrpc_seq_t, top ) 130757494343SDavid Howells __field(rxrpc_seq_t, lowest_nak ) 130857494343SDavid Howells __field(rxrpc_serial_t, ack_serial ) 130957494343SDavid Howells __field_struct(struct rxrpc_ack_summary, sum ) 131057494343SDavid Howells ), 131157494343SDavid Howells 131257494343SDavid Howells TP_fast_assign( 1313a25e21f0SDavid Howells __entry->call = call->debug_id; 131457494343SDavid Howells __entry->change = change; 1315a4ea4c47SDavid Howells __entry->hard_ack = call->acks_hard_ack; 131657494343SDavid Howells __entry->top = call->tx_top; 131757494343SDavid Howells __entry->lowest_nak = call->acks_lowest_nak; 131857494343SDavid Howells __entry->ack_serial = ack_serial; 131957494343SDavid Howells memcpy(&__entry->sum, summary, sizeof(__entry->sum)); 132057494343SDavid Howells ), 132157494343SDavid Howells 1322d57a3a15SDavid Howells TP_printk("c=%08x r=%08x %s q=%08x %s cw=%u ss=%u nA=%u,%u+%u r=%u b=%u u=%u d=%u l=%x%s%s%s", 132357494343SDavid Howells __entry->call, 132457494343SDavid Howells __entry->ack_serial, 1325b54a134aSDavid Howells __print_symbolic(__entry->sum.ack_reason, rxrpc_ack_names), 132657494343SDavid Howells __entry->hard_ack, 1327b54a134aSDavid Howells __print_symbolic(__entry->sum.mode, rxrpc_congest_modes), 132857494343SDavid Howells __entry->sum.cwnd, 132957494343SDavid Howells __entry->sum.ssthresh, 1330d57a3a15SDavid Howells __entry->sum.nr_acks, __entry->sum.saw_nacks, 1331d57a3a15SDavid Howells __entry->sum.nr_new_acks, 133257494343SDavid Howells __entry->sum.nr_rot_new_acks, 133357494343SDavid Howells __entry->top - __entry->hard_ack, 133457494343SDavid Howells __entry->sum.cumulative_acks, 133557494343SDavid Howells __entry->sum.dup_acks, 133657494343SDavid Howells __entry->lowest_nak, __entry->sum.new_low_nack ? "!" : "", 1337b54a134aSDavid Howells __print_symbolic(__entry->change, rxrpc_congest_changes), 133857494343SDavid Howells __entry->sum.retrans_timeo ? " rTxTo" : "") 133957494343SDavid Howells ); 134057494343SDavid Howells 1341b1d9f7fdSDavid Howells TRACE_EVENT(rxrpc_disconnect_call, 1342b1d9f7fdSDavid Howells TP_PROTO(struct rxrpc_call *call), 1343b1d9f7fdSDavid Howells 1344b1d9f7fdSDavid Howells TP_ARGS(call), 1345b1d9f7fdSDavid Howells 1346b1d9f7fdSDavid Howells TP_STRUCT__entry( 1347a25e21f0SDavid Howells __field(unsigned int, call ) 1348b1d9f7fdSDavid Howells __field(u32, abort_code ) 1349b1d9f7fdSDavid Howells ), 1350b1d9f7fdSDavid Howells 1351b1d9f7fdSDavid Howells TP_fast_assign( 1352a25e21f0SDavid Howells __entry->call = call->debug_id; 1353b1d9f7fdSDavid Howells __entry->abort_code = call->abort_code; 1354b1d9f7fdSDavid Howells ), 1355b1d9f7fdSDavid Howells 1356a25e21f0SDavid Howells TP_printk("c=%08x ab=%08x", 1357b1d9f7fdSDavid Howells __entry->call, 1358b1d9f7fdSDavid Howells __entry->abort_code) 1359b1d9f7fdSDavid Howells ); 1360b1d9f7fdSDavid Howells 1361b1d9f7fdSDavid Howells TRACE_EVENT(rxrpc_improper_term, 1362b1d9f7fdSDavid Howells TP_PROTO(struct rxrpc_call *call), 1363b1d9f7fdSDavid Howells 1364b1d9f7fdSDavid Howells TP_ARGS(call), 1365b1d9f7fdSDavid Howells 1366b1d9f7fdSDavid Howells TP_STRUCT__entry( 1367a25e21f0SDavid Howells __field(unsigned int, call ) 1368b1d9f7fdSDavid Howells __field(u32, abort_code ) 1369b1d9f7fdSDavid Howells ), 1370b1d9f7fdSDavid Howells 1371b1d9f7fdSDavid Howells TP_fast_assign( 1372a25e21f0SDavid Howells __entry->call = call->debug_id; 1373b1d9f7fdSDavid Howells __entry->abort_code = call->abort_code; 1374b1d9f7fdSDavid Howells ), 1375b1d9f7fdSDavid Howells 1376a25e21f0SDavid Howells TP_printk("c=%08x ab=%08x", 1377b1d9f7fdSDavid Howells __entry->call, 1378b1d9f7fdSDavid Howells __entry->abort_code) 1379b1d9f7fdSDavid Howells ); 1380b1d9f7fdSDavid Howells 1381fb46f6eeSDavid Howells TRACE_EVENT(rxrpc_rx_eproto, 1382fb46f6eeSDavid Howells TP_PROTO(struct rxrpc_call *call, rxrpc_serial_t serial, 1383fb46f6eeSDavid Howells const char *why), 1384fb46f6eeSDavid Howells 1385fb46f6eeSDavid Howells TP_ARGS(call, serial, why), 1386fb46f6eeSDavid Howells 1387fb46f6eeSDavid Howells TP_STRUCT__entry( 1388a25e21f0SDavid Howells __field(unsigned int, call ) 1389fb46f6eeSDavid Howells __field(rxrpc_serial_t, serial ) 1390fb46f6eeSDavid Howells __field(const char *, why ) 1391fb46f6eeSDavid Howells ), 1392fb46f6eeSDavid Howells 1393fb46f6eeSDavid Howells TP_fast_assign( 139499f0eae6SDavid Howells __entry->call = call ? call->debug_id : 0; 1395fb46f6eeSDavid Howells __entry->serial = serial; 1396fb46f6eeSDavid Howells __entry->why = why; 1397fb46f6eeSDavid Howells ), 1398fb46f6eeSDavid Howells 1399a25e21f0SDavid Howells TP_printk("c=%08x EPROTO %08x %s", 1400fb46f6eeSDavid Howells __entry->call, 1401fb46f6eeSDavid Howells __entry->serial, 1402fb46f6eeSDavid Howells __entry->why) 1403fb46f6eeSDavid Howells ); 1404fb46f6eeSDavid Howells 140589ca6948SDavid Howells TRACE_EVENT(rxrpc_connect_call, 140689ca6948SDavid Howells TP_PROTO(struct rxrpc_call *call), 140789ca6948SDavid Howells 140889ca6948SDavid Howells TP_ARGS(call), 140989ca6948SDavid Howells 141089ca6948SDavid Howells TP_STRUCT__entry( 1411a25e21f0SDavid Howells __field(unsigned int, call ) 141289ca6948SDavid Howells __field(unsigned long, user_call_ID ) 141389ca6948SDavid Howells __field(u32, cid ) 141489ca6948SDavid Howells __field(u32, call_id ) 141589ca6948SDavid Howells ), 141689ca6948SDavid Howells 141789ca6948SDavid Howells TP_fast_assign( 1418a25e21f0SDavid Howells __entry->call = call->debug_id; 141989ca6948SDavid Howells __entry->user_call_ID = call->user_call_ID; 142089ca6948SDavid Howells __entry->cid = call->cid; 142189ca6948SDavid Howells __entry->call_id = call->call_id; 142289ca6948SDavid Howells ), 142389ca6948SDavid Howells 1424a25e21f0SDavid Howells TP_printk("c=%08x u=%p %08x:%08x", 142589ca6948SDavid Howells __entry->call, 142689ca6948SDavid Howells (void *)__entry->user_call_ID, 142789ca6948SDavid Howells __entry->cid, 142889ca6948SDavid Howells __entry->call_id) 142989ca6948SDavid Howells ); 143089ca6948SDavid Howells 1431827efed6SDavid Howells TRACE_EVENT(rxrpc_resend, 1432a4ea4c47SDavid Howells TP_PROTO(struct rxrpc_call *call), 1433827efed6SDavid Howells 1434a4ea4c47SDavid Howells TP_ARGS(call), 1435827efed6SDavid Howells 1436827efed6SDavid Howells TP_STRUCT__entry( 1437a25e21f0SDavid Howells __field(unsigned int, call ) 1438a4ea4c47SDavid Howells __field(rxrpc_seq_t, seq ) 1439827efed6SDavid Howells ), 1440827efed6SDavid Howells 1441827efed6SDavid Howells TP_fast_assign( 1442a25e21f0SDavid Howells __entry->call = call->debug_id; 1443a4ea4c47SDavid Howells __entry->seq = call->acks_hard_ack; 1444827efed6SDavid Howells ), 1445827efed6SDavid Howells 1446a4ea4c47SDavid Howells TP_printk("c=%08x q=%x", 1447827efed6SDavid Howells __entry->call, 1448a4ea4c47SDavid Howells __entry->seq) 1449827efed6SDavid Howells ); 1450827efed6SDavid Howells 1451494337c9SDavid Howells TRACE_EVENT(rxrpc_rx_icmp, 1452494337c9SDavid Howells TP_PROTO(struct rxrpc_peer *peer, struct sock_extended_err *ee, 1453494337c9SDavid Howells struct sockaddr_rxrpc *srx), 1454494337c9SDavid Howells 1455494337c9SDavid Howells TP_ARGS(peer, ee, srx), 1456494337c9SDavid Howells 1457494337c9SDavid Howells TP_STRUCT__entry( 1458494337c9SDavid Howells __field(unsigned int, peer ) 1459494337c9SDavid Howells __field_struct(struct sock_extended_err, ee ) 1460494337c9SDavid Howells __field_struct(struct sockaddr_rxrpc, srx ) 1461494337c9SDavid Howells ), 1462494337c9SDavid Howells 1463494337c9SDavid Howells TP_fast_assign( 1464494337c9SDavid Howells __entry->peer = peer->debug_id; 1465494337c9SDavid Howells memcpy(&__entry->ee, ee, sizeof(__entry->ee)); 1466494337c9SDavid Howells memcpy(&__entry->srx, srx, sizeof(__entry->srx)); 1467494337c9SDavid Howells ), 1468494337c9SDavid Howells 1469494337c9SDavid Howells TP_printk("P=%08x o=%u t=%u c=%u i=%u d=%u e=%d %pISp", 1470494337c9SDavid Howells __entry->peer, 1471494337c9SDavid Howells __entry->ee.ee_origin, 1472494337c9SDavid Howells __entry->ee.ee_type, 1473494337c9SDavid Howells __entry->ee.ee_code, 1474494337c9SDavid Howells __entry->ee.ee_info, 1475494337c9SDavid Howells __entry->ee.ee_data, 1476494337c9SDavid Howells __entry->ee.ee_errno, 1477494337c9SDavid Howells &__entry->srx.transport) 1478494337c9SDavid Howells ); 1479494337c9SDavid Howells 14806b47fe1dSDavid Howells TRACE_EVENT(rxrpc_tx_fail, 14816b47fe1dSDavid Howells TP_PROTO(unsigned int debug_id, rxrpc_serial_t serial, int ret, 14824764c0daSDavid Howells enum rxrpc_tx_point where), 14836b47fe1dSDavid Howells 14844764c0daSDavid Howells TP_ARGS(debug_id, serial, ret, where), 14856b47fe1dSDavid Howells 14866b47fe1dSDavid Howells TP_STRUCT__entry( 14876b47fe1dSDavid Howells __field(unsigned int, debug_id ) 14886b47fe1dSDavid Howells __field(rxrpc_serial_t, serial ) 14896b47fe1dSDavid Howells __field(int, ret ) 14904764c0daSDavid Howells __field(enum rxrpc_tx_point, where ) 14916b47fe1dSDavid Howells ), 14926b47fe1dSDavid Howells 14936b47fe1dSDavid Howells TP_fast_assign( 14946b47fe1dSDavid Howells __entry->debug_id = debug_id; 14956b47fe1dSDavid Howells __entry->serial = serial; 14966b47fe1dSDavid Howells __entry->ret = ret; 14974764c0daSDavid Howells __entry->where = where; 14986b47fe1dSDavid Howells ), 14996b47fe1dSDavid Howells 15006b47fe1dSDavid Howells TP_printk("c=%08x r=%x ret=%d %s", 15016b47fe1dSDavid Howells __entry->debug_id, 15026b47fe1dSDavid Howells __entry->serial, 15036b47fe1dSDavid Howells __entry->ret, 15044764c0daSDavid Howells __print_symbolic(__entry->where, rxrpc_tx_points)) 15056b47fe1dSDavid Howells ); 15066b47fe1dSDavid Howells 15071a025028SDavid Howells TRACE_EVENT(rxrpc_call_reset, 15081a025028SDavid Howells TP_PROTO(struct rxrpc_call *call), 15091a025028SDavid Howells 15101a025028SDavid Howells TP_ARGS(call), 15111a025028SDavid Howells 15121a025028SDavid Howells TP_STRUCT__entry( 15131a025028SDavid Howells __field(unsigned int, debug_id ) 15141a025028SDavid Howells __field(u32, cid ) 15151a025028SDavid Howells __field(u32, call_id ) 15161a025028SDavid Howells __field(rxrpc_serial_t, call_serial ) 15171a025028SDavid Howells __field(rxrpc_serial_t, conn_serial ) 15181a025028SDavid Howells __field(rxrpc_seq_t, tx_seq ) 15191a025028SDavid Howells __field(rxrpc_seq_t, rx_seq ) 15201a025028SDavid Howells ), 15211a025028SDavid Howells 15221a025028SDavid Howells TP_fast_assign( 15231a025028SDavid Howells __entry->debug_id = call->debug_id; 15241a025028SDavid Howells __entry->cid = call->cid; 15251a025028SDavid Howells __entry->call_id = call->call_id; 15261a025028SDavid Howells __entry->call_serial = call->rx_serial; 15271a025028SDavid Howells __entry->conn_serial = call->conn->hi_serial; 1528a4ea4c47SDavid Howells __entry->tx_seq = call->acks_hard_ack; 15295d7edbc9SDavid Howells __entry->rx_seq = call->rx_highest_seq; 15301a025028SDavid Howells ), 15311a025028SDavid Howells 15321a025028SDavid Howells TP_printk("c=%08x %08x:%08x r=%08x/%08x tx=%08x rx=%08x", 15331a025028SDavid Howells __entry->debug_id, 15341a025028SDavid Howells __entry->cid, __entry->call_id, 15351a025028SDavid Howells __entry->call_serial, __entry->conn_serial, 15361a025028SDavid Howells __entry->tx_seq, __entry->rx_seq) 15371a025028SDavid Howells ); 15381a025028SDavid Howells 15394272d303SDavid Howells TRACE_EVENT(rxrpc_notify_socket, 15404272d303SDavid Howells TP_PROTO(unsigned int debug_id, rxrpc_serial_t serial), 15414272d303SDavid Howells 15424272d303SDavid Howells TP_ARGS(debug_id, serial), 15434272d303SDavid Howells 15444272d303SDavid Howells TP_STRUCT__entry( 15454272d303SDavid Howells __field(unsigned int, debug_id ) 15464272d303SDavid Howells __field(rxrpc_serial_t, serial ) 15474272d303SDavid Howells ), 15484272d303SDavid Howells 15494272d303SDavid Howells TP_fast_assign( 15504272d303SDavid Howells __entry->debug_id = debug_id; 15514272d303SDavid Howells __entry->serial = serial; 15524272d303SDavid Howells ), 15534272d303SDavid Howells 15544272d303SDavid Howells TP_printk("c=%08x r=%08x", 15554272d303SDavid Howells __entry->debug_id, 15564272d303SDavid Howells __entry->serial) 15574272d303SDavid Howells ); 15584272d303SDavid Howells 1559d1f12947SDavid Howells TRACE_EVENT(rxrpc_rx_discard_ack, 1560d1f12947SDavid Howells TP_PROTO(unsigned int debug_id, rxrpc_serial_t serial, 1561d1f12947SDavid Howells rxrpc_seq_t first_soft_ack, rxrpc_seq_t call_ackr_first, 1562d1f12947SDavid Howells rxrpc_seq_t prev_pkt, rxrpc_seq_t call_ackr_prev), 1563d1f12947SDavid Howells 1564d1f12947SDavid Howells TP_ARGS(debug_id, serial, first_soft_ack, call_ackr_first, 1565d1f12947SDavid Howells prev_pkt, call_ackr_prev), 1566d1f12947SDavid Howells 1567d1f12947SDavid Howells TP_STRUCT__entry( 1568d1f12947SDavid Howells __field(unsigned int, debug_id ) 1569d1f12947SDavid Howells __field(rxrpc_serial_t, serial ) 1570d1f12947SDavid Howells __field(rxrpc_seq_t, first_soft_ack) 1571d1f12947SDavid Howells __field(rxrpc_seq_t, call_ackr_first) 1572d1f12947SDavid Howells __field(rxrpc_seq_t, prev_pkt) 1573d1f12947SDavid Howells __field(rxrpc_seq_t, call_ackr_prev) 1574d1f12947SDavid Howells ), 1575d1f12947SDavid Howells 1576d1f12947SDavid Howells TP_fast_assign( 1577d1f12947SDavid Howells __entry->debug_id = debug_id; 1578d1f12947SDavid Howells __entry->serial = serial; 1579d1f12947SDavid Howells __entry->first_soft_ack = first_soft_ack; 1580d1f12947SDavid Howells __entry->call_ackr_first = call_ackr_first; 1581d1f12947SDavid Howells __entry->prev_pkt = prev_pkt; 1582d1f12947SDavid Howells __entry->call_ackr_prev = call_ackr_prev; 1583d1f12947SDavid Howells ), 1584d1f12947SDavid Howells 1585d1f12947SDavid Howells TP_printk("c=%08x r=%08x %08x<%08x %08x<%08x", 1586d1f12947SDavid Howells __entry->debug_id, 1587d1f12947SDavid Howells __entry->serial, 1588d1f12947SDavid Howells __entry->first_soft_ack, 1589d1f12947SDavid Howells __entry->call_ackr_first, 1590d1f12947SDavid Howells __entry->prev_pkt, 1591d1f12947SDavid Howells __entry->call_ackr_prev) 1592d1f12947SDavid Howells ); 1593d1f12947SDavid Howells 15944d843be5SDavid Howells TRACE_EVENT(rxrpc_req_ack, 15954d843be5SDavid Howells TP_PROTO(unsigned int call_debug_id, rxrpc_seq_t seq, 15964d843be5SDavid Howells enum rxrpc_req_ack_trace why), 15974d843be5SDavid Howells 15984d843be5SDavid Howells TP_ARGS(call_debug_id, seq, why), 15994d843be5SDavid Howells 16004d843be5SDavid Howells TP_STRUCT__entry( 16014d843be5SDavid Howells __field(unsigned int, call_debug_id ) 16024d843be5SDavid Howells __field(rxrpc_seq_t, seq ) 16034d843be5SDavid Howells __field(enum rxrpc_req_ack_trace, why ) 16044d843be5SDavid Howells ), 16054d843be5SDavid Howells 16064d843be5SDavid Howells TP_fast_assign( 16074d843be5SDavid Howells __entry->call_debug_id = call_debug_id; 16084d843be5SDavid Howells __entry->seq = seq; 16094d843be5SDavid Howells __entry->why = why; 16104d843be5SDavid Howells ), 16114d843be5SDavid Howells 16124d843be5SDavid Howells TP_printk("c=%08x q=%08x REQ-%s", 16134d843be5SDavid Howells __entry->call_debug_id, 16144d843be5SDavid Howells __entry->seq, 16154d843be5SDavid Howells __print_symbolic(__entry->why, rxrpc_req_ack_traces)) 16164d843be5SDavid Howells ); 16174d843be5SDavid Howells 161802a19356SDavid Howells TRACE_EVENT(rxrpc_txbuf, 161902a19356SDavid Howells TP_PROTO(unsigned int debug_id, 162002a19356SDavid Howells unsigned int call_debug_id, rxrpc_seq_t seq, 162102a19356SDavid Howells int ref, enum rxrpc_txbuf_trace what), 162202a19356SDavid Howells 162302a19356SDavid Howells TP_ARGS(debug_id, call_debug_id, seq, ref, what), 162402a19356SDavid Howells 162502a19356SDavid Howells TP_STRUCT__entry( 162602a19356SDavid Howells __field(unsigned int, debug_id ) 162702a19356SDavid Howells __field(unsigned int, call_debug_id ) 162802a19356SDavid Howells __field(rxrpc_seq_t, seq ) 162902a19356SDavid Howells __field(int, ref ) 163002a19356SDavid Howells __field(enum rxrpc_txbuf_trace, what ) 163102a19356SDavid Howells ), 163202a19356SDavid Howells 163302a19356SDavid Howells TP_fast_assign( 163402a19356SDavid Howells __entry->debug_id = debug_id; 163502a19356SDavid Howells __entry->call_debug_id = call_debug_id; 163602a19356SDavid Howells __entry->seq = seq; 163702a19356SDavid Howells __entry->ref = ref; 163802a19356SDavid Howells __entry->what = what; 163902a19356SDavid Howells ), 164002a19356SDavid Howells 164102a19356SDavid Howells TP_printk("B=%08x c=%08x q=%08x %s r=%d", 164202a19356SDavid Howells __entry->debug_id, 164302a19356SDavid Howells __entry->call_debug_id, 164402a19356SDavid Howells __entry->seq, 164502a19356SDavid Howells __print_symbolic(__entry->what, rxrpc_txbuf_traces), 164602a19356SDavid Howells __entry->ref) 164702a19356SDavid Howells ); 164802a19356SDavid Howells 1649dc9fd093SDavid Howells #undef EM 1650dc9fd093SDavid Howells #undef E_ 1651df844fd4SDavid Howells #endif /* _TRACE_RXRPC_H */ 1652df844fd4SDavid Howells 1653df844fd4SDavid Howells /* This part must be outside protection */ 1654df844fd4SDavid Howells #include <trace/define_trace.h> 1655