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 \ 20987db9f7SDavid Howells EM(rxrpc_skb_cleaned, "CLN") \ 21987db9f7SDavid Howells EM(rxrpc_skb_freed, "FRE") \ 22987db9f7SDavid Howells EM(rxrpc_skb_got, "GOT") \ 23987db9f7SDavid Howells EM(rxrpc_skb_lost, "*L*") \ 24987db9f7SDavid Howells EM(rxrpc_skb_new, "NEW") \ 25987db9f7SDavid Howells EM(rxrpc_skb_purged, "PUR") \ 26987db9f7SDavid Howells EM(rxrpc_skb_received, "RCV") \ 27987db9f7SDavid Howells EM(rxrpc_skb_rotated, "ROT") \ 28d0d5c0cdSDavid Howells EM(rxrpc_skb_seen, "SEE") \ 29d0d5c0cdSDavid Howells EM(rxrpc_skb_unshared, "UNS") \ 30d0d5c0cdSDavid Howells E_(rxrpc_skb_unshared_nomem, "US0") 31b54a134aSDavid Howells 3209d2bf59SDavid Howells #define rxrpc_local_traces \ 3309d2bf59SDavid Howells EM(rxrpc_local_got, "GOT") \ 3409d2bf59SDavid Howells EM(rxrpc_local_new, "NEW") \ 3509d2bf59SDavid Howells EM(rxrpc_local_processing, "PRO") \ 3609d2bf59SDavid Howells EM(rxrpc_local_put, "PUT") \ 37*72f0c6fbSDavid Howells EM(rxrpc_local_queued, "QUE") \ 38*72f0c6fbSDavid Howells E_(rxrpc_local_tx_ack, "TAK") 3909d2bf59SDavid Howells 401159d4b4SDavid Howells #define rxrpc_peer_traces \ 411159d4b4SDavid Howells EM(rxrpc_peer_got, "GOT") \ 421159d4b4SDavid Howells EM(rxrpc_peer_new, "NEW") \ 431159d4b4SDavid Howells EM(rxrpc_peer_processing, "PRO") \ 44f3344303SDavid Howells E_(rxrpc_peer_put, "PUT") 451159d4b4SDavid Howells 46b54a134aSDavid Howells #define rxrpc_conn_traces \ 47b54a134aSDavid Howells EM(rxrpc_conn_got, "GOT") \ 48b54a134aSDavid Howells EM(rxrpc_conn_new_client, "NWc") \ 49b54a134aSDavid Howells EM(rxrpc_conn_new_service, "NWs") \ 50b54a134aSDavid Howells EM(rxrpc_conn_put_client, "PTc") \ 51b54a134aSDavid Howells EM(rxrpc_conn_put_service, "PTs") \ 52b54a134aSDavid Howells EM(rxrpc_conn_queued, "QUE") \ 53f859ab61SDavid Howells EM(rxrpc_conn_reap_service, "RPs") \ 54b54a134aSDavid Howells E_(rxrpc_conn_seen, "SEE") 55b54a134aSDavid Howells 56b54a134aSDavid Howells #define rxrpc_client_traces \ 57b54a134aSDavid Howells EM(rxrpc_client_activate_chans, "Activa") \ 58b54a134aSDavid Howells EM(rxrpc_client_alloc, "Alloc ") \ 59b54a134aSDavid Howells EM(rxrpc_client_chan_activate, "ChActv") \ 60b54a134aSDavid Howells EM(rxrpc_client_chan_disconnect, "ChDisc") \ 61b54a134aSDavid Howells EM(rxrpc_client_chan_pass, "ChPass") \ 62930c9f91SDavid Howells EM(rxrpc_client_chan_wait_failed, "ChWtFl") \ 63b54a134aSDavid Howells EM(rxrpc_client_cleanup, "Clean ") \ 64b54a134aSDavid Howells EM(rxrpc_client_discard, "Discar") \ 65b54a134aSDavid Howells EM(rxrpc_client_duplicate, "Duplic") \ 66b54a134aSDavid Howells EM(rxrpc_client_exposed, "Expose") \ 67b54a134aSDavid Howells EM(rxrpc_client_replace, "Replac") \ 68b54a134aSDavid Howells EM(rxrpc_client_to_active, "->Actv") \ 69245500d8SDavid Howells E_(rxrpc_client_to_idle, "->Idle") 70b54a134aSDavid Howells 71b54a134aSDavid Howells #define rxrpc_call_traces \ 72b54a134aSDavid Howells EM(rxrpc_call_connected, "CON") \ 73b54a134aSDavid Howells EM(rxrpc_call_error, "*E*") \ 74b54a134aSDavid Howells EM(rxrpc_call_got, "GOT") \ 75b54a134aSDavid Howells EM(rxrpc_call_got_kernel, "Gke") \ 764a7f62f9SDavid Howells EM(rxrpc_call_got_timer, "GTM") \ 77b54a134aSDavid Howells EM(rxrpc_call_got_userid, "Gus") \ 78b54a134aSDavid Howells EM(rxrpc_call_new_client, "NWc") \ 79b54a134aSDavid Howells EM(rxrpc_call_new_service, "NWs") \ 80b54a134aSDavid Howells EM(rxrpc_call_put, "PUT") \ 81b54a134aSDavid Howells EM(rxrpc_call_put_kernel, "Pke") \ 824a7f62f9SDavid Howells EM(rxrpc_call_put_noqueue, "PnQ") \ 834a7f62f9SDavid Howells EM(rxrpc_call_put_notimer, "PnT") \ 844a7f62f9SDavid Howells EM(rxrpc_call_put_timer, "PTM") \ 85b54a134aSDavid Howells EM(rxrpc_call_put_userid, "Pus") \ 86b54a134aSDavid Howells EM(rxrpc_call_queued, "QUE") \ 87b54a134aSDavid Howells EM(rxrpc_call_queued_ref, "QUR") \ 88b54a134aSDavid Howells EM(rxrpc_call_release, "RLS") \ 89b54a134aSDavid Howells E_(rxrpc_call_seen, "SEE") 90b54a134aSDavid Howells 91b54a134aSDavid Howells #define rxrpc_transmit_traces \ 92b54a134aSDavid Howells EM(rxrpc_transmit_await_reply, "AWR") \ 93b54a134aSDavid Howells EM(rxrpc_transmit_end, "END") \ 94b54a134aSDavid Howells EM(rxrpc_transmit_queue, "QUE") \ 95b54a134aSDavid Howells EM(rxrpc_transmit_queue_last, "QLS") \ 96b54a134aSDavid Howells EM(rxrpc_transmit_rotate, "ROT") \ 97b54a134aSDavid Howells EM(rxrpc_transmit_rotate_last, "RLS") \ 98b54a134aSDavid Howells E_(rxrpc_transmit_wait, "WAI") 99b54a134aSDavid Howells 100b54a134aSDavid Howells #define rxrpc_receive_traces \ 101b54a134aSDavid Howells EM(rxrpc_receive_end, "END") \ 102b54a134aSDavid Howells EM(rxrpc_receive_front, "FRN") \ 103b54a134aSDavid Howells EM(rxrpc_receive_incoming, "INC") \ 104b54a134aSDavid Howells EM(rxrpc_receive_queue, "QUE") \ 105b54a134aSDavid Howells EM(rxrpc_receive_queue_last, "QLS") \ 106b54a134aSDavid Howells E_(rxrpc_receive_rotate, "ROT") 107b54a134aSDavid Howells 108b54a134aSDavid Howells #define rxrpc_recvmsg_traces \ 109b54a134aSDavid Howells EM(rxrpc_recvmsg_cont, "CONT") \ 110b54a134aSDavid Howells EM(rxrpc_recvmsg_data_return, "DATA") \ 111b54a134aSDavid Howells EM(rxrpc_recvmsg_dequeue, "DEQU") \ 112b54a134aSDavid Howells EM(rxrpc_recvmsg_enter, "ENTR") \ 113b54a134aSDavid Howells EM(rxrpc_recvmsg_full, "FULL") \ 114b54a134aSDavid Howells EM(rxrpc_recvmsg_hole, "HOLE") \ 115b54a134aSDavid Howells EM(rxrpc_recvmsg_next, "NEXT") \ 116540b1c48SDavid Howells EM(rxrpc_recvmsg_requeue, "REQU") \ 117b54a134aSDavid Howells EM(rxrpc_recvmsg_return, "RETN") \ 118b54a134aSDavid Howells EM(rxrpc_recvmsg_terminal, "TERM") \ 119b54a134aSDavid Howells EM(rxrpc_recvmsg_to_be_accepted, "TBAC") \ 120b54a134aSDavid Howells E_(rxrpc_recvmsg_wait, "WAIT") 121b54a134aSDavid Howells 122b54a134aSDavid Howells #define rxrpc_rtt_tx_traces \ 1234700c4d8SDavid Howells EM(rxrpc_rtt_tx_cancel, "CNCE") \ 124b54a134aSDavid Howells EM(rxrpc_rtt_tx_data, "DATA") \ 1254700c4d8SDavid Howells EM(rxrpc_rtt_tx_no_slot, "FULL") \ 126b54a134aSDavid Howells E_(rxrpc_rtt_tx_ping, "PING") 127b54a134aSDavid Howells 128b54a134aSDavid Howells #define rxrpc_rtt_rx_traces \ 1294700c4d8SDavid Howells EM(rxrpc_rtt_rx_cancel, "CNCL") \ 1304700c4d8SDavid Howells EM(rxrpc_rtt_rx_obsolete, "OBSL") \ 1314700c4d8SDavid Howells EM(rxrpc_rtt_rx_lost, "LOST") \ 132b54a134aSDavid Howells EM(rxrpc_rtt_rx_ping_response, "PONG") \ 133b54a134aSDavid Howells E_(rxrpc_rtt_rx_requested_ack, "RACK") 134b54a134aSDavid Howells 135b54a134aSDavid Howells #define rxrpc_timer_traces \ 136b54a134aSDavid Howells EM(rxrpc_timer_begin, "Begin ") \ 137a158bdd3SDavid Howells EM(rxrpc_timer_exp_ack, "ExpAck") \ 138a158bdd3SDavid Howells EM(rxrpc_timer_exp_hard, "ExpHrd") \ 139a158bdd3SDavid Howells EM(rxrpc_timer_exp_idle, "ExpIdl") \ 140415f44e4SDavid Howells EM(rxrpc_timer_exp_keepalive, "ExpKA ") \ 141bd1fdf8cSDavid Howells EM(rxrpc_timer_exp_lost_ack, "ExpLoA") \ 142a158bdd3SDavid Howells EM(rxrpc_timer_exp_normal, "ExpNml") \ 143a158bdd3SDavid Howells EM(rxrpc_timer_exp_ping, "ExpPng") \ 144a158bdd3SDavid Howells EM(rxrpc_timer_exp_resend, "ExpRsn") \ 145b54a134aSDavid Howells EM(rxrpc_timer_init_for_reply, "IniRpl") \ 146b54a134aSDavid Howells EM(rxrpc_timer_init_for_send_reply, "SndRpl") \ 147a158bdd3SDavid Howells EM(rxrpc_timer_restart, "Restrt") \ 148b54a134aSDavid Howells EM(rxrpc_timer_set_for_ack, "SetAck") \ 149a158bdd3SDavid Howells EM(rxrpc_timer_set_for_hard, "SetHrd") \ 150a158bdd3SDavid Howells EM(rxrpc_timer_set_for_idle, "SetIdl") \ 151415f44e4SDavid Howells EM(rxrpc_timer_set_for_keepalive, "KeepAl") \ 152bd1fdf8cSDavid Howells EM(rxrpc_timer_set_for_lost_ack, "SetLoA") \ 153a158bdd3SDavid Howells EM(rxrpc_timer_set_for_normal, "SetNml") \ 154b54a134aSDavid Howells EM(rxrpc_timer_set_for_ping, "SetPng") \ 155b54a134aSDavid Howells EM(rxrpc_timer_set_for_resend, "SetRTx") \ 156a158bdd3SDavid Howells E_(rxrpc_timer_set_for_send, "SetSnd") 157b54a134aSDavid Howells 158b54a134aSDavid Howells #define rxrpc_propose_ack_traces \ 159b54a134aSDavid Howells EM(rxrpc_propose_ack_client_tx_end, "ClTxEnd") \ 160b54a134aSDavid Howells EM(rxrpc_propose_ack_input_data, "DataIn ") \ 1617150ceaaSDavid Howells EM(rxrpc_propose_ack_ping_for_check_life, "ChkLife") \ 162415f44e4SDavid Howells EM(rxrpc_propose_ack_ping_for_keepalive, "KeepAlv") \ 163b54a134aSDavid Howells EM(rxrpc_propose_ack_ping_for_lost_ack, "LostAck") \ 164b54a134aSDavid Howells EM(rxrpc_propose_ack_ping_for_lost_reply, "LostRpl") \ 165b54a134aSDavid Howells EM(rxrpc_propose_ack_ping_for_params, "Params ") \ 166b54a134aSDavid Howells EM(rxrpc_propose_ack_processing_op, "ProcOp ") \ 167b54a134aSDavid Howells EM(rxrpc_propose_ack_respond_to_ack, "Rsp2Ack") \ 168b54a134aSDavid Howells EM(rxrpc_propose_ack_respond_to_ping, "Rsp2Png") \ 169b54a134aSDavid Howells EM(rxrpc_propose_ack_retry_tx, "RetryTx") \ 170b54a134aSDavid Howells EM(rxrpc_propose_ack_rotate_rx, "RxAck ") \ 171b54a134aSDavid Howells E_(rxrpc_propose_ack_terminal_ack, "ClTerm ") 172b54a134aSDavid Howells 173b54a134aSDavid Howells #define rxrpc_propose_ack_outcomes \ 174b54a134aSDavid Howells EM(rxrpc_propose_ack_subsume, " Subsume") \ 175b54a134aSDavid Howells EM(rxrpc_propose_ack_update, " Update") \ 176197445afSDavid Howells E_(rxrpc_propose_ack_use, " New") 177b54a134aSDavid Howells 178b54a134aSDavid Howells #define rxrpc_congest_modes \ 179b54a134aSDavid Howells EM(RXRPC_CALL_CONGEST_AVOIDANCE, "CongAvoid") \ 180b54a134aSDavid Howells EM(RXRPC_CALL_FAST_RETRANSMIT, "FastReTx ") \ 181b54a134aSDavid Howells EM(RXRPC_CALL_PACKET_LOSS, "PktLoss ") \ 182b54a134aSDavid Howells E_(RXRPC_CALL_SLOW_START, "SlowStart") 183b54a134aSDavid Howells 184b54a134aSDavid Howells #define rxrpc_congest_changes \ 185b54a134aSDavid Howells EM(rxrpc_cong_begin_retransmission, " Retrans") \ 186b54a134aSDavid Howells EM(rxrpc_cong_cleared_nacks, " Cleared") \ 187b54a134aSDavid Howells EM(rxrpc_cong_new_low_nack, " NewLowN") \ 188aadf9dceSDavid Howells EM(rxrpc_cong_no_change, " -") \ 189b54a134aSDavid Howells EM(rxrpc_cong_progress, " Progres") \ 190b54a134aSDavid Howells EM(rxrpc_cong_retransmit_again, " ReTxAgn") \ 191b54a134aSDavid Howells EM(rxrpc_cong_rtt_window_end, " RttWinE") \ 192b54a134aSDavid Howells E_(rxrpc_cong_saw_nack, " SawNack") 193b54a134aSDavid Howells 194b54a134aSDavid Howells #define rxrpc_pkts \ 195b54a134aSDavid Howells EM(0, "?00") \ 196b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_DATA, "DATA") \ 197b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_ACK, "ACK") \ 198b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_BUSY, "BUSY") \ 199b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_ABORT, "ABORT") \ 200b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_ACKALL, "ACKALL") \ 201b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_CHALLENGE, "CHALL") \ 202b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_RESPONSE, "RESP") \ 203b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_DEBUG, "DEBUG") \ 204b54a134aSDavid Howells EM(9, "?09") \ 205b54a134aSDavid Howells EM(10, "?10") \ 206b54a134aSDavid Howells EM(11, "?11") \ 207b54a134aSDavid Howells EM(12, "?12") \ 208b54a134aSDavid Howells EM(RXRPC_PACKET_TYPE_VERSION, "VERSION") \ 209b54a134aSDavid Howells EM(14, "?14") \ 210b54a134aSDavid Howells E_(15, "?15") 211b54a134aSDavid Howells 212b54a134aSDavid Howells #define rxrpc_ack_names \ 213b54a134aSDavid Howells EM(0, "-0-") \ 214b54a134aSDavid Howells EM(RXRPC_ACK_REQUESTED, "REQ") \ 215b54a134aSDavid Howells EM(RXRPC_ACK_DUPLICATE, "DUP") \ 216b54a134aSDavid Howells EM(RXRPC_ACK_OUT_OF_SEQUENCE, "OOS") \ 217b54a134aSDavid Howells EM(RXRPC_ACK_EXCEEDS_WINDOW, "WIN") \ 218b54a134aSDavid Howells EM(RXRPC_ACK_NOSPACE, "MEM") \ 219b54a134aSDavid Howells EM(RXRPC_ACK_PING, "PNG") \ 220b54a134aSDavid Howells EM(RXRPC_ACK_PING_RESPONSE, "PNR") \ 221b54a134aSDavid Howells EM(RXRPC_ACK_DELAY, "DLY") \ 222b54a134aSDavid Howells EM(RXRPC_ACK_IDLE, "IDL") \ 223b54a134aSDavid Howells E_(RXRPC_ACK__INVALID, "-?-") 224b54a134aSDavid Howells 2251bae5d22SDavid Howells #define rxrpc_completions \ 2261bae5d22SDavid Howells EM(RXRPC_CALL_SUCCEEDED, "Succeeded") \ 2271bae5d22SDavid Howells EM(RXRPC_CALL_REMOTELY_ABORTED, "RemoteAbort") \ 2281bae5d22SDavid Howells EM(RXRPC_CALL_LOCALLY_ABORTED, "LocalAbort") \ 2291bae5d22SDavid Howells EM(RXRPC_CALL_LOCAL_ERROR, "LocalError") \ 2301bae5d22SDavid Howells E_(RXRPC_CALL_NETWORK_ERROR, "NetError") 2311bae5d22SDavid Howells 2324764c0daSDavid Howells #define rxrpc_tx_points \ 2334764c0daSDavid Howells EM(rxrpc_tx_point_call_abort, "CallAbort") \ 2344764c0daSDavid Howells EM(rxrpc_tx_point_call_ack, "CallAck") \ 2354764c0daSDavid Howells EM(rxrpc_tx_point_call_data_frag, "CallDataFrag") \ 2364764c0daSDavid Howells EM(rxrpc_tx_point_call_data_nofrag, "CallDataNofrag") \ 2374764c0daSDavid Howells EM(rxrpc_tx_point_call_final_resend, "CallFinalResend") \ 2384764c0daSDavid Howells EM(rxrpc_tx_point_conn_abort, "ConnAbort") \ 2394764c0daSDavid Howells EM(rxrpc_tx_point_reject, "Reject") \ 2404764c0daSDavid Howells EM(rxrpc_tx_point_rxkad_challenge, "RxkadChall") \ 2414764c0daSDavid Howells EM(rxrpc_tx_point_rxkad_response, "RxkadResp") \ 2424764c0daSDavid Howells EM(rxrpc_tx_point_version_keepalive, "VerKeepalive") \ 2434764c0daSDavid Howells E_(rxrpc_tx_point_version_reply, "VerReply") 2446b47fe1dSDavid Howells 2454d843be5SDavid Howells #define rxrpc_req_ack_traces \ 2464d843be5SDavid Howells EM(rxrpc_reqack_ack_lost, "ACK-LOST ") \ 2474d843be5SDavid Howells EM(rxrpc_reqack_already_on, "ALREADY-ON") \ 2484d843be5SDavid Howells EM(rxrpc_reqack_more_rtt, "MORE-RTT ") \ 2494d843be5SDavid Howells EM(rxrpc_reqack_no_srv_last, "NO-SRVLAST") \ 2504d843be5SDavid Howells EM(rxrpc_reqack_old_rtt, "OLD-RTT ") \ 2514d843be5SDavid Howells EM(rxrpc_reqack_retrans, "RETRANS ") \ 2524d843be5SDavid Howells EM(rxrpc_reqack_slow_start, "SLOW-START") \ 2534d843be5SDavid Howells E_(rxrpc_reqack_small_txwin, "SMALL-TXWN") 254f7fa5242SDavid Howells /* ---- Must update size of stat_why_req_ack[] if more are added! */ 2554d843be5SDavid Howells 25602a19356SDavid Howells #define rxrpc_txbuf_traces \ 25702a19356SDavid Howells EM(rxrpc_txbuf_alloc_ack, "ALLOC ACK ") \ 25802a19356SDavid Howells EM(rxrpc_txbuf_alloc_data, "ALLOC DATA ") \ 25902a19356SDavid Howells EM(rxrpc_txbuf_free, "FREE ") \ 26002a19356SDavid Howells EM(rxrpc_txbuf_get_trans, "GET TRANS ") \ 26102a19356SDavid Howells EM(rxrpc_txbuf_get_retrans, "GET RETRANS") \ 262*72f0c6fbSDavid Howells EM(rxrpc_txbuf_put_ack_tx, "PUT ACK TX ") \ 26302a19356SDavid Howells EM(rxrpc_txbuf_put_cleaned, "PUT CLEANED") \ 264*72f0c6fbSDavid Howells EM(rxrpc_txbuf_put_nomem, "PUT NOMEM ") \ 26502a19356SDavid Howells EM(rxrpc_txbuf_put_rotated, "PUT ROTATED") \ 26602a19356SDavid Howells EM(rxrpc_txbuf_put_send_aborted, "PUT SEND-X ") \ 26702a19356SDavid Howells EM(rxrpc_txbuf_see_send_more, "SEE SEND+ ") \ 26802a19356SDavid Howells E_(rxrpc_txbuf_see_unacked, "SEE UNACKED") 26902a19356SDavid Howells 270b54a134aSDavid Howells /* 271dc9fd093SDavid Howells * Generate enums for tracing information. 272dc9fd093SDavid Howells */ 273dc9fd093SDavid Howells #ifndef __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY 274dc9fd093SDavid Howells #define __NETFS_DECLARE_TRACE_ENUMS_ONCE_ONLY 275dc9fd093SDavid Howells 276dc9fd093SDavid Howells #undef EM 277dc9fd093SDavid Howells #undef E_ 278dc9fd093SDavid Howells #define EM(a, b) a, 279dc9fd093SDavid Howells #define E_(a, b) a 280dc9fd093SDavid Howells 281dc9fd093SDavid Howells enum rxrpc_call_trace { rxrpc_call_traces } __mode(byte); 282dc9fd093SDavid Howells enum rxrpc_client_trace { rxrpc_client_traces } __mode(byte); 283dc9fd093SDavid Howells enum rxrpc_congest_change { rxrpc_congest_changes } __mode(byte); 284dc9fd093SDavid Howells enum rxrpc_conn_trace { rxrpc_conn_traces } __mode(byte); 285dc9fd093SDavid Howells enum rxrpc_local_trace { rxrpc_local_traces } __mode(byte); 286dc9fd093SDavid Howells enum rxrpc_peer_trace { rxrpc_peer_traces } __mode(byte); 287dc9fd093SDavid Howells enum rxrpc_propose_ack_outcome { rxrpc_propose_ack_outcomes } __mode(byte); 288dc9fd093SDavid Howells enum rxrpc_propose_ack_trace { rxrpc_propose_ack_traces } __mode(byte); 289dc9fd093SDavid Howells enum rxrpc_receive_trace { rxrpc_receive_traces } __mode(byte); 290dc9fd093SDavid Howells enum rxrpc_recvmsg_trace { rxrpc_recvmsg_traces } __mode(byte); 2914d843be5SDavid Howells enum rxrpc_req_ack_trace { rxrpc_req_ack_traces } __mode(byte); 292dc9fd093SDavid Howells enum rxrpc_rtt_rx_trace { rxrpc_rtt_rx_traces } __mode(byte); 293dc9fd093SDavid Howells enum rxrpc_rtt_tx_trace { rxrpc_rtt_tx_traces } __mode(byte); 294dc9fd093SDavid Howells enum rxrpc_skb_trace { rxrpc_skb_traces } __mode(byte); 295dc9fd093SDavid Howells enum rxrpc_timer_trace { rxrpc_timer_traces } __mode(byte); 296dc9fd093SDavid Howells enum rxrpc_transmit_trace { rxrpc_transmit_traces } __mode(byte); 297dc9fd093SDavid Howells enum rxrpc_tx_point { rxrpc_tx_points } __mode(byte); 29802a19356SDavid Howells enum rxrpc_txbuf_trace { rxrpc_txbuf_traces } __mode(byte); 299dc9fd093SDavid Howells 300dc9fd093SDavid Howells #endif /* end __RXRPC_DECLARE_TRACE_ENUMS_ONCE_ONLY */ 301dc9fd093SDavid Howells 302dc9fd093SDavid Howells /* 303b54a134aSDavid Howells * Export enum symbols via userspace. 304b54a134aSDavid Howells */ 305b54a134aSDavid Howells #undef EM 306b54a134aSDavid Howells #undef E_ 307b54a134aSDavid Howells #define EM(a, b) TRACE_DEFINE_ENUM(a); 308b54a134aSDavid Howells #define E_(a, b) TRACE_DEFINE_ENUM(a); 309b54a134aSDavid Howells 310b54a134aSDavid Howells rxrpc_call_traces; 311dc9fd093SDavid Howells rxrpc_client_traces; 312dc9fd093SDavid Howells rxrpc_congest_changes; 313dc9fd093SDavid Howells rxrpc_congest_modes; 314dc9fd093SDavid Howells rxrpc_conn_traces; 315dc9fd093SDavid Howells rxrpc_local_traces; 316dc9fd093SDavid Howells rxrpc_propose_ack_outcomes; 317dc9fd093SDavid Howells rxrpc_propose_ack_traces; 318b54a134aSDavid Howells rxrpc_receive_traces; 319b54a134aSDavid Howells rxrpc_recvmsg_traces; 3204d843be5SDavid Howells rxrpc_req_ack_traces; 321b54a134aSDavid Howells rxrpc_rtt_rx_traces; 322dc9fd093SDavid Howells rxrpc_rtt_tx_traces; 323dc9fd093SDavid Howells rxrpc_skb_traces; 324b54a134aSDavid Howells rxrpc_timer_traces; 325dc9fd093SDavid Howells rxrpc_transmit_traces; 3264764c0daSDavid Howells rxrpc_tx_points; 32702a19356SDavid Howells rxrpc_txbuf_traces; 328b54a134aSDavid Howells 329b54a134aSDavid Howells /* 330b54a134aSDavid Howells * Now redefine the EM() and E_() macros to map the enums to the strings that 331b54a134aSDavid Howells * will be printed in the output. 332b54a134aSDavid Howells */ 333b54a134aSDavid Howells #undef EM 334b54a134aSDavid Howells #undef E_ 335b54a134aSDavid Howells #define EM(a, b) { a, b }, 336b54a134aSDavid Howells #define E_(a, b) { a, b } 337b54a134aSDavid Howells 33809d2bf59SDavid Howells TRACE_EVENT(rxrpc_local, 33906d9532fSDavid Howells TP_PROTO(unsigned int local_debug_id, enum rxrpc_local_trace op, 34009d2bf59SDavid Howells int usage, const void *where), 34109d2bf59SDavid Howells 34206d9532fSDavid Howells TP_ARGS(local_debug_id, op, usage, where), 34309d2bf59SDavid Howells 34409d2bf59SDavid Howells TP_STRUCT__entry( 34509d2bf59SDavid Howells __field(unsigned int, local ) 34609d2bf59SDavid Howells __field(int, op ) 34709d2bf59SDavid Howells __field(int, usage ) 34809d2bf59SDavid Howells __field(const void *, where ) 34909d2bf59SDavid Howells ), 35009d2bf59SDavid Howells 35109d2bf59SDavid Howells TP_fast_assign( 35206d9532fSDavid Howells __entry->local = local_debug_id; 35309d2bf59SDavid Howells __entry->op = op; 35409d2bf59SDavid Howells __entry->usage = usage; 35509d2bf59SDavid Howells __entry->where = where; 35609d2bf59SDavid Howells ), 35709d2bf59SDavid Howells 35809d2bf59SDavid Howells TP_printk("L=%08x %s u=%d sp=%pSR", 35909d2bf59SDavid Howells __entry->local, 36009d2bf59SDavid Howells __print_symbolic(__entry->op, rxrpc_local_traces), 36109d2bf59SDavid Howells __entry->usage, 36209d2bf59SDavid Howells __entry->where) 36309d2bf59SDavid Howells ); 36409d2bf59SDavid Howells 3651159d4b4SDavid Howells TRACE_EVENT(rxrpc_peer, 36655f6c98eSDavid Howells TP_PROTO(unsigned int peer_debug_id, enum rxrpc_peer_trace op, 3671159d4b4SDavid Howells int usage, const void *where), 3681159d4b4SDavid Howells 36955f6c98eSDavid Howells TP_ARGS(peer_debug_id, op, usage, where), 3701159d4b4SDavid Howells 3711159d4b4SDavid Howells TP_STRUCT__entry( 3721159d4b4SDavid Howells __field(unsigned int, peer ) 3731159d4b4SDavid Howells __field(int, op ) 3741159d4b4SDavid Howells __field(int, usage ) 3751159d4b4SDavid Howells __field(const void *, where ) 3761159d4b4SDavid Howells ), 3771159d4b4SDavid Howells 3781159d4b4SDavid Howells TP_fast_assign( 37955f6c98eSDavid Howells __entry->peer = peer_debug_id; 3801159d4b4SDavid Howells __entry->op = op; 3811159d4b4SDavid Howells __entry->usage = usage; 3821159d4b4SDavid Howells __entry->where = where; 3831159d4b4SDavid Howells ), 3841159d4b4SDavid Howells 3851159d4b4SDavid Howells TP_printk("P=%08x %s u=%d sp=%pSR", 3861159d4b4SDavid Howells __entry->peer, 3871159d4b4SDavid Howells __print_symbolic(__entry->op, rxrpc_peer_traces), 3881159d4b4SDavid Howells __entry->usage, 3891159d4b4SDavid Howells __entry->where) 3901159d4b4SDavid Howells ); 3911159d4b4SDavid Howells 392363deeabSDavid Howells TRACE_EVENT(rxrpc_conn, 3934c1295dcSDavid Howells TP_PROTO(unsigned int conn_debug_id, enum rxrpc_conn_trace op, 394363deeabSDavid Howells int usage, const void *where), 395363deeabSDavid Howells 3964c1295dcSDavid Howells TP_ARGS(conn_debug_id, op, usage, where), 397363deeabSDavid Howells 398363deeabSDavid Howells TP_STRUCT__entry( 399a25e21f0SDavid Howells __field(unsigned int, conn ) 400363deeabSDavid Howells __field(int, op ) 401363deeabSDavid Howells __field(int, usage ) 402363deeabSDavid Howells __field(const void *, where ) 403363deeabSDavid Howells ), 404363deeabSDavid Howells 405363deeabSDavid Howells TP_fast_assign( 4064c1295dcSDavid Howells __entry->conn = conn_debug_id; 407363deeabSDavid Howells __entry->op = op; 408363deeabSDavid Howells __entry->usage = usage; 409363deeabSDavid Howells __entry->where = where; 410363deeabSDavid Howells ), 411363deeabSDavid Howells 412a25e21f0SDavid Howells TP_printk("C=%08x %s u=%d sp=%pSR", 413363deeabSDavid Howells __entry->conn, 414b54a134aSDavid Howells __print_symbolic(__entry->op, rxrpc_conn_traces), 415363deeabSDavid Howells __entry->usage, 416363deeabSDavid Howells __entry->where) 417363deeabSDavid Howells ); 418363deeabSDavid Howells 419363deeabSDavid Howells TRACE_EVENT(rxrpc_client, 420363deeabSDavid Howells TP_PROTO(struct rxrpc_connection *conn, int channel, 421363deeabSDavid Howells enum rxrpc_client_trace op), 422363deeabSDavid Howells 423363deeabSDavid Howells TP_ARGS(conn, channel, op), 424363deeabSDavid Howells 425363deeabSDavid Howells TP_STRUCT__entry( 426a25e21f0SDavid Howells __field(unsigned int, conn ) 427363deeabSDavid Howells __field(u32, cid ) 428363deeabSDavid Howells __field(int, channel ) 429363deeabSDavid Howells __field(int, usage ) 430363deeabSDavid Howells __field(enum rxrpc_client_trace, op ) 431363deeabSDavid Howells ), 432363deeabSDavid Howells 433363deeabSDavid Howells TP_fast_assign( 434245500d8SDavid Howells __entry->conn = conn ? conn->debug_id : 0; 435363deeabSDavid Howells __entry->channel = channel; 436a0575429SDavid Howells __entry->usage = conn ? refcount_read(&conn->ref) : -2; 437363deeabSDavid Howells __entry->op = op; 43896a9c425SDavid Howells __entry->cid = conn ? conn->proto.cid : 0; 439363deeabSDavid Howells ), 440363deeabSDavid Howells 441245500d8SDavid Howells TP_printk("C=%08x h=%2d %s i=%08x u=%d", 442363deeabSDavid Howells __entry->conn, 443363deeabSDavid Howells __entry->channel, 444b54a134aSDavid Howells __print_symbolic(__entry->op, rxrpc_client_traces), 445363deeabSDavid Howells __entry->cid, 446363deeabSDavid Howells __entry->usage) 447363deeabSDavid Howells ); 448363deeabSDavid Howells 449e34d4234SDavid Howells TRACE_EVENT(rxrpc_call, 45048c9e0ecSDavid Howells TP_PROTO(unsigned int call_debug_id, enum rxrpc_call_trace op, 4512ab27215SDavid Howells int usage, const void *where, const void *aux), 452e34d4234SDavid Howells 45348c9e0ecSDavid Howells TP_ARGS(call_debug_id, op, usage, where, aux), 454e34d4234SDavid Howells 455e34d4234SDavid Howells TP_STRUCT__entry( 456a25e21f0SDavid Howells __field(unsigned int, call ) 457e34d4234SDavid Howells __field(int, op ) 458e34d4234SDavid Howells __field(int, usage ) 459e34d4234SDavid Howells __field(const void *, where ) 460e34d4234SDavid Howells __field(const void *, aux ) 461e34d4234SDavid Howells ), 462e34d4234SDavid Howells 463e34d4234SDavid Howells TP_fast_assign( 46448c9e0ecSDavid Howells __entry->call = call_debug_id; 465e34d4234SDavid Howells __entry->op = op; 466e34d4234SDavid Howells __entry->usage = usage; 467e34d4234SDavid Howells __entry->where = where; 468e34d4234SDavid Howells __entry->aux = aux; 469e34d4234SDavid Howells ), 470e34d4234SDavid Howells 471a25e21f0SDavid Howells TP_printk("c=%08x %s u=%d sp=%pSR a=%p", 472e34d4234SDavid Howells __entry->call, 473b54a134aSDavid Howells __print_symbolic(__entry->op, rxrpc_call_traces), 474e34d4234SDavid Howells __entry->usage, 475e34d4234SDavid Howells __entry->where, 476e34d4234SDavid Howells __entry->aux) 477e34d4234SDavid Howells ); 478e34d4234SDavid Howells 479df844fd4SDavid Howells TRACE_EVENT(rxrpc_skb, 48071f3ca40SDavid Howells TP_PROTO(struct sk_buff *skb, enum rxrpc_skb_trace op, 48127f699ccSDavid Howells int usage, int mod_count, const void *where), 482df844fd4SDavid Howells 48327f699ccSDavid Howells TP_ARGS(skb, op, usage, mod_count, where), 484df844fd4SDavid Howells 485df844fd4SDavid Howells TP_STRUCT__entry( 486df844fd4SDavid Howells __field(struct sk_buff *, skb ) 48771f3ca40SDavid Howells __field(enum rxrpc_skb_trace, op ) 488df844fd4SDavid Howells __field(int, usage ) 489df844fd4SDavid Howells __field(int, mod_count ) 490df844fd4SDavid Howells __field(const void *, where ) 491df844fd4SDavid Howells ), 492df844fd4SDavid Howells 493df844fd4SDavid Howells TP_fast_assign( 494df844fd4SDavid Howells __entry->skb = skb; 495df844fd4SDavid Howells __entry->op = op; 496df844fd4SDavid Howells __entry->usage = usage; 497df844fd4SDavid Howells __entry->mod_count = mod_count; 498df844fd4SDavid Howells __entry->where = where; 499df844fd4SDavid Howells ), 500df844fd4SDavid Howells 50127f699ccSDavid Howells TP_printk("s=%p Rx %s u=%d m=%d p=%pSR", 502df844fd4SDavid Howells __entry->skb, 503b54a134aSDavid Howells __print_symbolic(__entry->op, rxrpc_skb_traces), 504df844fd4SDavid Howells __entry->usage, 505df844fd4SDavid Howells __entry->mod_count, 506df844fd4SDavid Howells __entry->where) 507df844fd4SDavid Howells ); 508df844fd4SDavid Howells 50949e19ec7SDavid Howells TRACE_EVENT(rxrpc_rx_packet, 51049e19ec7SDavid Howells TP_PROTO(struct rxrpc_skb_priv *sp), 51149e19ec7SDavid Howells 51249e19ec7SDavid Howells TP_ARGS(sp), 51349e19ec7SDavid Howells 51449e19ec7SDavid Howells TP_STRUCT__entry( 51549e19ec7SDavid Howells __field_struct(struct rxrpc_host_header, hdr ) 51649e19ec7SDavid Howells ), 51749e19ec7SDavid Howells 51849e19ec7SDavid Howells TP_fast_assign( 51949e19ec7SDavid Howells memcpy(&__entry->hdr, &sp->hdr, sizeof(__entry->hdr)); 52049e19ec7SDavid Howells ), 52149e19ec7SDavid Howells 522a3868bfcSDavid Howells TP_printk("%08x:%08x:%08x:%04x %08x %08x %02x %02x %s", 52349e19ec7SDavid Howells __entry->hdr.epoch, __entry->hdr.cid, 52449e19ec7SDavid Howells __entry->hdr.callNumber, __entry->hdr.serviceId, 52549e19ec7SDavid Howells __entry->hdr.serial, __entry->hdr.seq, 526a3868bfcSDavid Howells __entry->hdr.type, __entry->hdr.flags, 527b54a134aSDavid Howells __entry->hdr.type <= 15 ? 528b54a134aSDavid Howells __print_symbolic(__entry->hdr.type, rxrpc_pkts) : "?UNK") 52949e19ec7SDavid Howells ); 53049e19ec7SDavid Howells 53149e19ec7SDavid Howells TRACE_EVENT(rxrpc_rx_done, 53249e19ec7SDavid Howells TP_PROTO(int result, int abort_code), 53349e19ec7SDavid Howells 53449e19ec7SDavid Howells TP_ARGS(result, abort_code), 53549e19ec7SDavid Howells 53649e19ec7SDavid Howells TP_STRUCT__entry( 53749e19ec7SDavid Howells __field(int, result ) 53849e19ec7SDavid Howells __field(int, abort_code ) 53949e19ec7SDavid Howells ), 54049e19ec7SDavid Howells 54149e19ec7SDavid Howells TP_fast_assign( 54249e19ec7SDavid Howells __entry->result = result; 54349e19ec7SDavid Howells __entry->abort_code = abort_code; 54449e19ec7SDavid Howells ), 54549e19ec7SDavid Howells 54649e19ec7SDavid Howells TP_printk("r=%d a=%d", __entry->result, __entry->abort_code) 54749e19ec7SDavid Howells ); 54849e19ec7SDavid Howells 5495a42976dSDavid Howells TRACE_EVENT(rxrpc_abort, 550a25e21f0SDavid Howells TP_PROTO(unsigned int call_nr, const char *why, u32 cid, u32 call_id, 551a25e21f0SDavid Howells rxrpc_seq_t seq, int abort_code, int error), 5525a42976dSDavid Howells 553a25e21f0SDavid Howells TP_ARGS(call_nr, why, cid, call_id, seq, abort_code, error), 5545a42976dSDavid Howells 5555a42976dSDavid Howells TP_STRUCT__entry( 556a25e21f0SDavid Howells __field(unsigned int, call_nr ) 5575a42976dSDavid Howells __array(char, why, 4 ) 5585a42976dSDavid Howells __field(u32, cid ) 5595a42976dSDavid Howells __field(u32, call_id ) 5605a42976dSDavid Howells __field(rxrpc_seq_t, seq ) 5615a42976dSDavid Howells __field(int, abort_code ) 5625a42976dSDavid Howells __field(int, error ) 5635a42976dSDavid Howells ), 5645a42976dSDavid Howells 5655a42976dSDavid Howells TP_fast_assign( 5665a42976dSDavid Howells memcpy(__entry->why, why, 4); 567a25e21f0SDavid Howells __entry->call_nr = call_nr; 5685a42976dSDavid Howells __entry->cid = cid; 5695a42976dSDavid Howells __entry->call_id = call_id; 5705a42976dSDavid Howells __entry->abort_code = abort_code; 5715a42976dSDavid Howells __entry->error = error; 5725a42976dSDavid Howells __entry->seq = seq; 5735a42976dSDavid Howells ), 5745a42976dSDavid Howells 575a25e21f0SDavid Howells TP_printk("c=%08x %08x:%08x s=%u a=%d e=%d %s", 576a25e21f0SDavid Howells __entry->call_nr, 5775a42976dSDavid Howells __entry->cid, __entry->call_id, __entry->seq, 5785a42976dSDavid Howells __entry->abort_code, __entry->error, __entry->why) 5795a42976dSDavid Howells ); 5805a42976dSDavid Howells 5811bae5d22SDavid Howells TRACE_EVENT(rxrpc_call_complete, 5821bae5d22SDavid Howells TP_PROTO(struct rxrpc_call *call), 5831bae5d22SDavid Howells 5841bae5d22SDavid Howells TP_ARGS(call), 5851bae5d22SDavid Howells 5861bae5d22SDavid Howells TP_STRUCT__entry( 5871bae5d22SDavid Howells __field(unsigned int, call ) 5881bae5d22SDavid Howells __field(enum rxrpc_call_completion, compl ) 5891bae5d22SDavid Howells __field(int, error ) 5901bae5d22SDavid Howells __field(u32, abort_code ) 5911bae5d22SDavid Howells ), 5921bae5d22SDavid Howells 5931bae5d22SDavid Howells TP_fast_assign( 5941bae5d22SDavid Howells __entry->call = call->debug_id; 5951bae5d22SDavid Howells __entry->compl = call->completion; 5961bae5d22SDavid Howells __entry->error = call->error; 5971bae5d22SDavid Howells __entry->abort_code = call->abort_code; 5981bae5d22SDavid Howells ), 5991bae5d22SDavid Howells 6001bae5d22SDavid Howells TP_printk("c=%08x %s r=%d ac=%d", 6011bae5d22SDavid Howells __entry->call, 6021bae5d22SDavid Howells __print_symbolic(__entry->compl, rxrpc_completions), 6031bae5d22SDavid Howells __entry->error, 6041bae5d22SDavid Howells __entry->abort_code) 6051bae5d22SDavid Howells ); 6061bae5d22SDavid Howells 607a124fe3eSDavid Howells TRACE_EVENT(rxrpc_transmit, 608a124fe3eSDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_transmit_trace why), 609a124fe3eSDavid Howells 610a124fe3eSDavid Howells TP_ARGS(call, why), 611a124fe3eSDavid Howells 612a124fe3eSDavid Howells TP_STRUCT__entry( 613a25e21f0SDavid Howells __field(unsigned int, call ) 614a124fe3eSDavid Howells __field(enum rxrpc_transmit_trace, why ) 615a124fe3eSDavid Howells __field(rxrpc_seq_t, tx_hard_ack ) 616a124fe3eSDavid Howells __field(rxrpc_seq_t, tx_top ) 617b1d9f7fdSDavid Howells __field(int, tx_winsize ) 618a124fe3eSDavid Howells ), 619a124fe3eSDavid Howells 620a124fe3eSDavid Howells TP_fast_assign( 621a25e21f0SDavid Howells __entry->call = call->debug_id; 622a124fe3eSDavid Howells __entry->why = why; 623a124fe3eSDavid Howells __entry->tx_hard_ack = call->tx_hard_ack; 624a124fe3eSDavid Howells __entry->tx_top = call->tx_top; 625b1d9f7fdSDavid Howells __entry->tx_winsize = call->tx_winsize; 626a124fe3eSDavid Howells ), 627a124fe3eSDavid Howells 628a25e21f0SDavid Howells TP_printk("c=%08x %s f=%08x n=%u/%u", 629a124fe3eSDavid Howells __entry->call, 630b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_transmit_traces), 631a124fe3eSDavid Howells __entry->tx_hard_ack + 1, 632b1d9f7fdSDavid Howells __entry->tx_top - __entry->tx_hard_ack, 633b1d9f7fdSDavid Howells __entry->tx_winsize) 634a124fe3eSDavid Howells ); 635a124fe3eSDavid Howells 636b1d9f7fdSDavid Howells TRACE_EVENT(rxrpc_rx_data, 6374764c0daSDavid Howells TP_PROTO(unsigned int call, rxrpc_seq_t seq, 638b1d9f7fdSDavid Howells rxrpc_serial_t serial, u8 flags, u8 anno), 639ec71eb9aSDavid Howells 640b1d9f7fdSDavid Howells TP_ARGS(call, seq, serial, flags, anno), 641ec71eb9aSDavid Howells 642ec71eb9aSDavid Howells TP_STRUCT__entry( 643a25e21f0SDavid Howells __field(unsigned int, call ) 644b1d9f7fdSDavid Howells __field(rxrpc_seq_t, seq ) 645b1d9f7fdSDavid Howells __field(rxrpc_serial_t, serial ) 646b1d9f7fdSDavid Howells __field(u8, flags ) 647b1d9f7fdSDavid Howells __field(u8, anno ) 648b1d9f7fdSDavid Howells ), 649b1d9f7fdSDavid Howells 650b1d9f7fdSDavid Howells TP_fast_assign( 6514764c0daSDavid Howells __entry->call = call; 652b1d9f7fdSDavid Howells __entry->seq = seq; 653b1d9f7fdSDavid Howells __entry->serial = serial; 654b1d9f7fdSDavid Howells __entry->flags = flags; 655b1d9f7fdSDavid Howells __entry->anno = anno; 656b1d9f7fdSDavid Howells ), 657b1d9f7fdSDavid Howells 658a25e21f0SDavid Howells TP_printk("c=%08x DATA %08x q=%08x fl=%02x a=%02x", 659b1d9f7fdSDavid Howells __entry->call, 660b1d9f7fdSDavid Howells __entry->serial, 661b1d9f7fdSDavid Howells __entry->seq, 662b1d9f7fdSDavid Howells __entry->flags, 663b1d9f7fdSDavid Howells __entry->anno) 664b1d9f7fdSDavid Howells ); 665b1d9f7fdSDavid Howells 666b1d9f7fdSDavid Howells TRACE_EVENT(rxrpc_rx_ack, 667b1d9f7fdSDavid Howells TP_PROTO(struct rxrpc_call *call, 668b1d9f7fdSDavid Howells rxrpc_serial_t serial, rxrpc_serial_t ack_serial, 669b1d9f7fdSDavid Howells rxrpc_seq_t first, rxrpc_seq_t prev, u8 reason, u8 n_acks), 670b1d9f7fdSDavid Howells 671b1d9f7fdSDavid Howells TP_ARGS(call, serial, ack_serial, first, prev, reason, n_acks), 672b1d9f7fdSDavid Howells 673b1d9f7fdSDavid Howells TP_STRUCT__entry( 674a25e21f0SDavid Howells __field(unsigned int, call ) 675b1d9f7fdSDavid Howells __field(rxrpc_serial_t, serial ) 676b1d9f7fdSDavid Howells __field(rxrpc_serial_t, ack_serial ) 677ec71eb9aSDavid Howells __field(rxrpc_seq_t, first ) 678b1d9f7fdSDavid Howells __field(rxrpc_seq_t, prev ) 679ec71eb9aSDavid Howells __field(u8, reason ) 680ec71eb9aSDavid Howells __field(u8, n_acks ) 681ec71eb9aSDavid Howells ), 682ec71eb9aSDavid Howells 683ec71eb9aSDavid Howells TP_fast_assign( 684a25e21f0SDavid Howells __entry->call = call->debug_id; 685b1d9f7fdSDavid Howells __entry->serial = serial; 686b1d9f7fdSDavid Howells __entry->ack_serial = ack_serial; 687ec71eb9aSDavid Howells __entry->first = first; 688b1d9f7fdSDavid Howells __entry->prev = prev; 689ec71eb9aSDavid Howells __entry->reason = reason; 690ec71eb9aSDavid Howells __entry->n_acks = n_acks; 691ec71eb9aSDavid Howells ), 692ec71eb9aSDavid Howells 693a25e21f0SDavid Howells TP_printk("c=%08x %08x %s r=%08x f=%08x p=%08x n=%u", 694ec71eb9aSDavid Howells __entry->call, 695b1d9f7fdSDavid Howells __entry->serial, 696b54a134aSDavid Howells __print_symbolic(__entry->reason, rxrpc_ack_names), 697b1d9f7fdSDavid Howells __entry->ack_serial, 698ec71eb9aSDavid Howells __entry->first, 699b1d9f7fdSDavid Howells __entry->prev, 700ec71eb9aSDavid Howells __entry->n_acks) 701ec71eb9aSDavid Howells ); 702ec71eb9aSDavid Howells 703005ede28SDavid Howells TRACE_EVENT(rxrpc_rx_abort, 704005ede28SDavid Howells TP_PROTO(struct rxrpc_call *call, rxrpc_serial_t serial, 705005ede28SDavid Howells u32 abort_code), 706005ede28SDavid Howells 707005ede28SDavid Howells TP_ARGS(call, serial, abort_code), 708005ede28SDavid Howells 709005ede28SDavid Howells TP_STRUCT__entry( 710a25e21f0SDavid Howells __field(unsigned int, call ) 711005ede28SDavid Howells __field(rxrpc_serial_t, serial ) 712005ede28SDavid Howells __field(u32, abort_code ) 713005ede28SDavid Howells ), 714005ede28SDavid Howells 715005ede28SDavid Howells TP_fast_assign( 716a25e21f0SDavid Howells __entry->call = call->debug_id; 717005ede28SDavid Howells __entry->serial = serial; 718005ede28SDavid Howells __entry->abort_code = abort_code; 719005ede28SDavid Howells ), 720005ede28SDavid Howells 721a25e21f0SDavid Howells TP_printk("c=%08x ABORT %08x ac=%d", 722005ede28SDavid Howells __entry->call, 723005ede28SDavid Howells __entry->serial, 724005ede28SDavid Howells __entry->abort_code) 725005ede28SDavid Howells ); 726005ede28SDavid Howells 727740586d2SDavid Howells TRACE_EVENT(rxrpc_rx_rwind_change, 728740586d2SDavid Howells TP_PROTO(struct rxrpc_call *call, rxrpc_serial_t serial, 729740586d2SDavid Howells u32 rwind, bool wake), 730740586d2SDavid Howells 731740586d2SDavid Howells TP_ARGS(call, serial, rwind, wake), 732740586d2SDavid Howells 733740586d2SDavid Howells TP_STRUCT__entry( 734a25e21f0SDavid Howells __field(unsigned int, call ) 735740586d2SDavid Howells __field(rxrpc_serial_t, serial ) 736740586d2SDavid Howells __field(u32, rwind ) 737740586d2SDavid Howells __field(bool, wake ) 738740586d2SDavid Howells ), 739740586d2SDavid Howells 740740586d2SDavid Howells TP_fast_assign( 741a25e21f0SDavid Howells __entry->call = call->debug_id; 742740586d2SDavid Howells __entry->serial = serial; 743740586d2SDavid Howells __entry->rwind = rwind; 744740586d2SDavid Howells __entry->wake = wake; 745740586d2SDavid Howells ), 746740586d2SDavid Howells 747a25e21f0SDavid Howells TP_printk("c=%08x %08x rw=%u%s", 748740586d2SDavid Howells __entry->call, 749740586d2SDavid Howells __entry->serial, 750740586d2SDavid Howells __entry->rwind, 751740586d2SDavid Howells __entry->wake ? " wake" : "") 752740586d2SDavid Howells ); 753740586d2SDavid Howells 7544764c0daSDavid Howells TRACE_EVENT(rxrpc_tx_packet, 7554764c0daSDavid Howells TP_PROTO(unsigned int call_id, struct rxrpc_wire_header *whdr, 7564764c0daSDavid Howells enum rxrpc_tx_point where), 7574764c0daSDavid Howells 7584764c0daSDavid Howells TP_ARGS(call_id, whdr, where), 7594764c0daSDavid Howells 7604764c0daSDavid Howells TP_STRUCT__entry( 7614764c0daSDavid Howells __field(unsigned int, call ) 7624764c0daSDavid Howells __field(enum rxrpc_tx_point, where ) 7634764c0daSDavid Howells __field_struct(struct rxrpc_wire_header, whdr ) 7644764c0daSDavid Howells ), 7654764c0daSDavid Howells 7664764c0daSDavid Howells TP_fast_assign( 7674764c0daSDavid Howells __entry->call = call_id; 7684764c0daSDavid Howells memcpy(&__entry->whdr, whdr, sizeof(__entry->whdr)); 7694e2abd3cSDavid Howells __entry->where = where; 7704764c0daSDavid Howells ), 7714764c0daSDavid Howells 7724764c0daSDavid Howells TP_printk("c=%08x %08x:%08x:%08x:%04x %08x %08x %02x %02x %s %s", 7734764c0daSDavid Howells __entry->call, 7744764c0daSDavid Howells ntohl(__entry->whdr.epoch), 7754764c0daSDavid Howells ntohl(__entry->whdr.cid), 7764764c0daSDavid Howells ntohl(__entry->whdr.callNumber), 7774764c0daSDavid Howells ntohs(__entry->whdr.serviceId), 7784764c0daSDavid Howells ntohl(__entry->whdr.serial), 7794764c0daSDavid Howells ntohl(__entry->whdr.seq), 7804764c0daSDavid Howells __entry->whdr.type, __entry->whdr.flags, 7814764c0daSDavid Howells __entry->whdr.type <= 15 ? 7824764c0daSDavid Howells __print_symbolic(__entry->whdr.type, rxrpc_pkts) : "?UNK", 7834764c0daSDavid Howells __print_symbolic(__entry->where, rxrpc_tx_points)) 7844764c0daSDavid Howells ); 7854764c0daSDavid Howells 786be832aecSDavid Howells TRACE_EVENT(rxrpc_tx_data, 787be832aecSDavid Howells TP_PROTO(struct rxrpc_call *call, rxrpc_seq_t seq, 788a1767077SDavid Howells rxrpc_serial_t serial, u8 flags, bool retrans, bool lose), 789f3639df2SDavid Howells 790a1767077SDavid Howells TP_ARGS(call, seq, serial, flags, retrans, lose), 791f3639df2SDavid Howells 792f3639df2SDavid Howells TP_STRUCT__entry( 793a25e21f0SDavid Howells __field(unsigned int, call ) 794be832aecSDavid Howells __field(rxrpc_seq_t, seq ) 795f3639df2SDavid Howells __field(rxrpc_serial_t, serial ) 7964764c0daSDavid Howells __field(u32, cid ) 7974764c0daSDavid Howells __field(u32, call_id ) 798be832aecSDavid Howells __field(u8, flags ) 799a1767077SDavid Howells __field(bool, retrans ) 800be832aecSDavid Howells __field(bool, lose ) 801be832aecSDavid Howells ), 802be832aecSDavid Howells 803be832aecSDavid Howells TP_fast_assign( 804a25e21f0SDavid Howells __entry->call = call->debug_id; 8054764c0daSDavid Howells __entry->cid = call->cid; 8064764c0daSDavid Howells __entry->call_id = call->call_id; 807be832aecSDavid Howells __entry->seq = seq; 808be832aecSDavid Howells __entry->serial = serial; 809be832aecSDavid Howells __entry->flags = flags; 810a1767077SDavid Howells __entry->retrans = retrans; 811be832aecSDavid Howells __entry->lose = lose; 812be832aecSDavid Howells ), 813be832aecSDavid Howells 8144764c0daSDavid Howells TP_printk("c=%08x DATA %08x:%08x %08x q=%08x fl=%02x%s%s", 815be832aecSDavid Howells __entry->call, 8164764c0daSDavid Howells __entry->cid, 8174764c0daSDavid Howells __entry->call_id, 818be832aecSDavid Howells __entry->serial, 819be832aecSDavid Howells __entry->seq, 820be832aecSDavid Howells __entry->flags, 821265a44bbSDavid Howells __entry->retrans ? " *RETRANS*" : "", 822be832aecSDavid Howells __entry->lose ? " *LOSE*" : "") 823be832aecSDavid Howells ); 824be832aecSDavid Howells 825be832aecSDavid Howells TRACE_EVENT(rxrpc_tx_ack, 8264764c0daSDavid Howells TP_PROTO(unsigned int call, rxrpc_serial_t serial, 827be832aecSDavid Howells rxrpc_seq_t ack_first, rxrpc_serial_t ack_serial, 828be832aecSDavid Howells u8 reason, u8 n_acks), 829be832aecSDavid Howells 830be832aecSDavid Howells TP_ARGS(call, serial, ack_first, ack_serial, reason, n_acks), 831be832aecSDavid Howells 832be832aecSDavid Howells TP_STRUCT__entry( 833a25e21f0SDavid Howells __field(unsigned int, call ) 834be832aecSDavid Howells __field(rxrpc_serial_t, serial ) 835be832aecSDavid Howells __field(rxrpc_seq_t, ack_first ) 836be832aecSDavid Howells __field(rxrpc_serial_t, ack_serial ) 837f3639df2SDavid Howells __field(u8, reason ) 838f3639df2SDavid Howells __field(u8, n_acks ) 839f3639df2SDavid Howells ), 840f3639df2SDavid Howells 841f3639df2SDavid Howells TP_fast_assign( 8424764c0daSDavid Howells __entry->call = call; 843f3639df2SDavid Howells __entry->serial = serial; 844be832aecSDavid Howells __entry->ack_first = ack_first; 845be832aecSDavid Howells __entry->ack_serial = ack_serial; 846f3639df2SDavid Howells __entry->reason = reason; 847f3639df2SDavid Howells __entry->n_acks = n_acks; 848f3639df2SDavid Howells ), 849f3639df2SDavid Howells 850a25e21f0SDavid Howells TP_printk(" c=%08x ACK %08x %s f=%08x r=%08x n=%u", 851f3639df2SDavid Howells __entry->call, 852f3639df2SDavid Howells __entry->serial, 853b54a134aSDavid Howells __print_symbolic(__entry->reason, rxrpc_ack_names), 854be832aecSDavid Howells __entry->ack_first, 855be832aecSDavid Howells __entry->ack_serial, 856f3639df2SDavid Howells __entry->n_acks) 857f3639df2SDavid Howells ); 858f3639df2SDavid Howells 85958dc63c9SDavid Howells TRACE_EVENT(rxrpc_receive, 86058dc63c9SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_receive_trace why, 86158dc63c9SDavid Howells rxrpc_serial_t serial, rxrpc_seq_t seq), 86258dc63c9SDavid Howells 86358dc63c9SDavid Howells TP_ARGS(call, why, serial, seq), 86458dc63c9SDavid Howells 86558dc63c9SDavid Howells TP_STRUCT__entry( 866a25e21f0SDavid Howells __field(unsigned int, call ) 86758dc63c9SDavid Howells __field(enum rxrpc_receive_trace, why ) 86858dc63c9SDavid Howells __field(rxrpc_serial_t, serial ) 86958dc63c9SDavid Howells __field(rxrpc_seq_t, seq ) 87058dc63c9SDavid Howells __field(rxrpc_seq_t, hard_ack ) 87158dc63c9SDavid Howells __field(rxrpc_seq_t, top ) 87258dc63c9SDavid Howells ), 87358dc63c9SDavid Howells 87458dc63c9SDavid Howells TP_fast_assign( 875a25e21f0SDavid Howells __entry->call = call->debug_id; 87658dc63c9SDavid Howells __entry->why = why; 87758dc63c9SDavid Howells __entry->serial = serial; 87858dc63c9SDavid Howells __entry->seq = seq; 87958dc63c9SDavid Howells __entry->hard_ack = call->rx_hard_ack; 88058dc63c9SDavid Howells __entry->top = call->rx_top; 88158dc63c9SDavid Howells ), 88258dc63c9SDavid Howells 883a25e21f0SDavid Howells TP_printk("c=%08x %s r=%08x q=%08x w=%08x-%08x", 88458dc63c9SDavid Howells __entry->call, 885b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_receive_traces), 88658dc63c9SDavid Howells __entry->serial, 88758dc63c9SDavid Howells __entry->seq, 88858dc63c9SDavid Howells __entry->hard_ack, 88958dc63c9SDavid Howells __entry->top) 89058dc63c9SDavid Howells ); 89158dc63c9SDavid Howells 89284997905SDavid Howells TRACE_EVENT(rxrpc_recvmsg, 89384997905SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_recvmsg_trace why, 89484997905SDavid Howells rxrpc_seq_t seq, unsigned int offset, unsigned int len, 89584997905SDavid Howells int ret), 89684997905SDavid Howells 89784997905SDavid Howells TP_ARGS(call, why, seq, offset, len, ret), 89884997905SDavid Howells 89984997905SDavid Howells TP_STRUCT__entry( 900a25e21f0SDavid Howells __field(unsigned int, call ) 90184997905SDavid Howells __field(enum rxrpc_recvmsg_trace, why ) 90284997905SDavid Howells __field(rxrpc_seq_t, seq ) 90384997905SDavid Howells __field(unsigned int, offset ) 90484997905SDavid Howells __field(unsigned int, len ) 90584997905SDavid Howells __field(int, ret ) 90684997905SDavid Howells ), 90784997905SDavid Howells 90884997905SDavid Howells TP_fast_assign( 909db9b2e0aSDavid Howells __entry->call = call ? call->debug_id : 0; 91084997905SDavid Howells __entry->why = why; 91184997905SDavid Howells __entry->seq = seq; 91284997905SDavid Howells __entry->offset = offset; 91384997905SDavid Howells __entry->len = len; 91484997905SDavid Howells __entry->ret = ret; 91584997905SDavid Howells ), 91684997905SDavid Howells 917a25e21f0SDavid Howells TP_printk("c=%08x %s q=%08x o=%u l=%u ret=%d", 91884997905SDavid Howells __entry->call, 919b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_recvmsg_traces), 92084997905SDavid Howells __entry->seq, 92184997905SDavid Howells __entry->offset, 92284997905SDavid Howells __entry->len, 92384997905SDavid Howells __entry->ret) 92484997905SDavid Howells ); 92584997905SDavid Howells 926cf1a6474SDavid Howells TRACE_EVENT(rxrpc_rtt_tx, 927cf1a6474SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_rtt_tx_trace why, 9284700c4d8SDavid Howells int slot, rxrpc_serial_t send_serial), 929cf1a6474SDavid Howells 9304700c4d8SDavid Howells TP_ARGS(call, why, slot, send_serial), 931cf1a6474SDavid Howells 932cf1a6474SDavid Howells TP_STRUCT__entry( 933a25e21f0SDavid Howells __field(unsigned int, call ) 934cf1a6474SDavid Howells __field(enum rxrpc_rtt_tx_trace, why ) 9354700c4d8SDavid Howells __field(int, slot ) 936cf1a6474SDavid Howells __field(rxrpc_serial_t, send_serial ) 937cf1a6474SDavid Howells ), 938cf1a6474SDavid Howells 939cf1a6474SDavid Howells TP_fast_assign( 940a25e21f0SDavid Howells __entry->call = call->debug_id; 941cf1a6474SDavid Howells __entry->why = why; 9424700c4d8SDavid Howells __entry->slot = slot; 943cf1a6474SDavid Howells __entry->send_serial = send_serial; 944cf1a6474SDavid Howells ), 945cf1a6474SDavid Howells 9464700c4d8SDavid Howells TP_printk("c=%08x [%d] %s sr=%08x", 947cf1a6474SDavid Howells __entry->call, 9484700c4d8SDavid Howells __entry->slot, 949b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_rtt_tx_traces), 950cf1a6474SDavid Howells __entry->send_serial) 951cf1a6474SDavid Howells ); 952cf1a6474SDavid Howells 953cf1a6474SDavid Howells TRACE_EVENT(rxrpc_rtt_rx, 954cf1a6474SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_rtt_rx_trace why, 9554700c4d8SDavid Howells int slot, 956cf1a6474SDavid Howells rxrpc_serial_t send_serial, rxrpc_serial_t resp_serial, 957c410bf01SDavid Howells u32 rtt, u32 rto), 958cf1a6474SDavid Howells 9594700c4d8SDavid Howells TP_ARGS(call, why, slot, send_serial, resp_serial, rtt, rto), 960cf1a6474SDavid Howells 961cf1a6474SDavid Howells TP_STRUCT__entry( 962a25e21f0SDavid Howells __field(unsigned int, call ) 963cf1a6474SDavid Howells __field(enum rxrpc_rtt_rx_trace, why ) 9644700c4d8SDavid Howells __field(int, slot ) 965cf1a6474SDavid Howells __field(rxrpc_serial_t, send_serial ) 966cf1a6474SDavid Howells __field(rxrpc_serial_t, resp_serial ) 967c410bf01SDavid Howells __field(u32, rtt ) 968c410bf01SDavid Howells __field(u32, rto ) 969cf1a6474SDavid Howells ), 970cf1a6474SDavid Howells 971cf1a6474SDavid Howells TP_fast_assign( 972a25e21f0SDavid Howells __entry->call = call->debug_id; 973cf1a6474SDavid Howells __entry->why = why; 9744700c4d8SDavid Howells __entry->slot = slot; 975cf1a6474SDavid Howells __entry->send_serial = send_serial; 976cf1a6474SDavid Howells __entry->resp_serial = resp_serial; 977cf1a6474SDavid Howells __entry->rtt = rtt; 978c410bf01SDavid Howells __entry->rto = rto; 979cf1a6474SDavid Howells ), 980cf1a6474SDavid Howells 9814700c4d8SDavid Howells TP_printk("c=%08x [%d] %s sr=%08x rr=%08x rtt=%u rto=%u", 982cf1a6474SDavid Howells __entry->call, 9834700c4d8SDavid Howells __entry->slot, 984b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_rtt_rx_traces), 985cf1a6474SDavid Howells __entry->send_serial, 986cf1a6474SDavid Howells __entry->resp_serial, 987cf1a6474SDavid Howells __entry->rtt, 988c410bf01SDavid Howells __entry->rto) 989cf1a6474SDavid Howells ); 990cf1a6474SDavid Howells 991fc7ab6d2SDavid Howells TRACE_EVENT(rxrpc_timer, 992fc7ab6d2SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_timer_trace why, 993a158bdd3SDavid Howells unsigned long now), 994fc7ab6d2SDavid Howells 995a158bdd3SDavid Howells TP_ARGS(call, why, now), 996fc7ab6d2SDavid Howells 997fc7ab6d2SDavid Howells TP_STRUCT__entry( 998a25e21f0SDavid Howells __field(unsigned int, call ) 999fc7ab6d2SDavid Howells __field(enum rxrpc_timer_trace, why ) 1000a158bdd3SDavid Howells __field(long, now ) 1001a158bdd3SDavid Howells __field(long, ack_at ) 1002bd1fdf8cSDavid Howells __field(long, ack_lost_at ) 1003a158bdd3SDavid Howells __field(long, resend_at ) 1004a158bdd3SDavid Howells __field(long, ping_at ) 1005a158bdd3SDavid Howells __field(long, expect_rx_by ) 1006a158bdd3SDavid Howells __field(long, expect_req_by ) 1007a158bdd3SDavid Howells __field(long, expect_term_by ) 1008a158bdd3SDavid Howells __field(long, timer ) 1009fc7ab6d2SDavid Howells ), 1010fc7ab6d2SDavid Howells 1011fc7ab6d2SDavid Howells TP_fast_assign( 1012a25e21f0SDavid Howells __entry->call = call->debug_id; 1013fc7ab6d2SDavid Howells __entry->why = why; 1014fc7ab6d2SDavid Howells __entry->now = now; 1015fc7ab6d2SDavid Howells __entry->ack_at = call->ack_at; 1016bd1fdf8cSDavid Howells __entry->ack_lost_at = call->ack_lost_at; 1017fc7ab6d2SDavid Howells __entry->resend_at = call->resend_at; 1018a158bdd3SDavid Howells __entry->expect_rx_by = call->expect_rx_by; 1019a158bdd3SDavid Howells __entry->expect_req_by = call->expect_req_by; 1020a158bdd3SDavid Howells __entry->expect_term_by = call->expect_term_by; 1021fc7ab6d2SDavid Howells __entry->timer = call->timer.expires; 1022fc7ab6d2SDavid Howells ), 1023fc7ab6d2SDavid Howells 1024a25e21f0SDavid Howells TP_printk("c=%08x %s a=%ld la=%ld r=%ld xr=%ld xq=%ld xt=%ld t=%ld", 1025fc7ab6d2SDavid Howells __entry->call, 1026b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_timer_traces), 1027a158bdd3SDavid Howells __entry->ack_at - __entry->now, 1028bd1fdf8cSDavid Howells __entry->ack_lost_at - __entry->now, 1029a158bdd3SDavid Howells __entry->resend_at - __entry->now, 1030a158bdd3SDavid Howells __entry->expect_rx_by - __entry->now, 1031a158bdd3SDavid Howells __entry->expect_req_by - __entry->now, 1032a158bdd3SDavid Howells __entry->expect_term_by - __entry->now, 1033a158bdd3SDavid Howells __entry->timer - __entry->now) 1034fc7ab6d2SDavid Howells ); 1035fc7ab6d2SDavid Howells 1036334dfbfcSDavid Howells TRACE_EVENT(rxrpc_timer_expired, 1037334dfbfcSDavid Howells TP_PROTO(struct rxrpc_call *call, unsigned long now), 1038334dfbfcSDavid Howells 1039334dfbfcSDavid Howells TP_ARGS(call, now), 1040334dfbfcSDavid Howells 1041334dfbfcSDavid Howells TP_STRUCT__entry( 1042334dfbfcSDavid Howells __field(unsigned int, call ) 1043334dfbfcSDavid Howells __field(long, now ) 1044334dfbfcSDavid Howells __field(long, ack_at ) 1045334dfbfcSDavid Howells __field(long, ack_lost_at ) 1046334dfbfcSDavid Howells __field(long, resend_at ) 1047334dfbfcSDavid Howells __field(long, ping_at ) 1048334dfbfcSDavid Howells __field(long, expect_rx_by ) 1049334dfbfcSDavid Howells __field(long, expect_req_by ) 1050334dfbfcSDavid Howells __field(long, expect_term_by ) 1051334dfbfcSDavid Howells __field(long, timer ) 1052334dfbfcSDavid Howells ), 1053334dfbfcSDavid Howells 1054334dfbfcSDavid Howells TP_fast_assign( 1055334dfbfcSDavid Howells __entry->call = call->debug_id; 1056334dfbfcSDavid Howells __entry->now = now; 1057334dfbfcSDavid Howells __entry->ack_at = call->ack_at; 1058334dfbfcSDavid Howells __entry->ack_lost_at = call->ack_lost_at; 1059334dfbfcSDavid Howells __entry->resend_at = call->resend_at; 1060334dfbfcSDavid Howells __entry->expect_rx_by = call->expect_rx_by; 1061334dfbfcSDavid Howells __entry->expect_req_by = call->expect_req_by; 1062334dfbfcSDavid Howells __entry->expect_term_by = call->expect_term_by; 1063334dfbfcSDavid Howells __entry->timer = call->timer.expires; 1064334dfbfcSDavid Howells ), 1065334dfbfcSDavid Howells 1066334dfbfcSDavid Howells TP_printk("c=%08x EXPIRED a=%ld la=%ld r=%ld xr=%ld xq=%ld xt=%ld t=%ld", 1067334dfbfcSDavid Howells __entry->call, 1068334dfbfcSDavid Howells __entry->ack_at - __entry->now, 1069334dfbfcSDavid Howells __entry->ack_lost_at - __entry->now, 1070334dfbfcSDavid Howells __entry->resend_at - __entry->now, 1071334dfbfcSDavid Howells __entry->expect_rx_by - __entry->now, 1072334dfbfcSDavid Howells __entry->expect_req_by - __entry->now, 1073334dfbfcSDavid Howells __entry->expect_term_by - __entry->now, 1074334dfbfcSDavid Howells __entry->timer - __entry->now) 1075334dfbfcSDavid Howells ); 1076334dfbfcSDavid Howells 107789b475abSDavid Howells TRACE_EVENT(rxrpc_rx_lose, 107889b475abSDavid Howells TP_PROTO(struct rxrpc_skb_priv *sp), 107989b475abSDavid Howells 108089b475abSDavid Howells TP_ARGS(sp), 108189b475abSDavid Howells 108289b475abSDavid Howells TP_STRUCT__entry( 108389b475abSDavid Howells __field_struct(struct rxrpc_host_header, hdr ) 108489b475abSDavid Howells ), 108589b475abSDavid Howells 108689b475abSDavid Howells TP_fast_assign( 108789b475abSDavid Howells memcpy(&__entry->hdr, &sp->hdr, sizeof(__entry->hdr)); 108889b475abSDavid Howells ), 108989b475abSDavid Howells 109089b475abSDavid Howells TP_printk("%08x:%08x:%08x:%04x %08x %08x %02x %02x %s *LOSE*", 109189b475abSDavid Howells __entry->hdr.epoch, __entry->hdr.cid, 109289b475abSDavid Howells __entry->hdr.callNumber, __entry->hdr.serviceId, 109389b475abSDavid Howells __entry->hdr.serial, __entry->hdr.seq, 109489b475abSDavid Howells __entry->hdr.type, __entry->hdr.flags, 1095b54a134aSDavid Howells __entry->hdr.type <= 15 ? 1096b54a134aSDavid Howells __print_symbolic(__entry->hdr.type, rxrpc_pkts) : "?UNK") 109789b475abSDavid Howells ); 109889b475abSDavid Howells 10999c7ad434SDavid Howells TRACE_EVENT(rxrpc_propose_ack, 11009c7ad434SDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_propose_ack_trace why, 1101*72f0c6fbSDavid Howells u8 ack_reason, rxrpc_serial_t serial, 1102*72f0c6fbSDavid Howells enum rxrpc_propose_ack_outcome outcome), 11039c7ad434SDavid Howells 1104*72f0c6fbSDavid Howells TP_ARGS(call, why, ack_reason, serial, outcome), 11059c7ad434SDavid Howells 11069c7ad434SDavid Howells TP_STRUCT__entry( 1107a25e21f0SDavid Howells __field(unsigned int, call ) 11089c7ad434SDavid Howells __field(enum rxrpc_propose_ack_trace, why ) 11099c7ad434SDavid Howells __field(rxrpc_serial_t, serial ) 11109c7ad434SDavid Howells __field(u8, ack_reason ) 11119c7ad434SDavid Howells __field(enum rxrpc_propose_ack_outcome, outcome ) 11129c7ad434SDavid Howells ), 11139c7ad434SDavid Howells 11149c7ad434SDavid Howells TP_fast_assign( 1115a25e21f0SDavid Howells __entry->call = call->debug_id; 11169c7ad434SDavid Howells __entry->why = why; 11179c7ad434SDavid Howells __entry->serial = serial; 11189c7ad434SDavid Howells __entry->ack_reason = ack_reason; 11199c7ad434SDavid Howells __entry->outcome = outcome; 11209c7ad434SDavid Howells ), 11219c7ad434SDavid Howells 1122*72f0c6fbSDavid Howells TP_printk("c=%08x %s %s r=%08x%s", 11239c7ad434SDavid Howells __entry->call, 1124b54a134aSDavid Howells __print_symbolic(__entry->why, rxrpc_propose_ack_traces), 1125b54a134aSDavid Howells __print_symbolic(__entry->ack_reason, rxrpc_ack_names), 11269c7ad434SDavid Howells __entry->serial, 1127b54a134aSDavid Howells __print_symbolic(__entry->outcome, rxrpc_propose_ack_outcomes)) 11289c7ad434SDavid Howells ); 11299c7ad434SDavid Howells 1130*72f0c6fbSDavid Howells TRACE_EVENT(rxrpc_send_ack, 1131*72f0c6fbSDavid Howells TP_PROTO(struct rxrpc_call *call, enum rxrpc_propose_ack_trace why, 1132*72f0c6fbSDavid Howells u8 ack_reason, rxrpc_serial_t serial), 1133*72f0c6fbSDavid Howells 1134*72f0c6fbSDavid Howells TP_ARGS(call, why, ack_reason, serial), 1135*72f0c6fbSDavid Howells 1136*72f0c6fbSDavid Howells TP_STRUCT__entry( 1137*72f0c6fbSDavid Howells __field(unsigned int, call ) 1138*72f0c6fbSDavid Howells __field(enum rxrpc_propose_ack_trace, why ) 1139*72f0c6fbSDavid Howells __field(rxrpc_serial_t, serial ) 1140*72f0c6fbSDavid Howells __field(u8, ack_reason ) 1141*72f0c6fbSDavid Howells ), 1142*72f0c6fbSDavid Howells 1143*72f0c6fbSDavid Howells TP_fast_assign( 1144*72f0c6fbSDavid Howells __entry->call = call->debug_id; 1145*72f0c6fbSDavid Howells __entry->why = why; 1146*72f0c6fbSDavid Howells __entry->serial = serial; 1147*72f0c6fbSDavid Howells __entry->ack_reason = ack_reason; 1148*72f0c6fbSDavid Howells ), 1149*72f0c6fbSDavid Howells 1150*72f0c6fbSDavid Howells TP_printk("c=%08x %s %s r=%08x", 1151*72f0c6fbSDavid Howells __entry->call, 1152*72f0c6fbSDavid Howells __print_symbolic(__entry->why, rxrpc_propose_ack_traces), 1153*72f0c6fbSDavid Howells __print_symbolic(__entry->ack_reason, rxrpc_ack_names), 1154*72f0c6fbSDavid Howells __entry->serial) 1155*72f0c6fbSDavid Howells ); 1156*72f0c6fbSDavid Howells 1157c6672e3fSDavid Howells TRACE_EVENT(rxrpc_retransmit, 1158c6672e3fSDavid Howells TP_PROTO(struct rxrpc_call *call, rxrpc_seq_t seq, u8 annotation, 1159c6672e3fSDavid Howells s64 expiry), 1160c6672e3fSDavid Howells 1161c6672e3fSDavid Howells TP_ARGS(call, seq, annotation, expiry), 1162c6672e3fSDavid Howells 1163c6672e3fSDavid Howells TP_STRUCT__entry( 1164a25e21f0SDavid Howells __field(unsigned int, call ) 1165c6672e3fSDavid Howells __field(rxrpc_seq_t, seq ) 1166c6672e3fSDavid Howells __field(u8, annotation ) 1167c6672e3fSDavid Howells __field(s64, expiry ) 1168c6672e3fSDavid Howells ), 1169c6672e3fSDavid Howells 1170c6672e3fSDavid Howells TP_fast_assign( 1171a25e21f0SDavid Howells __entry->call = call->debug_id; 1172c6672e3fSDavid Howells __entry->seq = seq; 1173c6672e3fSDavid Howells __entry->annotation = annotation; 1174c6672e3fSDavid Howells __entry->expiry = expiry; 1175c6672e3fSDavid Howells ), 1176c6672e3fSDavid Howells 1177a25e21f0SDavid Howells TP_printk("c=%08x q=%x a=%02x xp=%lld", 1178c6672e3fSDavid Howells __entry->call, 1179c6672e3fSDavid Howells __entry->seq, 1180c6672e3fSDavid Howells __entry->annotation, 1181c6672e3fSDavid Howells __entry->expiry) 1182c6672e3fSDavid Howells ); 1183c6672e3fSDavid Howells 118457494343SDavid Howells TRACE_EVENT(rxrpc_congest, 118557494343SDavid Howells TP_PROTO(struct rxrpc_call *call, struct rxrpc_ack_summary *summary, 118657494343SDavid Howells rxrpc_serial_t ack_serial, enum rxrpc_congest_change change), 118757494343SDavid Howells 118857494343SDavid Howells TP_ARGS(call, summary, ack_serial, change), 118957494343SDavid Howells 119057494343SDavid Howells TP_STRUCT__entry( 1191a25e21f0SDavid Howells __field(unsigned int, call ) 119257494343SDavid Howells __field(enum rxrpc_congest_change, change ) 119357494343SDavid Howells __field(rxrpc_seq_t, hard_ack ) 119457494343SDavid Howells __field(rxrpc_seq_t, top ) 119557494343SDavid Howells __field(rxrpc_seq_t, lowest_nak ) 119657494343SDavid Howells __field(rxrpc_serial_t, ack_serial ) 119757494343SDavid Howells __field_struct(struct rxrpc_ack_summary, sum ) 119857494343SDavid Howells ), 119957494343SDavid Howells 120057494343SDavid Howells TP_fast_assign( 1201a25e21f0SDavid Howells __entry->call = call->debug_id; 120257494343SDavid Howells __entry->change = change; 120357494343SDavid Howells __entry->hard_ack = call->tx_hard_ack; 120457494343SDavid Howells __entry->top = call->tx_top; 120557494343SDavid Howells __entry->lowest_nak = call->acks_lowest_nak; 120657494343SDavid Howells __entry->ack_serial = ack_serial; 120757494343SDavid Howells memcpy(&__entry->sum, summary, sizeof(__entry->sum)); 120857494343SDavid Howells ), 120957494343SDavid Howells 1210a25e21f0SDavid Howells TP_printk("c=%08x r=%08x %s q=%08x %s cw=%u ss=%u nr=%u,%u nw=%u,%u r=%u b=%u u=%u d=%u l=%x%s%s%s", 121157494343SDavid Howells __entry->call, 121257494343SDavid Howells __entry->ack_serial, 1213b54a134aSDavid Howells __print_symbolic(__entry->sum.ack_reason, rxrpc_ack_names), 121457494343SDavid Howells __entry->hard_ack, 1215b54a134aSDavid Howells __print_symbolic(__entry->sum.mode, rxrpc_congest_modes), 121657494343SDavid Howells __entry->sum.cwnd, 121757494343SDavid Howells __entry->sum.ssthresh, 121857494343SDavid Howells __entry->sum.nr_acks, __entry->sum.nr_nacks, 121957494343SDavid Howells __entry->sum.nr_new_acks, __entry->sum.nr_new_nacks, 122057494343SDavid Howells __entry->sum.nr_rot_new_acks, 122157494343SDavid Howells __entry->top - __entry->hard_ack, 122257494343SDavid Howells __entry->sum.cumulative_acks, 122357494343SDavid Howells __entry->sum.dup_acks, 122457494343SDavid Howells __entry->lowest_nak, __entry->sum.new_low_nack ? "!" : "", 1225b54a134aSDavid Howells __print_symbolic(__entry->change, rxrpc_congest_changes), 122657494343SDavid Howells __entry->sum.retrans_timeo ? " rTxTo" : "") 122757494343SDavid Howells ); 122857494343SDavid Howells 1229b1d9f7fdSDavid Howells TRACE_EVENT(rxrpc_disconnect_call, 1230b1d9f7fdSDavid Howells TP_PROTO(struct rxrpc_call *call), 1231b1d9f7fdSDavid Howells 1232b1d9f7fdSDavid Howells TP_ARGS(call), 1233b1d9f7fdSDavid Howells 1234b1d9f7fdSDavid Howells TP_STRUCT__entry( 1235a25e21f0SDavid Howells __field(unsigned int, call ) 1236b1d9f7fdSDavid Howells __field(u32, abort_code ) 1237b1d9f7fdSDavid Howells ), 1238b1d9f7fdSDavid Howells 1239b1d9f7fdSDavid Howells TP_fast_assign( 1240a25e21f0SDavid Howells __entry->call = call->debug_id; 1241b1d9f7fdSDavid Howells __entry->abort_code = call->abort_code; 1242b1d9f7fdSDavid Howells ), 1243b1d9f7fdSDavid Howells 1244a25e21f0SDavid Howells TP_printk("c=%08x ab=%08x", 1245b1d9f7fdSDavid Howells __entry->call, 1246b1d9f7fdSDavid Howells __entry->abort_code) 1247b1d9f7fdSDavid Howells ); 1248b1d9f7fdSDavid Howells 1249b1d9f7fdSDavid Howells TRACE_EVENT(rxrpc_improper_term, 1250b1d9f7fdSDavid Howells TP_PROTO(struct rxrpc_call *call), 1251b1d9f7fdSDavid Howells 1252b1d9f7fdSDavid Howells TP_ARGS(call), 1253b1d9f7fdSDavid Howells 1254b1d9f7fdSDavid Howells TP_STRUCT__entry( 1255a25e21f0SDavid Howells __field(unsigned int, call ) 1256b1d9f7fdSDavid Howells __field(u32, abort_code ) 1257b1d9f7fdSDavid Howells ), 1258b1d9f7fdSDavid Howells 1259b1d9f7fdSDavid Howells TP_fast_assign( 1260a25e21f0SDavid Howells __entry->call = call->debug_id; 1261b1d9f7fdSDavid Howells __entry->abort_code = call->abort_code; 1262b1d9f7fdSDavid Howells ), 1263b1d9f7fdSDavid Howells 1264a25e21f0SDavid Howells TP_printk("c=%08x ab=%08x", 1265b1d9f7fdSDavid Howells __entry->call, 1266b1d9f7fdSDavid Howells __entry->abort_code) 1267b1d9f7fdSDavid Howells ); 1268b1d9f7fdSDavid Howells 1269fb46f6eeSDavid Howells TRACE_EVENT(rxrpc_rx_eproto, 1270fb46f6eeSDavid Howells TP_PROTO(struct rxrpc_call *call, rxrpc_serial_t serial, 1271fb46f6eeSDavid Howells const char *why), 1272fb46f6eeSDavid Howells 1273fb46f6eeSDavid Howells TP_ARGS(call, serial, why), 1274fb46f6eeSDavid Howells 1275fb46f6eeSDavid Howells TP_STRUCT__entry( 1276a25e21f0SDavid Howells __field(unsigned int, call ) 1277fb46f6eeSDavid Howells __field(rxrpc_serial_t, serial ) 1278fb46f6eeSDavid Howells __field(const char *, why ) 1279fb46f6eeSDavid Howells ), 1280fb46f6eeSDavid Howells 1281fb46f6eeSDavid Howells TP_fast_assign( 128299f0eae6SDavid Howells __entry->call = call ? call->debug_id : 0; 1283fb46f6eeSDavid Howells __entry->serial = serial; 1284fb46f6eeSDavid Howells __entry->why = why; 1285fb46f6eeSDavid Howells ), 1286fb46f6eeSDavid Howells 1287a25e21f0SDavid Howells TP_printk("c=%08x EPROTO %08x %s", 1288fb46f6eeSDavid Howells __entry->call, 1289fb46f6eeSDavid Howells __entry->serial, 1290fb46f6eeSDavid Howells __entry->why) 1291fb46f6eeSDavid Howells ); 1292fb46f6eeSDavid Howells 129389ca6948SDavid Howells TRACE_EVENT(rxrpc_connect_call, 129489ca6948SDavid Howells TP_PROTO(struct rxrpc_call *call), 129589ca6948SDavid Howells 129689ca6948SDavid Howells TP_ARGS(call), 129789ca6948SDavid Howells 129889ca6948SDavid Howells TP_STRUCT__entry( 1299a25e21f0SDavid Howells __field(unsigned int, call ) 130089ca6948SDavid Howells __field(unsigned long, user_call_ID ) 130189ca6948SDavid Howells __field(u32, cid ) 130289ca6948SDavid Howells __field(u32, call_id ) 130389ca6948SDavid Howells ), 130489ca6948SDavid Howells 130589ca6948SDavid Howells TP_fast_assign( 1306a25e21f0SDavid Howells __entry->call = call->debug_id; 130789ca6948SDavid Howells __entry->user_call_ID = call->user_call_ID; 130889ca6948SDavid Howells __entry->cid = call->cid; 130989ca6948SDavid Howells __entry->call_id = call->call_id; 131089ca6948SDavid Howells ), 131189ca6948SDavid Howells 1312a25e21f0SDavid Howells TP_printk("c=%08x u=%p %08x:%08x", 131389ca6948SDavid Howells __entry->call, 131489ca6948SDavid Howells (void *)__entry->user_call_ID, 131589ca6948SDavid Howells __entry->cid, 131689ca6948SDavid Howells __entry->call_id) 131789ca6948SDavid Howells ); 131889ca6948SDavid Howells 1319827efed6SDavid Howells TRACE_EVENT(rxrpc_resend, 1320827efed6SDavid Howells TP_PROTO(struct rxrpc_call *call, int ix), 1321827efed6SDavid Howells 1322827efed6SDavid Howells TP_ARGS(call, ix), 1323827efed6SDavid Howells 1324827efed6SDavid Howells TP_STRUCT__entry( 1325a25e21f0SDavid Howells __field(unsigned int, call ) 1326827efed6SDavid Howells __field(int, ix ) 1327827efed6SDavid Howells __array(u8, anno, 64 ) 1328827efed6SDavid Howells ), 1329827efed6SDavid Howells 1330827efed6SDavid Howells TP_fast_assign( 1331a25e21f0SDavid Howells __entry->call = call->debug_id; 1332827efed6SDavid Howells __entry->ix = ix; 1333827efed6SDavid Howells memcpy(__entry->anno, call->rxtx_annotations, 64); 1334827efed6SDavid Howells ), 1335827efed6SDavid Howells 1336a25e21f0SDavid Howells TP_printk("c=%08x ix=%u a=%64phN", 1337827efed6SDavid Howells __entry->call, 1338827efed6SDavid Howells __entry->ix, 1339827efed6SDavid Howells __entry->anno) 1340827efed6SDavid Howells ); 1341827efed6SDavid Howells 1342494337c9SDavid Howells TRACE_EVENT(rxrpc_rx_icmp, 1343494337c9SDavid Howells TP_PROTO(struct rxrpc_peer *peer, struct sock_extended_err *ee, 1344494337c9SDavid Howells struct sockaddr_rxrpc *srx), 1345494337c9SDavid Howells 1346494337c9SDavid Howells TP_ARGS(peer, ee, srx), 1347494337c9SDavid Howells 1348494337c9SDavid Howells TP_STRUCT__entry( 1349494337c9SDavid Howells __field(unsigned int, peer ) 1350494337c9SDavid Howells __field_struct(struct sock_extended_err, ee ) 1351494337c9SDavid Howells __field_struct(struct sockaddr_rxrpc, srx ) 1352494337c9SDavid Howells ), 1353494337c9SDavid Howells 1354494337c9SDavid Howells TP_fast_assign( 1355494337c9SDavid Howells __entry->peer = peer->debug_id; 1356494337c9SDavid Howells memcpy(&__entry->ee, ee, sizeof(__entry->ee)); 1357494337c9SDavid Howells memcpy(&__entry->srx, srx, sizeof(__entry->srx)); 1358494337c9SDavid Howells ), 1359494337c9SDavid Howells 1360494337c9SDavid Howells TP_printk("P=%08x o=%u t=%u c=%u i=%u d=%u e=%d %pISp", 1361494337c9SDavid Howells __entry->peer, 1362494337c9SDavid Howells __entry->ee.ee_origin, 1363494337c9SDavid Howells __entry->ee.ee_type, 1364494337c9SDavid Howells __entry->ee.ee_code, 1365494337c9SDavid Howells __entry->ee.ee_info, 1366494337c9SDavid Howells __entry->ee.ee_data, 1367494337c9SDavid Howells __entry->ee.ee_errno, 1368494337c9SDavid Howells &__entry->srx.transport) 1369494337c9SDavid Howells ); 1370494337c9SDavid Howells 13716b47fe1dSDavid Howells TRACE_EVENT(rxrpc_tx_fail, 13726b47fe1dSDavid Howells TP_PROTO(unsigned int debug_id, rxrpc_serial_t serial, int ret, 13734764c0daSDavid Howells enum rxrpc_tx_point where), 13746b47fe1dSDavid Howells 13754764c0daSDavid Howells TP_ARGS(debug_id, serial, ret, where), 13766b47fe1dSDavid Howells 13776b47fe1dSDavid Howells TP_STRUCT__entry( 13786b47fe1dSDavid Howells __field(unsigned int, debug_id ) 13796b47fe1dSDavid Howells __field(rxrpc_serial_t, serial ) 13806b47fe1dSDavid Howells __field(int, ret ) 13814764c0daSDavid Howells __field(enum rxrpc_tx_point, where ) 13826b47fe1dSDavid Howells ), 13836b47fe1dSDavid Howells 13846b47fe1dSDavid Howells TP_fast_assign( 13856b47fe1dSDavid Howells __entry->debug_id = debug_id; 13866b47fe1dSDavid Howells __entry->serial = serial; 13876b47fe1dSDavid Howells __entry->ret = ret; 13884764c0daSDavid Howells __entry->where = where; 13896b47fe1dSDavid Howells ), 13906b47fe1dSDavid Howells 13916b47fe1dSDavid Howells TP_printk("c=%08x r=%x ret=%d %s", 13926b47fe1dSDavid Howells __entry->debug_id, 13936b47fe1dSDavid Howells __entry->serial, 13946b47fe1dSDavid Howells __entry->ret, 13954764c0daSDavid Howells __print_symbolic(__entry->where, rxrpc_tx_points)) 13966b47fe1dSDavid Howells ); 13976b47fe1dSDavid Howells 13981a025028SDavid Howells TRACE_EVENT(rxrpc_call_reset, 13991a025028SDavid Howells TP_PROTO(struct rxrpc_call *call), 14001a025028SDavid Howells 14011a025028SDavid Howells TP_ARGS(call), 14021a025028SDavid Howells 14031a025028SDavid Howells TP_STRUCT__entry( 14041a025028SDavid Howells __field(unsigned int, debug_id ) 14051a025028SDavid Howells __field(u32, cid ) 14061a025028SDavid Howells __field(u32, call_id ) 14071a025028SDavid Howells __field(rxrpc_serial_t, call_serial ) 14081a025028SDavid Howells __field(rxrpc_serial_t, conn_serial ) 14091a025028SDavid Howells __field(rxrpc_seq_t, tx_seq ) 14101a025028SDavid Howells __field(rxrpc_seq_t, rx_seq ) 14111a025028SDavid Howells ), 14121a025028SDavid Howells 14131a025028SDavid Howells TP_fast_assign( 14141a025028SDavid Howells __entry->debug_id = call->debug_id; 14151a025028SDavid Howells __entry->cid = call->cid; 14161a025028SDavid Howells __entry->call_id = call->call_id; 14171a025028SDavid Howells __entry->call_serial = call->rx_serial; 14181a025028SDavid Howells __entry->conn_serial = call->conn->hi_serial; 14191a025028SDavid Howells __entry->tx_seq = call->tx_hard_ack; 14209a3dedcfSDavid Howells __entry->rx_seq = call->rx_hard_ack; 14211a025028SDavid Howells ), 14221a025028SDavid Howells 14231a025028SDavid Howells TP_printk("c=%08x %08x:%08x r=%08x/%08x tx=%08x rx=%08x", 14241a025028SDavid Howells __entry->debug_id, 14251a025028SDavid Howells __entry->cid, __entry->call_id, 14261a025028SDavid Howells __entry->call_serial, __entry->conn_serial, 14271a025028SDavid Howells __entry->tx_seq, __entry->rx_seq) 14281a025028SDavid Howells ); 14291a025028SDavid Howells 14304272d303SDavid Howells TRACE_EVENT(rxrpc_notify_socket, 14314272d303SDavid Howells TP_PROTO(unsigned int debug_id, rxrpc_serial_t serial), 14324272d303SDavid Howells 14334272d303SDavid Howells TP_ARGS(debug_id, serial), 14344272d303SDavid Howells 14354272d303SDavid Howells TP_STRUCT__entry( 14364272d303SDavid Howells __field(unsigned int, debug_id ) 14374272d303SDavid Howells __field(rxrpc_serial_t, serial ) 14384272d303SDavid Howells ), 14394272d303SDavid Howells 14404272d303SDavid Howells TP_fast_assign( 14414272d303SDavid Howells __entry->debug_id = debug_id; 14424272d303SDavid Howells __entry->serial = serial; 14434272d303SDavid Howells ), 14444272d303SDavid Howells 14454272d303SDavid Howells TP_printk("c=%08x r=%08x", 14464272d303SDavid Howells __entry->debug_id, 14474272d303SDavid Howells __entry->serial) 14484272d303SDavid Howells ); 14494272d303SDavid Howells 1450d1f12947SDavid Howells TRACE_EVENT(rxrpc_rx_discard_ack, 1451d1f12947SDavid Howells TP_PROTO(unsigned int debug_id, rxrpc_serial_t serial, 1452d1f12947SDavid Howells rxrpc_seq_t first_soft_ack, rxrpc_seq_t call_ackr_first, 1453d1f12947SDavid Howells rxrpc_seq_t prev_pkt, rxrpc_seq_t call_ackr_prev), 1454d1f12947SDavid Howells 1455d1f12947SDavid Howells TP_ARGS(debug_id, serial, first_soft_ack, call_ackr_first, 1456d1f12947SDavid Howells prev_pkt, call_ackr_prev), 1457d1f12947SDavid Howells 1458d1f12947SDavid Howells TP_STRUCT__entry( 1459d1f12947SDavid Howells __field(unsigned int, debug_id ) 1460d1f12947SDavid Howells __field(rxrpc_serial_t, serial ) 1461d1f12947SDavid Howells __field(rxrpc_seq_t, first_soft_ack) 1462d1f12947SDavid Howells __field(rxrpc_seq_t, call_ackr_first) 1463d1f12947SDavid Howells __field(rxrpc_seq_t, prev_pkt) 1464d1f12947SDavid Howells __field(rxrpc_seq_t, call_ackr_prev) 1465d1f12947SDavid Howells ), 1466d1f12947SDavid Howells 1467d1f12947SDavid Howells TP_fast_assign( 1468d1f12947SDavid Howells __entry->debug_id = debug_id; 1469d1f12947SDavid Howells __entry->serial = serial; 1470d1f12947SDavid Howells __entry->first_soft_ack = first_soft_ack; 1471d1f12947SDavid Howells __entry->call_ackr_first = call_ackr_first; 1472d1f12947SDavid Howells __entry->prev_pkt = prev_pkt; 1473d1f12947SDavid Howells __entry->call_ackr_prev = call_ackr_prev; 1474d1f12947SDavid Howells ), 1475d1f12947SDavid Howells 1476d1f12947SDavid Howells TP_printk("c=%08x r=%08x %08x<%08x %08x<%08x", 1477d1f12947SDavid Howells __entry->debug_id, 1478d1f12947SDavid Howells __entry->serial, 1479d1f12947SDavid Howells __entry->first_soft_ack, 1480d1f12947SDavid Howells __entry->call_ackr_first, 1481d1f12947SDavid Howells __entry->prev_pkt, 1482d1f12947SDavid Howells __entry->call_ackr_prev) 1483d1f12947SDavid Howells ); 1484d1f12947SDavid Howells 14854d843be5SDavid Howells TRACE_EVENT(rxrpc_req_ack, 14864d843be5SDavid Howells TP_PROTO(unsigned int call_debug_id, rxrpc_seq_t seq, 14874d843be5SDavid Howells enum rxrpc_req_ack_trace why), 14884d843be5SDavid Howells 14894d843be5SDavid Howells TP_ARGS(call_debug_id, seq, why), 14904d843be5SDavid Howells 14914d843be5SDavid Howells TP_STRUCT__entry( 14924d843be5SDavid Howells __field(unsigned int, call_debug_id ) 14934d843be5SDavid Howells __field(rxrpc_seq_t, seq ) 14944d843be5SDavid Howells __field(enum rxrpc_req_ack_trace, why ) 14954d843be5SDavid Howells ), 14964d843be5SDavid Howells 14974d843be5SDavid Howells TP_fast_assign( 14984d843be5SDavid Howells __entry->call_debug_id = call_debug_id; 14994d843be5SDavid Howells __entry->seq = seq; 15004d843be5SDavid Howells __entry->why = why; 15014d843be5SDavid Howells ), 15024d843be5SDavid Howells 15034d843be5SDavid Howells TP_printk("c=%08x q=%08x REQ-%s", 15044d843be5SDavid Howells __entry->call_debug_id, 15054d843be5SDavid Howells __entry->seq, 15064d843be5SDavid Howells __print_symbolic(__entry->why, rxrpc_req_ack_traces)) 15074d843be5SDavid Howells ); 15084d843be5SDavid Howells 150902a19356SDavid Howells TRACE_EVENT(rxrpc_txbuf, 151002a19356SDavid Howells TP_PROTO(unsigned int debug_id, 151102a19356SDavid Howells unsigned int call_debug_id, rxrpc_seq_t seq, 151202a19356SDavid Howells int ref, enum rxrpc_txbuf_trace what), 151302a19356SDavid Howells 151402a19356SDavid Howells TP_ARGS(debug_id, call_debug_id, seq, ref, what), 151502a19356SDavid Howells 151602a19356SDavid Howells TP_STRUCT__entry( 151702a19356SDavid Howells __field(unsigned int, debug_id ) 151802a19356SDavid Howells __field(unsigned int, call_debug_id ) 151902a19356SDavid Howells __field(rxrpc_seq_t, seq ) 152002a19356SDavid Howells __field(int, ref ) 152102a19356SDavid Howells __field(enum rxrpc_txbuf_trace, what ) 152202a19356SDavid Howells ), 152302a19356SDavid Howells 152402a19356SDavid Howells TP_fast_assign( 152502a19356SDavid Howells __entry->debug_id = debug_id; 152602a19356SDavid Howells __entry->call_debug_id = call_debug_id; 152702a19356SDavid Howells __entry->seq = seq; 152802a19356SDavid Howells __entry->ref = ref; 152902a19356SDavid Howells __entry->what = what; 153002a19356SDavid Howells ), 153102a19356SDavid Howells 153202a19356SDavid Howells TP_printk("B=%08x c=%08x q=%08x %s r=%d", 153302a19356SDavid Howells __entry->debug_id, 153402a19356SDavid Howells __entry->call_debug_id, 153502a19356SDavid Howells __entry->seq, 153602a19356SDavid Howells __print_symbolic(__entry->what, rxrpc_txbuf_traces), 153702a19356SDavid Howells __entry->ref) 153802a19356SDavid Howells ); 153902a19356SDavid Howells 1540dc9fd093SDavid Howells #undef EM 1541dc9fd093SDavid Howells #undef E_ 1542df844fd4SDavid Howells #endif /* _TRACE_RXRPC_H */ 1543df844fd4SDavid Howells 1544df844fd4SDavid Howells /* This part must be outside protection */ 1545df844fd4SDavid Howells #include <trace/define_trace.h> 1546