1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* AF_RXRPC tracepoints 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved. 5*4882a593Smuzhiyun * Written by David Howells (dhowells@redhat.com) 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun #undef TRACE_SYSTEM 8*4882a593Smuzhiyun #define TRACE_SYSTEM rxrpc 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #if !defined(_TRACE_RXRPC_H) || defined(TRACE_HEADER_MULTI_READ) 11*4882a593Smuzhiyun #define _TRACE_RXRPC_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <linux/tracepoint.h> 14*4882a593Smuzhiyun #include <linux/errqueue.h> 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* 17*4882a593Smuzhiyun * Define enums for tracing information. 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun * These should all be kept sorted, making it easier to match the string 20*4882a593Smuzhiyun * mapping tables further on. 21*4882a593Smuzhiyun */ 22*4882a593Smuzhiyun #ifndef __RXRPC_DECLARE_TRACE_ENUMS_ONCE_ONLY 23*4882a593Smuzhiyun #define __RXRPC_DECLARE_TRACE_ENUMS_ONCE_ONLY 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun enum rxrpc_skb_trace { 26*4882a593Smuzhiyun rxrpc_skb_cleaned, 27*4882a593Smuzhiyun rxrpc_skb_freed, 28*4882a593Smuzhiyun rxrpc_skb_got, 29*4882a593Smuzhiyun rxrpc_skb_lost, 30*4882a593Smuzhiyun rxrpc_skb_new, 31*4882a593Smuzhiyun rxrpc_skb_purged, 32*4882a593Smuzhiyun rxrpc_skb_received, 33*4882a593Smuzhiyun rxrpc_skb_rotated, 34*4882a593Smuzhiyun rxrpc_skb_seen, 35*4882a593Smuzhiyun rxrpc_skb_unshared, 36*4882a593Smuzhiyun rxrpc_skb_unshared_nomem, 37*4882a593Smuzhiyun }; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun enum rxrpc_local_trace { 40*4882a593Smuzhiyun rxrpc_local_got, 41*4882a593Smuzhiyun rxrpc_local_new, 42*4882a593Smuzhiyun rxrpc_local_processing, 43*4882a593Smuzhiyun rxrpc_local_put, 44*4882a593Smuzhiyun rxrpc_local_queued, 45*4882a593Smuzhiyun }; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun enum rxrpc_peer_trace { 48*4882a593Smuzhiyun rxrpc_peer_got, 49*4882a593Smuzhiyun rxrpc_peer_new, 50*4882a593Smuzhiyun rxrpc_peer_processing, 51*4882a593Smuzhiyun rxrpc_peer_put, 52*4882a593Smuzhiyun }; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun enum rxrpc_conn_trace { 55*4882a593Smuzhiyun rxrpc_conn_got, 56*4882a593Smuzhiyun rxrpc_conn_new_client, 57*4882a593Smuzhiyun rxrpc_conn_new_service, 58*4882a593Smuzhiyun rxrpc_conn_put_client, 59*4882a593Smuzhiyun rxrpc_conn_put_service, 60*4882a593Smuzhiyun rxrpc_conn_queued, 61*4882a593Smuzhiyun rxrpc_conn_reap_service, 62*4882a593Smuzhiyun rxrpc_conn_seen, 63*4882a593Smuzhiyun }; 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun enum rxrpc_client_trace { 66*4882a593Smuzhiyun rxrpc_client_activate_chans, 67*4882a593Smuzhiyun rxrpc_client_alloc, 68*4882a593Smuzhiyun rxrpc_client_chan_activate, 69*4882a593Smuzhiyun rxrpc_client_chan_disconnect, 70*4882a593Smuzhiyun rxrpc_client_chan_pass, 71*4882a593Smuzhiyun rxrpc_client_chan_wait_failed, 72*4882a593Smuzhiyun rxrpc_client_cleanup, 73*4882a593Smuzhiyun rxrpc_client_discard, 74*4882a593Smuzhiyun rxrpc_client_duplicate, 75*4882a593Smuzhiyun rxrpc_client_exposed, 76*4882a593Smuzhiyun rxrpc_client_replace, 77*4882a593Smuzhiyun rxrpc_client_to_active, 78*4882a593Smuzhiyun rxrpc_client_to_idle, 79*4882a593Smuzhiyun }; 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun enum rxrpc_call_trace { 82*4882a593Smuzhiyun rxrpc_call_connected, 83*4882a593Smuzhiyun rxrpc_call_error, 84*4882a593Smuzhiyun rxrpc_call_got, 85*4882a593Smuzhiyun rxrpc_call_got_kernel, 86*4882a593Smuzhiyun rxrpc_call_got_timer, 87*4882a593Smuzhiyun rxrpc_call_got_userid, 88*4882a593Smuzhiyun rxrpc_call_new_client, 89*4882a593Smuzhiyun rxrpc_call_new_service, 90*4882a593Smuzhiyun rxrpc_call_put, 91*4882a593Smuzhiyun rxrpc_call_put_kernel, 92*4882a593Smuzhiyun rxrpc_call_put_noqueue, 93*4882a593Smuzhiyun rxrpc_call_put_notimer, 94*4882a593Smuzhiyun rxrpc_call_put_timer, 95*4882a593Smuzhiyun rxrpc_call_put_userid, 96*4882a593Smuzhiyun rxrpc_call_queued, 97*4882a593Smuzhiyun rxrpc_call_queued_ref, 98*4882a593Smuzhiyun rxrpc_call_release, 99*4882a593Smuzhiyun rxrpc_call_seen, 100*4882a593Smuzhiyun }; 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun enum rxrpc_transmit_trace { 103*4882a593Smuzhiyun rxrpc_transmit_await_reply, 104*4882a593Smuzhiyun rxrpc_transmit_end, 105*4882a593Smuzhiyun rxrpc_transmit_queue, 106*4882a593Smuzhiyun rxrpc_transmit_queue_last, 107*4882a593Smuzhiyun rxrpc_transmit_rotate, 108*4882a593Smuzhiyun rxrpc_transmit_rotate_last, 109*4882a593Smuzhiyun rxrpc_transmit_wait, 110*4882a593Smuzhiyun }; 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun enum rxrpc_receive_trace { 113*4882a593Smuzhiyun rxrpc_receive_end, 114*4882a593Smuzhiyun rxrpc_receive_front, 115*4882a593Smuzhiyun rxrpc_receive_incoming, 116*4882a593Smuzhiyun rxrpc_receive_queue, 117*4882a593Smuzhiyun rxrpc_receive_queue_last, 118*4882a593Smuzhiyun rxrpc_receive_rotate, 119*4882a593Smuzhiyun }; 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun enum rxrpc_recvmsg_trace { 122*4882a593Smuzhiyun rxrpc_recvmsg_cont, 123*4882a593Smuzhiyun rxrpc_recvmsg_data_return, 124*4882a593Smuzhiyun rxrpc_recvmsg_dequeue, 125*4882a593Smuzhiyun rxrpc_recvmsg_enter, 126*4882a593Smuzhiyun rxrpc_recvmsg_full, 127*4882a593Smuzhiyun rxrpc_recvmsg_hole, 128*4882a593Smuzhiyun rxrpc_recvmsg_next, 129*4882a593Smuzhiyun rxrpc_recvmsg_requeue, 130*4882a593Smuzhiyun rxrpc_recvmsg_return, 131*4882a593Smuzhiyun rxrpc_recvmsg_terminal, 132*4882a593Smuzhiyun rxrpc_recvmsg_to_be_accepted, 133*4882a593Smuzhiyun rxrpc_recvmsg_wait, 134*4882a593Smuzhiyun }; 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun enum rxrpc_rtt_tx_trace { 137*4882a593Smuzhiyun rxrpc_rtt_tx_cancel, 138*4882a593Smuzhiyun rxrpc_rtt_tx_data, 139*4882a593Smuzhiyun rxrpc_rtt_tx_no_slot, 140*4882a593Smuzhiyun rxrpc_rtt_tx_ping, 141*4882a593Smuzhiyun }; 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun enum rxrpc_rtt_rx_trace { 144*4882a593Smuzhiyun rxrpc_rtt_rx_cancel, 145*4882a593Smuzhiyun rxrpc_rtt_rx_lost, 146*4882a593Smuzhiyun rxrpc_rtt_rx_obsolete, 147*4882a593Smuzhiyun rxrpc_rtt_rx_ping_response, 148*4882a593Smuzhiyun rxrpc_rtt_rx_requested_ack, 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun enum rxrpc_timer_trace { 152*4882a593Smuzhiyun rxrpc_timer_begin, 153*4882a593Smuzhiyun rxrpc_timer_exp_ack, 154*4882a593Smuzhiyun rxrpc_timer_exp_hard, 155*4882a593Smuzhiyun rxrpc_timer_exp_idle, 156*4882a593Smuzhiyun rxrpc_timer_exp_keepalive, 157*4882a593Smuzhiyun rxrpc_timer_exp_lost_ack, 158*4882a593Smuzhiyun rxrpc_timer_exp_normal, 159*4882a593Smuzhiyun rxrpc_timer_exp_ping, 160*4882a593Smuzhiyun rxrpc_timer_exp_resend, 161*4882a593Smuzhiyun rxrpc_timer_expired, 162*4882a593Smuzhiyun rxrpc_timer_init_for_reply, 163*4882a593Smuzhiyun rxrpc_timer_init_for_send_reply, 164*4882a593Smuzhiyun rxrpc_timer_restart, 165*4882a593Smuzhiyun rxrpc_timer_set_for_ack, 166*4882a593Smuzhiyun rxrpc_timer_set_for_hard, 167*4882a593Smuzhiyun rxrpc_timer_set_for_idle, 168*4882a593Smuzhiyun rxrpc_timer_set_for_keepalive, 169*4882a593Smuzhiyun rxrpc_timer_set_for_lost_ack, 170*4882a593Smuzhiyun rxrpc_timer_set_for_normal, 171*4882a593Smuzhiyun rxrpc_timer_set_for_ping, 172*4882a593Smuzhiyun rxrpc_timer_set_for_resend, 173*4882a593Smuzhiyun rxrpc_timer_set_for_send, 174*4882a593Smuzhiyun }; 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun enum rxrpc_propose_ack_trace { 177*4882a593Smuzhiyun rxrpc_propose_ack_client_tx_end, 178*4882a593Smuzhiyun rxrpc_propose_ack_input_data, 179*4882a593Smuzhiyun rxrpc_propose_ack_ping_for_check_life, 180*4882a593Smuzhiyun rxrpc_propose_ack_ping_for_keepalive, 181*4882a593Smuzhiyun rxrpc_propose_ack_ping_for_lost_ack, 182*4882a593Smuzhiyun rxrpc_propose_ack_ping_for_lost_reply, 183*4882a593Smuzhiyun rxrpc_propose_ack_ping_for_params, 184*4882a593Smuzhiyun rxrpc_propose_ack_processing_op, 185*4882a593Smuzhiyun rxrpc_propose_ack_respond_to_ack, 186*4882a593Smuzhiyun rxrpc_propose_ack_respond_to_ping, 187*4882a593Smuzhiyun rxrpc_propose_ack_retry_tx, 188*4882a593Smuzhiyun rxrpc_propose_ack_rotate_rx, 189*4882a593Smuzhiyun rxrpc_propose_ack_terminal_ack, 190*4882a593Smuzhiyun }; 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun enum rxrpc_propose_ack_outcome { 193*4882a593Smuzhiyun rxrpc_propose_ack_subsume, 194*4882a593Smuzhiyun rxrpc_propose_ack_update, 195*4882a593Smuzhiyun rxrpc_propose_ack_use, 196*4882a593Smuzhiyun }; 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun enum rxrpc_congest_change { 199*4882a593Smuzhiyun rxrpc_cong_begin_retransmission, 200*4882a593Smuzhiyun rxrpc_cong_cleared_nacks, 201*4882a593Smuzhiyun rxrpc_cong_new_low_nack, 202*4882a593Smuzhiyun rxrpc_cong_no_change, 203*4882a593Smuzhiyun rxrpc_cong_progress, 204*4882a593Smuzhiyun rxrpc_cong_retransmit_again, 205*4882a593Smuzhiyun rxrpc_cong_rtt_window_end, 206*4882a593Smuzhiyun rxrpc_cong_saw_nack, 207*4882a593Smuzhiyun }; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun enum rxrpc_tx_point { 210*4882a593Smuzhiyun rxrpc_tx_point_call_abort, 211*4882a593Smuzhiyun rxrpc_tx_point_call_ack, 212*4882a593Smuzhiyun rxrpc_tx_point_call_data_frag, 213*4882a593Smuzhiyun rxrpc_tx_point_call_data_nofrag, 214*4882a593Smuzhiyun rxrpc_tx_point_call_final_resend, 215*4882a593Smuzhiyun rxrpc_tx_point_conn_abort, 216*4882a593Smuzhiyun rxrpc_tx_point_rxkad_challenge, 217*4882a593Smuzhiyun rxrpc_tx_point_rxkad_response, 218*4882a593Smuzhiyun rxrpc_tx_point_reject, 219*4882a593Smuzhiyun rxrpc_tx_point_version_keepalive, 220*4882a593Smuzhiyun rxrpc_tx_point_version_reply, 221*4882a593Smuzhiyun }; 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun #endif /* end __RXRPC_DECLARE_TRACE_ENUMS_ONCE_ONLY */ 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun /* 226*4882a593Smuzhiyun * Declare tracing information enums and their string mappings for display. 227*4882a593Smuzhiyun */ 228*4882a593Smuzhiyun #define rxrpc_skb_traces \ 229*4882a593Smuzhiyun EM(rxrpc_skb_cleaned, "CLN") \ 230*4882a593Smuzhiyun EM(rxrpc_skb_freed, "FRE") \ 231*4882a593Smuzhiyun EM(rxrpc_skb_got, "GOT") \ 232*4882a593Smuzhiyun EM(rxrpc_skb_lost, "*L*") \ 233*4882a593Smuzhiyun EM(rxrpc_skb_new, "NEW") \ 234*4882a593Smuzhiyun EM(rxrpc_skb_purged, "PUR") \ 235*4882a593Smuzhiyun EM(rxrpc_skb_received, "RCV") \ 236*4882a593Smuzhiyun EM(rxrpc_skb_rotated, "ROT") \ 237*4882a593Smuzhiyun EM(rxrpc_skb_seen, "SEE") \ 238*4882a593Smuzhiyun EM(rxrpc_skb_unshared, "UNS") \ 239*4882a593Smuzhiyun E_(rxrpc_skb_unshared_nomem, "US0") 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun #define rxrpc_local_traces \ 242*4882a593Smuzhiyun EM(rxrpc_local_got, "GOT") \ 243*4882a593Smuzhiyun EM(rxrpc_local_new, "NEW") \ 244*4882a593Smuzhiyun EM(rxrpc_local_processing, "PRO") \ 245*4882a593Smuzhiyun EM(rxrpc_local_put, "PUT") \ 246*4882a593Smuzhiyun E_(rxrpc_local_queued, "QUE") 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun #define rxrpc_peer_traces \ 249*4882a593Smuzhiyun EM(rxrpc_peer_got, "GOT") \ 250*4882a593Smuzhiyun EM(rxrpc_peer_new, "NEW") \ 251*4882a593Smuzhiyun EM(rxrpc_peer_processing, "PRO") \ 252*4882a593Smuzhiyun E_(rxrpc_peer_put, "PUT") 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun #define rxrpc_conn_traces \ 255*4882a593Smuzhiyun EM(rxrpc_conn_got, "GOT") \ 256*4882a593Smuzhiyun EM(rxrpc_conn_new_client, "NWc") \ 257*4882a593Smuzhiyun EM(rxrpc_conn_new_service, "NWs") \ 258*4882a593Smuzhiyun EM(rxrpc_conn_put_client, "PTc") \ 259*4882a593Smuzhiyun EM(rxrpc_conn_put_service, "PTs") \ 260*4882a593Smuzhiyun EM(rxrpc_conn_queued, "QUE") \ 261*4882a593Smuzhiyun EM(rxrpc_conn_reap_service, "RPs") \ 262*4882a593Smuzhiyun E_(rxrpc_conn_seen, "SEE") 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun #define rxrpc_client_traces \ 265*4882a593Smuzhiyun EM(rxrpc_client_activate_chans, "Activa") \ 266*4882a593Smuzhiyun EM(rxrpc_client_alloc, "Alloc ") \ 267*4882a593Smuzhiyun EM(rxrpc_client_chan_activate, "ChActv") \ 268*4882a593Smuzhiyun EM(rxrpc_client_chan_disconnect, "ChDisc") \ 269*4882a593Smuzhiyun EM(rxrpc_client_chan_pass, "ChPass") \ 270*4882a593Smuzhiyun EM(rxrpc_client_chan_wait_failed, "ChWtFl") \ 271*4882a593Smuzhiyun EM(rxrpc_client_cleanup, "Clean ") \ 272*4882a593Smuzhiyun EM(rxrpc_client_discard, "Discar") \ 273*4882a593Smuzhiyun EM(rxrpc_client_duplicate, "Duplic") \ 274*4882a593Smuzhiyun EM(rxrpc_client_exposed, "Expose") \ 275*4882a593Smuzhiyun EM(rxrpc_client_replace, "Replac") \ 276*4882a593Smuzhiyun EM(rxrpc_client_to_active, "->Actv") \ 277*4882a593Smuzhiyun E_(rxrpc_client_to_idle, "->Idle") 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun #define rxrpc_call_traces \ 280*4882a593Smuzhiyun EM(rxrpc_call_connected, "CON") \ 281*4882a593Smuzhiyun EM(rxrpc_call_error, "*E*") \ 282*4882a593Smuzhiyun EM(rxrpc_call_got, "GOT") \ 283*4882a593Smuzhiyun EM(rxrpc_call_got_kernel, "Gke") \ 284*4882a593Smuzhiyun EM(rxrpc_call_got_timer, "GTM") \ 285*4882a593Smuzhiyun EM(rxrpc_call_got_userid, "Gus") \ 286*4882a593Smuzhiyun EM(rxrpc_call_new_client, "NWc") \ 287*4882a593Smuzhiyun EM(rxrpc_call_new_service, "NWs") \ 288*4882a593Smuzhiyun EM(rxrpc_call_put, "PUT") \ 289*4882a593Smuzhiyun EM(rxrpc_call_put_kernel, "Pke") \ 290*4882a593Smuzhiyun EM(rxrpc_call_put_noqueue, "PnQ") \ 291*4882a593Smuzhiyun EM(rxrpc_call_put_notimer, "PnT") \ 292*4882a593Smuzhiyun EM(rxrpc_call_put_timer, "PTM") \ 293*4882a593Smuzhiyun EM(rxrpc_call_put_userid, "Pus") \ 294*4882a593Smuzhiyun EM(rxrpc_call_queued, "QUE") \ 295*4882a593Smuzhiyun EM(rxrpc_call_queued_ref, "QUR") \ 296*4882a593Smuzhiyun EM(rxrpc_call_release, "RLS") \ 297*4882a593Smuzhiyun E_(rxrpc_call_seen, "SEE") 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun #define rxrpc_transmit_traces \ 300*4882a593Smuzhiyun EM(rxrpc_transmit_await_reply, "AWR") \ 301*4882a593Smuzhiyun EM(rxrpc_transmit_end, "END") \ 302*4882a593Smuzhiyun EM(rxrpc_transmit_queue, "QUE") \ 303*4882a593Smuzhiyun EM(rxrpc_transmit_queue_last, "QLS") \ 304*4882a593Smuzhiyun EM(rxrpc_transmit_rotate, "ROT") \ 305*4882a593Smuzhiyun EM(rxrpc_transmit_rotate_last, "RLS") \ 306*4882a593Smuzhiyun E_(rxrpc_transmit_wait, "WAI") 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun #define rxrpc_receive_traces \ 309*4882a593Smuzhiyun EM(rxrpc_receive_end, "END") \ 310*4882a593Smuzhiyun EM(rxrpc_receive_front, "FRN") \ 311*4882a593Smuzhiyun EM(rxrpc_receive_incoming, "INC") \ 312*4882a593Smuzhiyun EM(rxrpc_receive_queue, "QUE") \ 313*4882a593Smuzhiyun EM(rxrpc_receive_queue_last, "QLS") \ 314*4882a593Smuzhiyun E_(rxrpc_receive_rotate, "ROT") 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun #define rxrpc_recvmsg_traces \ 317*4882a593Smuzhiyun EM(rxrpc_recvmsg_cont, "CONT") \ 318*4882a593Smuzhiyun EM(rxrpc_recvmsg_data_return, "DATA") \ 319*4882a593Smuzhiyun EM(rxrpc_recvmsg_dequeue, "DEQU") \ 320*4882a593Smuzhiyun EM(rxrpc_recvmsg_enter, "ENTR") \ 321*4882a593Smuzhiyun EM(rxrpc_recvmsg_full, "FULL") \ 322*4882a593Smuzhiyun EM(rxrpc_recvmsg_hole, "HOLE") \ 323*4882a593Smuzhiyun EM(rxrpc_recvmsg_next, "NEXT") \ 324*4882a593Smuzhiyun EM(rxrpc_recvmsg_requeue, "REQU") \ 325*4882a593Smuzhiyun EM(rxrpc_recvmsg_return, "RETN") \ 326*4882a593Smuzhiyun EM(rxrpc_recvmsg_terminal, "TERM") \ 327*4882a593Smuzhiyun EM(rxrpc_recvmsg_to_be_accepted, "TBAC") \ 328*4882a593Smuzhiyun E_(rxrpc_recvmsg_wait, "WAIT") 329*4882a593Smuzhiyun 330*4882a593Smuzhiyun #define rxrpc_rtt_tx_traces \ 331*4882a593Smuzhiyun EM(rxrpc_rtt_tx_cancel, "CNCE") \ 332*4882a593Smuzhiyun EM(rxrpc_rtt_tx_data, "DATA") \ 333*4882a593Smuzhiyun EM(rxrpc_rtt_tx_no_slot, "FULL") \ 334*4882a593Smuzhiyun E_(rxrpc_rtt_tx_ping, "PING") 335*4882a593Smuzhiyun 336*4882a593Smuzhiyun #define rxrpc_rtt_rx_traces \ 337*4882a593Smuzhiyun EM(rxrpc_rtt_rx_cancel, "CNCL") \ 338*4882a593Smuzhiyun EM(rxrpc_rtt_rx_obsolete, "OBSL") \ 339*4882a593Smuzhiyun EM(rxrpc_rtt_rx_lost, "LOST") \ 340*4882a593Smuzhiyun EM(rxrpc_rtt_rx_ping_response, "PONG") \ 341*4882a593Smuzhiyun E_(rxrpc_rtt_rx_requested_ack, "RACK") 342*4882a593Smuzhiyun 343*4882a593Smuzhiyun #define rxrpc_timer_traces \ 344*4882a593Smuzhiyun EM(rxrpc_timer_begin, "Begin ") \ 345*4882a593Smuzhiyun EM(rxrpc_timer_expired, "*EXPR*") \ 346*4882a593Smuzhiyun EM(rxrpc_timer_exp_ack, "ExpAck") \ 347*4882a593Smuzhiyun EM(rxrpc_timer_exp_hard, "ExpHrd") \ 348*4882a593Smuzhiyun EM(rxrpc_timer_exp_idle, "ExpIdl") \ 349*4882a593Smuzhiyun EM(rxrpc_timer_exp_keepalive, "ExpKA ") \ 350*4882a593Smuzhiyun EM(rxrpc_timer_exp_lost_ack, "ExpLoA") \ 351*4882a593Smuzhiyun EM(rxrpc_timer_exp_normal, "ExpNml") \ 352*4882a593Smuzhiyun EM(rxrpc_timer_exp_ping, "ExpPng") \ 353*4882a593Smuzhiyun EM(rxrpc_timer_exp_resend, "ExpRsn") \ 354*4882a593Smuzhiyun EM(rxrpc_timer_init_for_reply, "IniRpl") \ 355*4882a593Smuzhiyun EM(rxrpc_timer_init_for_send_reply, "SndRpl") \ 356*4882a593Smuzhiyun EM(rxrpc_timer_restart, "Restrt") \ 357*4882a593Smuzhiyun EM(rxrpc_timer_set_for_ack, "SetAck") \ 358*4882a593Smuzhiyun EM(rxrpc_timer_set_for_hard, "SetHrd") \ 359*4882a593Smuzhiyun EM(rxrpc_timer_set_for_idle, "SetIdl") \ 360*4882a593Smuzhiyun EM(rxrpc_timer_set_for_keepalive, "KeepAl") \ 361*4882a593Smuzhiyun EM(rxrpc_timer_set_for_lost_ack, "SetLoA") \ 362*4882a593Smuzhiyun EM(rxrpc_timer_set_for_normal, "SetNml") \ 363*4882a593Smuzhiyun EM(rxrpc_timer_set_for_ping, "SetPng") \ 364*4882a593Smuzhiyun EM(rxrpc_timer_set_for_resend, "SetRTx") \ 365*4882a593Smuzhiyun E_(rxrpc_timer_set_for_send, "SetSnd") 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun #define rxrpc_propose_ack_traces \ 368*4882a593Smuzhiyun EM(rxrpc_propose_ack_client_tx_end, "ClTxEnd") \ 369*4882a593Smuzhiyun EM(rxrpc_propose_ack_input_data, "DataIn ") \ 370*4882a593Smuzhiyun EM(rxrpc_propose_ack_ping_for_check_life, "ChkLife") \ 371*4882a593Smuzhiyun EM(rxrpc_propose_ack_ping_for_keepalive, "KeepAlv") \ 372*4882a593Smuzhiyun EM(rxrpc_propose_ack_ping_for_lost_ack, "LostAck") \ 373*4882a593Smuzhiyun EM(rxrpc_propose_ack_ping_for_lost_reply, "LostRpl") \ 374*4882a593Smuzhiyun EM(rxrpc_propose_ack_ping_for_params, "Params ") \ 375*4882a593Smuzhiyun EM(rxrpc_propose_ack_processing_op, "ProcOp ") \ 376*4882a593Smuzhiyun EM(rxrpc_propose_ack_respond_to_ack, "Rsp2Ack") \ 377*4882a593Smuzhiyun EM(rxrpc_propose_ack_respond_to_ping, "Rsp2Png") \ 378*4882a593Smuzhiyun EM(rxrpc_propose_ack_retry_tx, "RetryTx") \ 379*4882a593Smuzhiyun EM(rxrpc_propose_ack_rotate_rx, "RxAck ") \ 380*4882a593Smuzhiyun E_(rxrpc_propose_ack_terminal_ack, "ClTerm ") 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun #define rxrpc_propose_ack_outcomes \ 383*4882a593Smuzhiyun EM(rxrpc_propose_ack_subsume, " Subsume") \ 384*4882a593Smuzhiyun EM(rxrpc_propose_ack_update, " Update") \ 385*4882a593Smuzhiyun E_(rxrpc_propose_ack_use, " New") 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun #define rxrpc_congest_modes \ 388*4882a593Smuzhiyun EM(RXRPC_CALL_CONGEST_AVOIDANCE, "CongAvoid") \ 389*4882a593Smuzhiyun EM(RXRPC_CALL_FAST_RETRANSMIT, "FastReTx ") \ 390*4882a593Smuzhiyun EM(RXRPC_CALL_PACKET_LOSS, "PktLoss ") \ 391*4882a593Smuzhiyun E_(RXRPC_CALL_SLOW_START, "SlowStart") 392*4882a593Smuzhiyun 393*4882a593Smuzhiyun #define rxrpc_congest_changes \ 394*4882a593Smuzhiyun EM(rxrpc_cong_begin_retransmission, " Retrans") \ 395*4882a593Smuzhiyun EM(rxrpc_cong_cleared_nacks, " Cleared") \ 396*4882a593Smuzhiyun EM(rxrpc_cong_new_low_nack, " NewLowN") \ 397*4882a593Smuzhiyun EM(rxrpc_cong_no_change, " -") \ 398*4882a593Smuzhiyun EM(rxrpc_cong_progress, " Progres") \ 399*4882a593Smuzhiyun EM(rxrpc_cong_retransmit_again, " ReTxAgn") \ 400*4882a593Smuzhiyun EM(rxrpc_cong_rtt_window_end, " RttWinE") \ 401*4882a593Smuzhiyun E_(rxrpc_cong_saw_nack, " SawNack") 402*4882a593Smuzhiyun 403*4882a593Smuzhiyun #define rxrpc_pkts \ 404*4882a593Smuzhiyun EM(0, "?00") \ 405*4882a593Smuzhiyun EM(RXRPC_PACKET_TYPE_DATA, "DATA") \ 406*4882a593Smuzhiyun EM(RXRPC_PACKET_TYPE_ACK, "ACK") \ 407*4882a593Smuzhiyun EM(RXRPC_PACKET_TYPE_BUSY, "BUSY") \ 408*4882a593Smuzhiyun EM(RXRPC_PACKET_TYPE_ABORT, "ABORT") \ 409*4882a593Smuzhiyun EM(RXRPC_PACKET_TYPE_ACKALL, "ACKALL") \ 410*4882a593Smuzhiyun EM(RXRPC_PACKET_TYPE_CHALLENGE, "CHALL") \ 411*4882a593Smuzhiyun EM(RXRPC_PACKET_TYPE_RESPONSE, "RESP") \ 412*4882a593Smuzhiyun EM(RXRPC_PACKET_TYPE_DEBUG, "DEBUG") \ 413*4882a593Smuzhiyun EM(9, "?09") \ 414*4882a593Smuzhiyun EM(10, "?10") \ 415*4882a593Smuzhiyun EM(11, "?11") \ 416*4882a593Smuzhiyun EM(12, "?12") \ 417*4882a593Smuzhiyun EM(RXRPC_PACKET_TYPE_VERSION, "VERSION") \ 418*4882a593Smuzhiyun EM(14, "?14") \ 419*4882a593Smuzhiyun E_(15, "?15") 420*4882a593Smuzhiyun 421*4882a593Smuzhiyun #define rxrpc_ack_names \ 422*4882a593Smuzhiyun EM(0, "-0-") \ 423*4882a593Smuzhiyun EM(RXRPC_ACK_REQUESTED, "REQ") \ 424*4882a593Smuzhiyun EM(RXRPC_ACK_DUPLICATE, "DUP") \ 425*4882a593Smuzhiyun EM(RXRPC_ACK_OUT_OF_SEQUENCE, "OOS") \ 426*4882a593Smuzhiyun EM(RXRPC_ACK_EXCEEDS_WINDOW, "WIN") \ 427*4882a593Smuzhiyun EM(RXRPC_ACK_NOSPACE, "MEM") \ 428*4882a593Smuzhiyun EM(RXRPC_ACK_PING, "PNG") \ 429*4882a593Smuzhiyun EM(RXRPC_ACK_PING_RESPONSE, "PNR") \ 430*4882a593Smuzhiyun EM(RXRPC_ACK_DELAY, "DLY") \ 431*4882a593Smuzhiyun EM(RXRPC_ACK_IDLE, "IDL") \ 432*4882a593Smuzhiyun E_(RXRPC_ACK__INVALID, "-?-") 433*4882a593Smuzhiyun 434*4882a593Smuzhiyun #define rxrpc_completions \ 435*4882a593Smuzhiyun EM(RXRPC_CALL_SUCCEEDED, "Succeeded") \ 436*4882a593Smuzhiyun EM(RXRPC_CALL_REMOTELY_ABORTED, "RemoteAbort") \ 437*4882a593Smuzhiyun EM(RXRPC_CALL_LOCALLY_ABORTED, "LocalAbort") \ 438*4882a593Smuzhiyun EM(RXRPC_CALL_LOCAL_ERROR, "LocalError") \ 439*4882a593Smuzhiyun E_(RXRPC_CALL_NETWORK_ERROR, "NetError") 440*4882a593Smuzhiyun 441*4882a593Smuzhiyun #define rxrpc_tx_points \ 442*4882a593Smuzhiyun EM(rxrpc_tx_point_call_abort, "CallAbort") \ 443*4882a593Smuzhiyun EM(rxrpc_tx_point_call_ack, "CallAck") \ 444*4882a593Smuzhiyun EM(rxrpc_tx_point_call_data_frag, "CallDataFrag") \ 445*4882a593Smuzhiyun EM(rxrpc_tx_point_call_data_nofrag, "CallDataNofrag") \ 446*4882a593Smuzhiyun EM(rxrpc_tx_point_call_final_resend, "CallFinalResend") \ 447*4882a593Smuzhiyun EM(rxrpc_tx_point_conn_abort, "ConnAbort") \ 448*4882a593Smuzhiyun EM(rxrpc_tx_point_reject, "Reject") \ 449*4882a593Smuzhiyun EM(rxrpc_tx_point_rxkad_challenge, "RxkadChall") \ 450*4882a593Smuzhiyun EM(rxrpc_tx_point_rxkad_response, "RxkadResp") \ 451*4882a593Smuzhiyun EM(rxrpc_tx_point_version_keepalive, "VerKeepalive") \ 452*4882a593Smuzhiyun E_(rxrpc_tx_point_version_reply, "VerReply") 453*4882a593Smuzhiyun 454*4882a593Smuzhiyun /* 455*4882a593Smuzhiyun * Export enum symbols via userspace. 456*4882a593Smuzhiyun */ 457*4882a593Smuzhiyun #undef EM 458*4882a593Smuzhiyun #undef E_ 459*4882a593Smuzhiyun #define EM(a, b) TRACE_DEFINE_ENUM(a); 460*4882a593Smuzhiyun #define E_(a, b) TRACE_DEFINE_ENUM(a); 461*4882a593Smuzhiyun 462*4882a593Smuzhiyun rxrpc_skb_traces; 463*4882a593Smuzhiyun rxrpc_local_traces; 464*4882a593Smuzhiyun rxrpc_conn_traces; 465*4882a593Smuzhiyun rxrpc_client_traces; 466*4882a593Smuzhiyun rxrpc_call_traces; 467*4882a593Smuzhiyun rxrpc_transmit_traces; 468*4882a593Smuzhiyun rxrpc_receive_traces; 469*4882a593Smuzhiyun rxrpc_recvmsg_traces; 470*4882a593Smuzhiyun rxrpc_rtt_tx_traces; 471*4882a593Smuzhiyun rxrpc_rtt_rx_traces; 472*4882a593Smuzhiyun rxrpc_timer_traces; 473*4882a593Smuzhiyun rxrpc_propose_ack_traces; 474*4882a593Smuzhiyun rxrpc_propose_ack_outcomes; 475*4882a593Smuzhiyun rxrpc_congest_modes; 476*4882a593Smuzhiyun rxrpc_congest_changes; 477*4882a593Smuzhiyun rxrpc_tx_points; 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun /* 480*4882a593Smuzhiyun * Now redefine the EM() and E_() macros to map the enums to the strings that 481*4882a593Smuzhiyun * will be printed in the output. 482*4882a593Smuzhiyun */ 483*4882a593Smuzhiyun #undef EM 484*4882a593Smuzhiyun #undef E_ 485*4882a593Smuzhiyun #define EM(a, b) { a, b }, 486*4882a593Smuzhiyun #define E_(a, b) { a, b } 487*4882a593Smuzhiyun 488*4882a593Smuzhiyun TRACE_EVENT(rxrpc_local, 489*4882a593Smuzhiyun TP_PROTO(unsigned int local_debug_id, enum rxrpc_local_trace op, 490*4882a593Smuzhiyun int usage, const void *where), 491*4882a593Smuzhiyun 492*4882a593Smuzhiyun TP_ARGS(local_debug_id, op, usage, where), 493*4882a593Smuzhiyun 494*4882a593Smuzhiyun TP_STRUCT__entry( 495*4882a593Smuzhiyun __field(unsigned int, local ) 496*4882a593Smuzhiyun __field(int, op ) 497*4882a593Smuzhiyun __field(int, usage ) 498*4882a593Smuzhiyun __field(const void *, where ) 499*4882a593Smuzhiyun ), 500*4882a593Smuzhiyun 501*4882a593Smuzhiyun TP_fast_assign( 502*4882a593Smuzhiyun __entry->local = local_debug_id; 503*4882a593Smuzhiyun __entry->op = op; 504*4882a593Smuzhiyun __entry->usage = usage; 505*4882a593Smuzhiyun __entry->where = where; 506*4882a593Smuzhiyun ), 507*4882a593Smuzhiyun 508*4882a593Smuzhiyun TP_printk("L=%08x %s u=%d sp=%pSR", 509*4882a593Smuzhiyun __entry->local, 510*4882a593Smuzhiyun __print_symbolic(__entry->op, rxrpc_local_traces), 511*4882a593Smuzhiyun __entry->usage, 512*4882a593Smuzhiyun __entry->where) 513*4882a593Smuzhiyun ); 514*4882a593Smuzhiyun 515*4882a593Smuzhiyun TRACE_EVENT(rxrpc_peer, 516*4882a593Smuzhiyun TP_PROTO(unsigned int peer_debug_id, enum rxrpc_peer_trace op, 517*4882a593Smuzhiyun int usage, const void *where), 518*4882a593Smuzhiyun 519*4882a593Smuzhiyun TP_ARGS(peer_debug_id, op, usage, where), 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun TP_STRUCT__entry( 522*4882a593Smuzhiyun __field(unsigned int, peer ) 523*4882a593Smuzhiyun __field(int, op ) 524*4882a593Smuzhiyun __field(int, usage ) 525*4882a593Smuzhiyun __field(const void *, where ) 526*4882a593Smuzhiyun ), 527*4882a593Smuzhiyun 528*4882a593Smuzhiyun TP_fast_assign( 529*4882a593Smuzhiyun __entry->peer = peer_debug_id; 530*4882a593Smuzhiyun __entry->op = op; 531*4882a593Smuzhiyun __entry->usage = usage; 532*4882a593Smuzhiyun __entry->where = where; 533*4882a593Smuzhiyun ), 534*4882a593Smuzhiyun 535*4882a593Smuzhiyun TP_printk("P=%08x %s u=%d sp=%pSR", 536*4882a593Smuzhiyun __entry->peer, 537*4882a593Smuzhiyun __print_symbolic(__entry->op, rxrpc_peer_traces), 538*4882a593Smuzhiyun __entry->usage, 539*4882a593Smuzhiyun __entry->where) 540*4882a593Smuzhiyun ); 541*4882a593Smuzhiyun 542*4882a593Smuzhiyun TRACE_EVENT(rxrpc_conn, 543*4882a593Smuzhiyun TP_PROTO(unsigned int conn_debug_id, enum rxrpc_conn_trace op, 544*4882a593Smuzhiyun int usage, const void *where), 545*4882a593Smuzhiyun 546*4882a593Smuzhiyun TP_ARGS(conn_debug_id, op, usage, where), 547*4882a593Smuzhiyun 548*4882a593Smuzhiyun TP_STRUCT__entry( 549*4882a593Smuzhiyun __field(unsigned int, conn ) 550*4882a593Smuzhiyun __field(int, op ) 551*4882a593Smuzhiyun __field(int, usage ) 552*4882a593Smuzhiyun __field(const void *, where ) 553*4882a593Smuzhiyun ), 554*4882a593Smuzhiyun 555*4882a593Smuzhiyun TP_fast_assign( 556*4882a593Smuzhiyun __entry->conn = conn_debug_id; 557*4882a593Smuzhiyun __entry->op = op; 558*4882a593Smuzhiyun __entry->usage = usage; 559*4882a593Smuzhiyun __entry->where = where; 560*4882a593Smuzhiyun ), 561*4882a593Smuzhiyun 562*4882a593Smuzhiyun TP_printk("C=%08x %s u=%d sp=%pSR", 563*4882a593Smuzhiyun __entry->conn, 564*4882a593Smuzhiyun __print_symbolic(__entry->op, rxrpc_conn_traces), 565*4882a593Smuzhiyun __entry->usage, 566*4882a593Smuzhiyun __entry->where) 567*4882a593Smuzhiyun ); 568*4882a593Smuzhiyun 569*4882a593Smuzhiyun TRACE_EVENT(rxrpc_client, 570*4882a593Smuzhiyun TP_PROTO(struct rxrpc_connection *conn, int channel, 571*4882a593Smuzhiyun enum rxrpc_client_trace op), 572*4882a593Smuzhiyun 573*4882a593Smuzhiyun TP_ARGS(conn, channel, op), 574*4882a593Smuzhiyun 575*4882a593Smuzhiyun TP_STRUCT__entry( 576*4882a593Smuzhiyun __field(unsigned int, conn ) 577*4882a593Smuzhiyun __field(u32, cid ) 578*4882a593Smuzhiyun __field(int, channel ) 579*4882a593Smuzhiyun __field(int, usage ) 580*4882a593Smuzhiyun __field(enum rxrpc_client_trace, op ) 581*4882a593Smuzhiyun ), 582*4882a593Smuzhiyun 583*4882a593Smuzhiyun TP_fast_assign( 584*4882a593Smuzhiyun __entry->conn = conn ? conn->debug_id : 0; 585*4882a593Smuzhiyun __entry->channel = channel; 586*4882a593Smuzhiyun __entry->usage = conn ? refcount_read(&conn->ref) : -2; 587*4882a593Smuzhiyun __entry->op = op; 588*4882a593Smuzhiyun __entry->cid = conn ? conn->proto.cid : 0; 589*4882a593Smuzhiyun ), 590*4882a593Smuzhiyun 591*4882a593Smuzhiyun TP_printk("C=%08x h=%2d %s i=%08x u=%d", 592*4882a593Smuzhiyun __entry->conn, 593*4882a593Smuzhiyun __entry->channel, 594*4882a593Smuzhiyun __print_symbolic(__entry->op, rxrpc_client_traces), 595*4882a593Smuzhiyun __entry->cid, 596*4882a593Smuzhiyun __entry->usage) 597*4882a593Smuzhiyun ); 598*4882a593Smuzhiyun 599*4882a593Smuzhiyun TRACE_EVENT(rxrpc_call, 600*4882a593Smuzhiyun TP_PROTO(unsigned int call_debug_id, enum rxrpc_call_trace op, 601*4882a593Smuzhiyun int usage, const void *where, const void *aux), 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun TP_ARGS(call_debug_id, op, usage, where, aux), 604*4882a593Smuzhiyun 605*4882a593Smuzhiyun TP_STRUCT__entry( 606*4882a593Smuzhiyun __field(unsigned int, call ) 607*4882a593Smuzhiyun __field(int, op ) 608*4882a593Smuzhiyun __field(int, usage ) 609*4882a593Smuzhiyun __field(const void *, where ) 610*4882a593Smuzhiyun __field(const void *, aux ) 611*4882a593Smuzhiyun ), 612*4882a593Smuzhiyun 613*4882a593Smuzhiyun TP_fast_assign( 614*4882a593Smuzhiyun __entry->call = call_debug_id; 615*4882a593Smuzhiyun __entry->op = op; 616*4882a593Smuzhiyun __entry->usage = usage; 617*4882a593Smuzhiyun __entry->where = where; 618*4882a593Smuzhiyun __entry->aux = aux; 619*4882a593Smuzhiyun ), 620*4882a593Smuzhiyun 621*4882a593Smuzhiyun TP_printk("c=%08x %s u=%d sp=%pSR a=%p", 622*4882a593Smuzhiyun __entry->call, 623*4882a593Smuzhiyun __print_symbolic(__entry->op, rxrpc_call_traces), 624*4882a593Smuzhiyun __entry->usage, 625*4882a593Smuzhiyun __entry->where, 626*4882a593Smuzhiyun __entry->aux) 627*4882a593Smuzhiyun ); 628*4882a593Smuzhiyun 629*4882a593Smuzhiyun TRACE_EVENT(rxrpc_skb, 630*4882a593Smuzhiyun TP_PROTO(struct sk_buff *skb, enum rxrpc_skb_trace op, 631*4882a593Smuzhiyun int usage, int mod_count, u8 flags, const void *where), 632*4882a593Smuzhiyun 633*4882a593Smuzhiyun TP_ARGS(skb, op, usage, mod_count, flags, where), 634*4882a593Smuzhiyun 635*4882a593Smuzhiyun TP_STRUCT__entry( 636*4882a593Smuzhiyun __field(struct sk_buff *, skb ) 637*4882a593Smuzhiyun __field(enum rxrpc_skb_trace, op ) 638*4882a593Smuzhiyun __field(u8, flags ) 639*4882a593Smuzhiyun __field(int, usage ) 640*4882a593Smuzhiyun __field(int, mod_count ) 641*4882a593Smuzhiyun __field(const void *, where ) 642*4882a593Smuzhiyun ), 643*4882a593Smuzhiyun 644*4882a593Smuzhiyun TP_fast_assign( 645*4882a593Smuzhiyun __entry->skb = skb; 646*4882a593Smuzhiyun __entry->flags = flags; 647*4882a593Smuzhiyun __entry->op = op; 648*4882a593Smuzhiyun __entry->usage = usage; 649*4882a593Smuzhiyun __entry->mod_count = mod_count; 650*4882a593Smuzhiyun __entry->where = where; 651*4882a593Smuzhiyun ), 652*4882a593Smuzhiyun 653*4882a593Smuzhiyun TP_printk("s=%p %cx %s u=%d m=%d p=%pSR", 654*4882a593Smuzhiyun __entry->skb, 655*4882a593Smuzhiyun __entry->flags & RXRPC_SKB_TX_BUFFER ? 'T' : 'R', 656*4882a593Smuzhiyun __print_symbolic(__entry->op, rxrpc_skb_traces), 657*4882a593Smuzhiyun __entry->usage, 658*4882a593Smuzhiyun __entry->mod_count, 659*4882a593Smuzhiyun __entry->where) 660*4882a593Smuzhiyun ); 661*4882a593Smuzhiyun 662*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rx_packet, 663*4882a593Smuzhiyun TP_PROTO(struct rxrpc_skb_priv *sp), 664*4882a593Smuzhiyun 665*4882a593Smuzhiyun TP_ARGS(sp), 666*4882a593Smuzhiyun 667*4882a593Smuzhiyun TP_STRUCT__entry( 668*4882a593Smuzhiyun __field_struct(struct rxrpc_host_header, hdr ) 669*4882a593Smuzhiyun ), 670*4882a593Smuzhiyun 671*4882a593Smuzhiyun TP_fast_assign( 672*4882a593Smuzhiyun memcpy(&__entry->hdr, &sp->hdr, sizeof(__entry->hdr)); 673*4882a593Smuzhiyun ), 674*4882a593Smuzhiyun 675*4882a593Smuzhiyun TP_printk("%08x:%08x:%08x:%04x %08x %08x %02x %02x %s", 676*4882a593Smuzhiyun __entry->hdr.epoch, __entry->hdr.cid, 677*4882a593Smuzhiyun __entry->hdr.callNumber, __entry->hdr.serviceId, 678*4882a593Smuzhiyun __entry->hdr.serial, __entry->hdr.seq, 679*4882a593Smuzhiyun __entry->hdr.type, __entry->hdr.flags, 680*4882a593Smuzhiyun __entry->hdr.type <= 15 ? 681*4882a593Smuzhiyun __print_symbolic(__entry->hdr.type, rxrpc_pkts) : "?UNK") 682*4882a593Smuzhiyun ); 683*4882a593Smuzhiyun 684*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rx_done, 685*4882a593Smuzhiyun TP_PROTO(int result, int abort_code), 686*4882a593Smuzhiyun 687*4882a593Smuzhiyun TP_ARGS(result, abort_code), 688*4882a593Smuzhiyun 689*4882a593Smuzhiyun TP_STRUCT__entry( 690*4882a593Smuzhiyun __field(int, result ) 691*4882a593Smuzhiyun __field(int, abort_code ) 692*4882a593Smuzhiyun ), 693*4882a593Smuzhiyun 694*4882a593Smuzhiyun TP_fast_assign( 695*4882a593Smuzhiyun __entry->result = result; 696*4882a593Smuzhiyun __entry->abort_code = abort_code; 697*4882a593Smuzhiyun ), 698*4882a593Smuzhiyun 699*4882a593Smuzhiyun TP_printk("r=%d a=%d", __entry->result, __entry->abort_code) 700*4882a593Smuzhiyun ); 701*4882a593Smuzhiyun 702*4882a593Smuzhiyun TRACE_EVENT(rxrpc_abort, 703*4882a593Smuzhiyun TP_PROTO(unsigned int call_nr, const char *why, u32 cid, u32 call_id, 704*4882a593Smuzhiyun rxrpc_seq_t seq, int abort_code, int error), 705*4882a593Smuzhiyun 706*4882a593Smuzhiyun TP_ARGS(call_nr, why, cid, call_id, seq, abort_code, error), 707*4882a593Smuzhiyun 708*4882a593Smuzhiyun TP_STRUCT__entry( 709*4882a593Smuzhiyun __field(unsigned int, call_nr ) 710*4882a593Smuzhiyun __array(char, why, 4 ) 711*4882a593Smuzhiyun __field(u32, cid ) 712*4882a593Smuzhiyun __field(u32, call_id ) 713*4882a593Smuzhiyun __field(rxrpc_seq_t, seq ) 714*4882a593Smuzhiyun __field(int, abort_code ) 715*4882a593Smuzhiyun __field(int, error ) 716*4882a593Smuzhiyun ), 717*4882a593Smuzhiyun 718*4882a593Smuzhiyun TP_fast_assign( 719*4882a593Smuzhiyun memcpy(__entry->why, why, 4); 720*4882a593Smuzhiyun __entry->call_nr = call_nr; 721*4882a593Smuzhiyun __entry->cid = cid; 722*4882a593Smuzhiyun __entry->call_id = call_id; 723*4882a593Smuzhiyun __entry->abort_code = abort_code; 724*4882a593Smuzhiyun __entry->error = error; 725*4882a593Smuzhiyun __entry->seq = seq; 726*4882a593Smuzhiyun ), 727*4882a593Smuzhiyun 728*4882a593Smuzhiyun TP_printk("c=%08x %08x:%08x s=%u a=%d e=%d %s", 729*4882a593Smuzhiyun __entry->call_nr, 730*4882a593Smuzhiyun __entry->cid, __entry->call_id, __entry->seq, 731*4882a593Smuzhiyun __entry->abort_code, __entry->error, __entry->why) 732*4882a593Smuzhiyun ); 733*4882a593Smuzhiyun 734*4882a593Smuzhiyun TRACE_EVENT(rxrpc_call_complete, 735*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call), 736*4882a593Smuzhiyun 737*4882a593Smuzhiyun TP_ARGS(call), 738*4882a593Smuzhiyun 739*4882a593Smuzhiyun TP_STRUCT__entry( 740*4882a593Smuzhiyun __field(unsigned int, call ) 741*4882a593Smuzhiyun __field(enum rxrpc_call_completion, compl ) 742*4882a593Smuzhiyun __field(int, error ) 743*4882a593Smuzhiyun __field(u32, abort_code ) 744*4882a593Smuzhiyun ), 745*4882a593Smuzhiyun 746*4882a593Smuzhiyun TP_fast_assign( 747*4882a593Smuzhiyun __entry->call = call->debug_id; 748*4882a593Smuzhiyun __entry->compl = call->completion; 749*4882a593Smuzhiyun __entry->error = call->error; 750*4882a593Smuzhiyun __entry->abort_code = call->abort_code; 751*4882a593Smuzhiyun ), 752*4882a593Smuzhiyun 753*4882a593Smuzhiyun TP_printk("c=%08x %s r=%d ac=%d", 754*4882a593Smuzhiyun __entry->call, 755*4882a593Smuzhiyun __print_symbolic(__entry->compl, rxrpc_completions), 756*4882a593Smuzhiyun __entry->error, 757*4882a593Smuzhiyun __entry->abort_code) 758*4882a593Smuzhiyun ); 759*4882a593Smuzhiyun 760*4882a593Smuzhiyun TRACE_EVENT(rxrpc_transmit, 761*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, enum rxrpc_transmit_trace why), 762*4882a593Smuzhiyun 763*4882a593Smuzhiyun TP_ARGS(call, why), 764*4882a593Smuzhiyun 765*4882a593Smuzhiyun TP_STRUCT__entry( 766*4882a593Smuzhiyun __field(unsigned int, call ) 767*4882a593Smuzhiyun __field(enum rxrpc_transmit_trace, why ) 768*4882a593Smuzhiyun __field(rxrpc_seq_t, tx_hard_ack ) 769*4882a593Smuzhiyun __field(rxrpc_seq_t, tx_top ) 770*4882a593Smuzhiyun __field(int, tx_winsize ) 771*4882a593Smuzhiyun ), 772*4882a593Smuzhiyun 773*4882a593Smuzhiyun TP_fast_assign( 774*4882a593Smuzhiyun __entry->call = call->debug_id; 775*4882a593Smuzhiyun __entry->why = why; 776*4882a593Smuzhiyun __entry->tx_hard_ack = call->tx_hard_ack; 777*4882a593Smuzhiyun __entry->tx_top = call->tx_top; 778*4882a593Smuzhiyun __entry->tx_winsize = call->tx_winsize; 779*4882a593Smuzhiyun ), 780*4882a593Smuzhiyun 781*4882a593Smuzhiyun TP_printk("c=%08x %s f=%08x n=%u/%u", 782*4882a593Smuzhiyun __entry->call, 783*4882a593Smuzhiyun __print_symbolic(__entry->why, rxrpc_transmit_traces), 784*4882a593Smuzhiyun __entry->tx_hard_ack + 1, 785*4882a593Smuzhiyun __entry->tx_top - __entry->tx_hard_ack, 786*4882a593Smuzhiyun __entry->tx_winsize) 787*4882a593Smuzhiyun ); 788*4882a593Smuzhiyun 789*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rx_data, 790*4882a593Smuzhiyun TP_PROTO(unsigned int call, rxrpc_seq_t seq, 791*4882a593Smuzhiyun rxrpc_serial_t serial, u8 flags, u8 anno), 792*4882a593Smuzhiyun 793*4882a593Smuzhiyun TP_ARGS(call, seq, serial, flags, anno), 794*4882a593Smuzhiyun 795*4882a593Smuzhiyun TP_STRUCT__entry( 796*4882a593Smuzhiyun __field(unsigned int, call ) 797*4882a593Smuzhiyun __field(rxrpc_seq_t, seq ) 798*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 799*4882a593Smuzhiyun __field(u8, flags ) 800*4882a593Smuzhiyun __field(u8, anno ) 801*4882a593Smuzhiyun ), 802*4882a593Smuzhiyun 803*4882a593Smuzhiyun TP_fast_assign( 804*4882a593Smuzhiyun __entry->call = call; 805*4882a593Smuzhiyun __entry->seq = seq; 806*4882a593Smuzhiyun __entry->serial = serial; 807*4882a593Smuzhiyun __entry->flags = flags; 808*4882a593Smuzhiyun __entry->anno = anno; 809*4882a593Smuzhiyun ), 810*4882a593Smuzhiyun 811*4882a593Smuzhiyun TP_printk("c=%08x DATA %08x q=%08x fl=%02x a=%02x", 812*4882a593Smuzhiyun __entry->call, 813*4882a593Smuzhiyun __entry->serial, 814*4882a593Smuzhiyun __entry->seq, 815*4882a593Smuzhiyun __entry->flags, 816*4882a593Smuzhiyun __entry->anno) 817*4882a593Smuzhiyun ); 818*4882a593Smuzhiyun 819*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rx_ack, 820*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, 821*4882a593Smuzhiyun rxrpc_serial_t serial, rxrpc_serial_t ack_serial, 822*4882a593Smuzhiyun rxrpc_seq_t first, rxrpc_seq_t prev, u8 reason, u8 n_acks), 823*4882a593Smuzhiyun 824*4882a593Smuzhiyun TP_ARGS(call, serial, ack_serial, first, prev, reason, n_acks), 825*4882a593Smuzhiyun 826*4882a593Smuzhiyun TP_STRUCT__entry( 827*4882a593Smuzhiyun __field(unsigned int, call ) 828*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 829*4882a593Smuzhiyun __field(rxrpc_serial_t, ack_serial ) 830*4882a593Smuzhiyun __field(rxrpc_seq_t, first ) 831*4882a593Smuzhiyun __field(rxrpc_seq_t, prev ) 832*4882a593Smuzhiyun __field(u8, reason ) 833*4882a593Smuzhiyun __field(u8, n_acks ) 834*4882a593Smuzhiyun ), 835*4882a593Smuzhiyun 836*4882a593Smuzhiyun TP_fast_assign( 837*4882a593Smuzhiyun __entry->call = call->debug_id; 838*4882a593Smuzhiyun __entry->serial = serial; 839*4882a593Smuzhiyun __entry->ack_serial = ack_serial; 840*4882a593Smuzhiyun __entry->first = first; 841*4882a593Smuzhiyun __entry->prev = prev; 842*4882a593Smuzhiyun __entry->reason = reason; 843*4882a593Smuzhiyun __entry->n_acks = n_acks; 844*4882a593Smuzhiyun ), 845*4882a593Smuzhiyun 846*4882a593Smuzhiyun TP_printk("c=%08x %08x %s r=%08x f=%08x p=%08x n=%u", 847*4882a593Smuzhiyun __entry->call, 848*4882a593Smuzhiyun __entry->serial, 849*4882a593Smuzhiyun __print_symbolic(__entry->reason, rxrpc_ack_names), 850*4882a593Smuzhiyun __entry->ack_serial, 851*4882a593Smuzhiyun __entry->first, 852*4882a593Smuzhiyun __entry->prev, 853*4882a593Smuzhiyun __entry->n_acks) 854*4882a593Smuzhiyun ); 855*4882a593Smuzhiyun 856*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rx_abort, 857*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, rxrpc_serial_t serial, 858*4882a593Smuzhiyun u32 abort_code), 859*4882a593Smuzhiyun 860*4882a593Smuzhiyun TP_ARGS(call, serial, abort_code), 861*4882a593Smuzhiyun 862*4882a593Smuzhiyun TP_STRUCT__entry( 863*4882a593Smuzhiyun __field(unsigned int, call ) 864*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 865*4882a593Smuzhiyun __field(u32, abort_code ) 866*4882a593Smuzhiyun ), 867*4882a593Smuzhiyun 868*4882a593Smuzhiyun TP_fast_assign( 869*4882a593Smuzhiyun __entry->call = call->debug_id; 870*4882a593Smuzhiyun __entry->serial = serial; 871*4882a593Smuzhiyun __entry->abort_code = abort_code; 872*4882a593Smuzhiyun ), 873*4882a593Smuzhiyun 874*4882a593Smuzhiyun TP_printk("c=%08x ABORT %08x ac=%d", 875*4882a593Smuzhiyun __entry->call, 876*4882a593Smuzhiyun __entry->serial, 877*4882a593Smuzhiyun __entry->abort_code) 878*4882a593Smuzhiyun ); 879*4882a593Smuzhiyun 880*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rx_rwind_change, 881*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, rxrpc_serial_t serial, 882*4882a593Smuzhiyun u32 rwind, bool wake), 883*4882a593Smuzhiyun 884*4882a593Smuzhiyun TP_ARGS(call, serial, rwind, wake), 885*4882a593Smuzhiyun 886*4882a593Smuzhiyun TP_STRUCT__entry( 887*4882a593Smuzhiyun __field(unsigned int, call ) 888*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 889*4882a593Smuzhiyun __field(u32, rwind ) 890*4882a593Smuzhiyun __field(bool, wake ) 891*4882a593Smuzhiyun ), 892*4882a593Smuzhiyun 893*4882a593Smuzhiyun TP_fast_assign( 894*4882a593Smuzhiyun __entry->call = call->debug_id; 895*4882a593Smuzhiyun __entry->serial = serial; 896*4882a593Smuzhiyun __entry->rwind = rwind; 897*4882a593Smuzhiyun __entry->wake = wake; 898*4882a593Smuzhiyun ), 899*4882a593Smuzhiyun 900*4882a593Smuzhiyun TP_printk("c=%08x %08x rw=%u%s", 901*4882a593Smuzhiyun __entry->call, 902*4882a593Smuzhiyun __entry->serial, 903*4882a593Smuzhiyun __entry->rwind, 904*4882a593Smuzhiyun __entry->wake ? " wake" : "") 905*4882a593Smuzhiyun ); 906*4882a593Smuzhiyun 907*4882a593Smuzhiyun TRACE_EVENT(rxrpc_tx_packet, 908*4882a593Smuzhiyun TP_PROTO(unsigned int call_id, struct rxrpc_wire_header *whdr, 909*4882a593Smuzhiyun enum rxrpc_tx_point where), 910*4882a593Smuzhiyun 911*4882a593Smuzhiyun TP_ARGS(call_id, whdr, where), 912*4882a593Smuzhiyun 913*4882a593Smuzhiyun TP_STRUCT__entry( 914*4882a593Smuzhiyun __field(unsigned int, call ) 915*4882a593Smuzhiyun __field(enum rxrpc_tx_point, where ) 916*4882a593Smuzhiyun __field_struct(struct rxrpc_wire_header, whdr ) 917*4882a593Smuzhiyun ), 918*4882a593Smuzhiyun 919*4882a593Smuzhiyun TP_fast_assign( 920*4882a593Smuzhiyun __entry->call = call_id; 921*4882a593Smuzhiyun memcpy(&__entry->whdr, whdr, sizeof(__entry->whdr)); 922*4882a593Smuzhiyun __entry->where = where; 923*4882a593Smuzhiyun ), 924*4882a593Smuzhiyun 925*4882a593Smuzhiyun TP_printk("c=%08x %08x:%08x:%08x:%04x %08x %08x %02x %02x %s %s", 926*4882a593Smuzhiyun __entry->call, 927*4882a593Smuzhiyun ntohl(__entry->whdr.epoch), 928*4882a593Smuzhiyun ntohl(__entry->whdr.cid), 929*4882a593Smuzhiyun ntohl(__entry->whdr.callNumber), 930*4882a593Smuzhiyun ntohs(__entry->whdr.serviceId), 931*4882a593Smuzhiyun ntohl(__entry->whdr.serial), 932*4882a593Smuzhiyun ntohl(__entry->whdr.seq), 933*4882a593Smuzhiyun __entry->whdr.type, __entry->whdr.flags, 934*4882a593Smuzhiyun __entry->whdr.type <= 15 ? 935*4882a593Smuzhiyun __print_symbolic(__entry->whdr.type, rxrpc_pkts) : "?UNK", 936*4882a593Smuzhiyun __print_symbolic(__entry->where, rxrpc_tx_points)) 937*4882a593Smuzhiyun ); 938*4882a593Smuzhiyun 939*4882a593Smuzhiyun TRACE_EVENT(rxrpc_tx_data, 940*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, rxrpc_seq_t seq, 941*4882a593Smuzhiyun rxrpc_serial_t serial, u8 flags, bool retrans, bool lose), 942*4882a593Smuzhiyun 943*4882a593Smuzhiyun TP_ARGS(call, seq, serial, flags, retrans, lose), 944*4882a593Smuzhiyun 945*4882a593Smuzhiyun TP_STRUCT__entry( 946*4882a593Smuzhiyun __field(unsigned int, call ) 947*4882a593Smuzhiyun __field(rxrpc_seq_t, seq ) 948*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 949*4882a593Smuzhiyun __field(u32, cid ) 950*4882a593Smuzhiyun __field(u32, call_id ) 951*4882a593Smuzhiyun __field(u8, flags ) 952*4882a593Smuzhiyun __field(bool, retrans ) 953*4882a593Smuzhiyun __field(bool, lose ) 954*4882a593Smuzhiyun ), 955*4882a593Smuzhiyun 956*4882a593Smuzhiyun TP_fast_assign( 957*4882a593Smuzhiyun __entry->call = call->debug_id; 958*4882a593Smuzhiyun __entry->cid = call->cid; 959*4882a593Smuzhiyun __entry->call_id = call->call_id; 960*4882a593Smuzhiyun __entry->seq = seq; 961*4882a593Smuzhiyun __entry->serial = serial; 962*4882a593Smuzhiyun __entry->flags = flags; 963*4882a593Smuzhiyun __entry->retrans = retrans; 964*4882a593Smuzhiyun __entry->lose = lose; 965*4882a593Smuzhiyun ), 966*4882a593Smuzhiyun 967*4882a593Smuzhiyun TP_printk("c=%08x DATA %08x:%08x %08x q=%08x fl=%02x%s%s", 968*4882a593Smuzhiyun __entry->call, 969*4882a593Smuzhiyun __entry->cid, 970*4882a593Smuzhiyun __entry->call_id, 971*4882a593Smuzhiyun __entry->serial, 972*4882a593Smuzhiyun __entry->seq, 973*4882a593Smuzhiyun __entry->flags, 974*4882a593Smuzhiyun __entry->retrans ? " *RETRANS*" : "", 975*4882a593Smuzhiyun __entry->lose ? " *LOSE*" : "") 976*4882a593Smuzhiyun ); 977*4882a593Smuzhiyun 978*4882a593Smuzhiyun TRACE_EVENT(rxrpc_tx_ack, 979*4882a593Smuzhiyun TP_PROTO(unsigned int call, rxrpc_serial_t serial, 980*4882a593Smuzhiyun rxrpc_seq_t ack_first, rxrpc_serial_t ack_serial, 981*4882a593Smuzhiyun u8 reason, u8 n_acks), 982*4882a593Smuzhiyun 983*4882a593Smuzhiyun TP_ARGS(call, serial, ack_first, ack_serial, reason, n_acks), 984*4882a593Smuzhiyun 985*4882a593Smuzhiyun TP_STRUCT__entry( 986*4882a593Smuzhiyun __field(unsigned int, call ) 987*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 988*4882a593Smuzhiyun __field(rxrpc_seq_t, ack_first ) 989*4882a593Smuzhiyun __field(rxrpc_serial_t, ack_serial ) 990*4882a593Smuzhiyun __field(u8, reason ) 991*4882a593Smuzhiyun __field(u8, n_acks ) 992*4882a593Smuzhiyun ), 993*4882a593Smuzhiyun 994*4882a593Smuzhiyun TP_fast_assign( 995*4882a593Smuzhiyun __entry->call = call; 996*4882a593Smuzhiyun __entry->serial = serial; 997*4882a593Smuzhiyun __entry->ack_first = ack_first; 998*4882a593Smuzhiyun __entry->ack_serial = ack_serial; 999*4882a593Smuzhiyun __entry->reason = reason; 1000*4882a593Smuzhiyun __entry->n_acks = n_acks; 1001*4882a593Smuzhiyun ), 1002*4882a593Smuzhiyun 1003*4882a593Smuzhiyun TP_printk(" c=%08x ACK %08x %s f=%08x r=%08x n=%u", 1004*4882a593Smuzhiyun __entry->call, 1005*4882a593Smuzhiyun __entry->serial, 1006*4882a593Smuzhiyun __print_symbolic(__entry->reason, rxrpc_ack_names), 1007*4882a593Smuzhiyun __entry->ack_first, 1008*4882a593Smuzhiyun __entry->ack_serial, 1009*4882a593Smuzhiyun __entry->n_acks) 1010*4882a593Smuzhiyun ); 1011*4882a593Smuzhiyun 1012*4882a593Smuzhiyun TRACE_EVENT(rxrpc_receive, 1013*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, enum rxrpc_receive_trace why, 1014*4882a593Smuzhiyun rxrpc_serial_t serial, rxrpc_seq_t seq), 1015*4882a593Smuzhiyun 1016*4882a593Smuzhiyun TP_ARGS(call, why, serial, seq), 1017*4882a593Smuzhiyun 1018*4882a593Smuzhiyun TP_STRUCT__entry( 1019*4882a593Smuzhiyun __field(unsigned int, call ) 1020*4882a593Smuzhiyun __field(enum rxrpc_receive_trace, why ) 1021*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 1022*4882a593Smuzhiyun __field(rxrpc_seq_t, seq ) 1023*4882a593Smuzhiyun __field(rxrpc_seq_t, hard_ack ) 1024*4882a593Smuzhiyun __field(rxrpc_seq_t, top ) 1025*4882a593Smuzhiyun ), 1026*4882a593Smuzhiyun 1027*4882a593Smuzhiyun TP_fast_assign( 1028*4882a593Smuzhiyun __entry->call = call->debug_id; 1029*4882a593Smuzhiyun __entry->why = why; 1030*4882a593Smuzhiyun __entry->serial = serial; 1031*4882a593Smuzhiyun __entry->seq = seq; 1032*4882a593Smuzhiyun __entry->hard_ack = call->rx_hard_ack; 1033*4882a593Smuzhiyun __entry->top = call->rx_top; 1034*4882a593Smuzhiyun ), 1035*4882a593Smuzhiyun 1036*4882a593Smuzhiyun TP_printk("c=%08x %s r=%08x q=%08x w=%08x-%08x", 1037*4882a593Smuzhiyun __entry->call, 1038*4882a593Smuzhiyun __print_symbolic(__entry->why, rxrpc_receive_traces), 1039*4882a593Smuzhiyun __entry->serial, 1040*4882a593Smuzhiyun __entry->seq, 1041*4882a593Smuzhiyun __entry->hard_ack, 1042*4882a593Smuzhiyun __entry->top) 1043*4882a593Smuzhiyun ); 1044*4882a593Smuzhiyun 1045*4882a593Smuzhiyun TRACE_EVENT(rxrpc_recvmsg, 1046*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, enum rxrpc_recvmsg_trace why, 1047*4882a593Smuzhiyun rxrpc_seq_t seq, unsigned int offset, unsigned int len, 1048*4882a593Smuzhiyun int ret), 1049*4882a593Smuzhiyun 1050*4882a593Smuzhiyun TP_ARGS(call, why, seq, offset, len, ret), 1051*4882a593Smuzhiyun 1052*4882a593Smuzhiyun TP_STRUCT__entry( 1053*4882a593Smuzhiyun __field(unsigned int, call ) 1054*4882a593Smuzhiyun __field(enum rxrpc_recvmsg_trace, why ) 1055*4882a593Smuzhiyun __field(rxrpc_seq_t, seq ) 1056*4882a593Smuzhiyun __field(unsigned int, offset ) 1057*4882a593Smuzhiyun __field(unsigned int, len ) 1058*4882a593Smuzhiyun __field(int, ret ) 1059*4882a593Smuzhiyun ), 1060*4882a593Smuzhiyun 1061*4882a593Smuzhiyun TP_fast_assign( 1062*4882a593Smuzhiyun __entry->call = call ? call->debug_id : 0; 1063*4882a593Smuzhiyun __entry->why = why; 1064*4882a593Smuzhiyun __entry->seq = seq; 1065*4882a593Smuzhiyun __entry->offset = offset; 1066*4882a593Smuzhiyun __entry->len = len; 1067*4882a593Smuzhiyun __entry->ret = ret; 1068*4882a593Smuzhiyun ), 1069*4882a593Smuzhiyun 1070*4882a593Smuzhiyun TP_printk("c=%08x %s q=%08x o=%u l=%u ret=%d", 1071*4882a593Smuzhiyun __entry->call, 1072*4882a593Smuzhiyun __print_symbolic(__entry->why, rxrpc_recvmsg_traces), 1073*4882a593Smuzhiyun __entry->seq, 1074*4882a593Smuzhiyun __entry->offset, 1075*4882a593Smuzhiyun __entry->len, 1076*4882a593Smuzhiyun __entry->ret) 1077*4882a593Smuzhiyun ); 1078*4882a593Smuzhiyun 1079*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rtt_tx, 1080*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, enum rxrpc_rtt_tx_trace why, 1081*4882a593Smuzhiyun int slot, rxrpc_serial_t send_serial), 1082*4882a593Smuzhiyun 1083*4882a593Smuzhiyun TP_ARGS(call, why, slot, send_serial), 1084*4882a593Smuzhiyun 1085*4882a593Smuzhiyun TP_STRUCT__entry( 1086*4882a593Smuzhiyun __field(unsigned int, call ) 1087*4882a593Smuzhiyun __field(enum rxrpc_rtt_tx_trace, why ) 1088*4882a593Smuzhiyun __field(int, slot ) 1089*4882a593Smuzhiyun __field(rxrpc_serial_t, send_serial ) 1090*4882a593Smuzhiyun ), 1091*4882a593Smuzhiyun 1092*4882a593Smuzhiyun TP_fast_assign( 1093*4882a593Smuzhiyun __entry->call = call->debug_id; 1094*4882a593Smuzhiyun __entry->why = why; 1095*4882a593Smuzhiyun __entry->slot = slot; 1096*4882a593Smuzhiyun __entry->send_serial = send_serial; 1097*4882a593Smuzhiyun ), 1098*4882a593Smuzhiyun 1099*4882a593Smuzhiyun TP_printk("c=%08x [%d] %s sr=%08x", 1100*4882a593Smuzhiyun __entry->call, 1101*4882a593Smuzhiyun __entry->slot, 1102*4882a593Smuzhiyun __print_symbolic(__entry->why, rxrpc_rtt_tx_traces), 1103*4882a593Smuzhiyun __entry->send_serial) 1104*4882a593Smuzhiyun ); 1105*4882a593Smuzhiyun 1106*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rtt_rx, 1107*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, enum rxrpc_rtt_rx_trace why, 1108*4882a593Smuzhiyun int slot, 1109*4882a593Smuzhiyun rxrpc_serial_t send_serial, rxrpc_serial_t resp_serial, 1110*4882a593Smuzhiyun u32 rtt, u32 rto), 1111*4882a593Smuzhiyun 1112*4882a593Smuzhiyun TP_ARGS(call, why, slot, send_serial, resp_serial, rtt, rto), 1113*4882a593Smuzhiyun 1114*4882a593Smuzhiyun TP_STRUCT__entry( 1115*4882a593Smuzhiyun __field(unsigned int, call ) 1116*4882a593Smuzhiyun __field(enum rxrpc_rtt_rx_trace, why ) 1117*4882a593Smuzhiyun __field(int, slot ) 1118*4882a593Smuzhiyun __field(rxrpc_serial_t, send_serial ) 1119*4882a593Smuzhiyun __field(rxrpc_serial_t, resp_serial ) 1120*4882a593Smuzhiyun __field(u32, rtt ) 1121*4882a593Smuzhiyun __field(u32, rto ) 1122*4882a593Smuzhiyun ), 1123*4882a593Smuzhiyun 1124*4882a593Smuzhiyun TP_fast_assign( 1125*4882a593Smuzhiyun __entry->call = call->debug_id; 1126*4882a593Smuzhiyun __entry->why = why; 1127*4882a593Smuzhiyun __entry->slot = slot; 1128*4882a593Smuzhiyun __entry->send_serial = send_serial; 1129*4882a593Smuzhiyun __entry->resp_serial = resp_serial; 1130*4882a593Smuzhiyun __entry->rtt = rtt; 1131*4882a593Smuzhiyun __entry->rto = rto; 1132*4882a593Smuzhiyun ), 1133*4882a593Smuzhiyun 1134*4882a593Smuzhiyun TP_printk("c=%08x [%d] %s sr=%08x rr=%08x rtt=%u rto=%u", 1135*4882a593Smuzhiyun __entry->call, 1136*4882a593Smuzhiyun __entry->slot, 1137*4882a593Smuzhiyun __print_symbolic(__entry->why, rxrpc_rtt_rx_traces), 1138*4882a593Smuzhiyun __entry->send_serial, 1139*4882a593Smuzhiyun __entry->resp_serial, 1140*4882a593Smuzhiyun __entry->rtt, 1141*4882a593Smuzhiyun __entry->rto) 1142*4882a593Smuzhiyun ); 1143*4882a593Smuzhiyun 1144*4882a593Smuzhiyun TRACE_EVENT(rxrpc_timer, 1145*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, enum rxrpc_timer_trace why, 1146*4882a593Smuzhiyun unsigned long now), 1147*4882a593Smuzhiyun 1148*4882a593Smuzhiyun TP_ARGS(call, why, now), 1149*4882a593Smuzhiyun 1150*4882a593Smuzhiyun TP_STRUCT__entry( 1151*4882a593Smuzhiyun __field(unsigned int, call ) 1152*4882a593Smuzhiyun __field(enum rxrpc_timer_trace, why ) 1153*4882a593Smuzhiyun __field(long, now ) 1154*4882a593Smuzhiyun __field(long, ack_at ) 1155*4882a593Smuzhiyun __field(long, ack_lost_at ) 1156*4882a593Smuzhiyun __field(long, resend_at ) 1157*4882a593Smuzhiyun __field(long, ping_at ) 1158*4882a593Smuzhiyun __field(long, expect_rx_by ) 1159*4882a593Smuzhiyun __field(long, expect_req_by ) 1160*4882a593Smuzhiyun __field(long, expect_term_by ) 1161*4882a593Smuzhiyun __field(long, timer ) 1162*4882a593Smuzhiyun ), 1163*4882a593Smuzhiyun 1164*4882a593Smuzhiyun TP_fast_assign( 1165*4882a593Smuzhiyun __entry->call = call->debug_id; 1166*4882a593Smuzhiyun __entry->why = why; 1167*4882a593Smuzhiyun __entry->now = now; 1168*4882a593Smuzhiyun __entry->ack_at = call->ack_at; 1169*4882a593Smuzhiyun __entry->ack_lost_at = call->ack_lost_at; 1170*4882a593Smuzhiyun __entry->resend_at = call->resend_at; 1171*4882a593Smuzhiyun __entry->expect_rx_by = call->expect_rx_by; 1172*4882a593Smuzhiyun __entry->expect_req_by = call->expect_req_by; 1173*4882a593Smuzhiyun __entry->expect_term_by = call->expect_term_by; 1174*4882a593Smuzhiyun __entry->timer = call->timer.expires; 1175*4882a593Smuzhiyun ), 1176*4882a593Smuzhiyun 1177*4882a593Smuzhiyun TP_printk("c=%08x %s a=%ld la=%ld r=%ld xr=%ld xq=%ld xt=%ld t=%ld", 1178*4882a593Smuzhiyun __entry->call, 1179*4882a593Smuzhiyun __print_symbolic(__entry->why, rxrpc_timer_traces), 1180*4882a593Smuzhiyun __entry->ack_at - __entry->now, 1181*4882a593Smuzhiyun __entry->ack_lost_at - __entry->now, 1182*4882a593Smuzhiyun __entry->resend_at - __entry->now, 1183*4882a593Smuzhiyun __entry->expect_rx_by - __entry->now, 1184*4882a593Smuzhiyun __entry->expect_req_by - __entry->now, 1185*4882a593Smuzhiyun __entry->expect_term_by - __entry->now, 1186*4882a593Smuzhiyun __entry->timer - __entry->now) 1187*4882a593Smuzhiyun ); 1188*4882a593Smuzhiyun 1189*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rx_lose, 1190*4882a593Smuzhiyun TP_PROTO(struct rxrpc_skb_priv *sp), 1191*4882a593Smuzhiyun 1192*4882a593Smuzhiyun TP_ARGS(sp), 1193*4882a593Smuzhiyun 1194*4882a593Smuzhiyun TP_STRUCT__entry( 1195*4882a593Smuzhiyun __field_struct(struct rxrpc_host_header, hdr ) 1196*4882a593Smuzhiyun ), 1197*4882a593Smuzhiyun 1198*4882a593Smuzhiyun TP_fast_assign( 1199*4882a593Smuzhiyun memcpy(&__entry->hdr, &sp->hdr, sizeof(__entry->hdr)); 1200*4882a593Smuzhiyun ), 1201*4882a593Smuzhiyun 1202*4882a593Smuzhiyun TP_printk("%08x:%08x:%08x:%04x %08x %08x %02x %02x %s *LOSE*", 1203*4882a593Smuzhiyun __entry->hdr.epoch, __entry->hdr.cid, 1204*4882a593Smuzhiyun __entry->hdr.callNumber, __entry->hdr.serviceId, 1205*4882a593Smuzhiyun __entry->hdr.serial, __entry->hdr.seq, 1206*4882a593Smuzhiyun __entry->hdr.type, __entry->hdr.flags, 1207*4882a593Smuzhiyun __entry->hdr.type <= 15 ? 1208*4882a593Smuzhiyun __print_symbolic(__entry->hdr.type, rxrpc_pkts) : "?UNK") 1209*4882a593Smuzhiyun ); 1210*4882a593Smuzhiyun 1211*4882a593Smuzhiyun TRACE_EVENT(rxrpc_propose_ack, 1212*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, enum rxrpc_propose_ack_trace why, 1213*4882a593Smuzhiyun u8 ack_reason, rxrpc_serial_t serial, bool immediate, 1214*4882a593Smuzhiyun bool background, enum rxrpc_propose_ack_outcome outcome), 1215*4882a593Smuzhiyun 1216*4882a593Smuzhiyun TP_ARGS(call, why, ack_reason, serial, immediate, background, 1217*4882a593Smuzhiyun outcome), 1218*4882a593Smuzhiyun 1219*4882a593Smuzhiyun TP_STRUCT__entry( 1220*4882a593Smuzhiyun __field(unsigned int, call ) 1221*4882a593Smuzhiyun __field(enum rxrpc_propose_ack_trace, why ) 1222*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 1223*4882a593Smuzhiyun __field(u8, ack_reason ) 1224*4882a593Smuzhiyun __field(bool, immediate ) 1225*4882a593Smuzhiyun __field(bool, background ) 1226*4882a593Smuzhiyun __field(enum rxrpc_propose_ack_outcome, outcome ) 1227*4882a593Smuzhiyun ), 1228*4882a593Smuzhiyun 1229*4882a593Smuzhiyun TP_fast_assign( 1230*4882a593Smuzhiyun __entry->call = call->debug_id; 1231*4882a593Smuzhiyun __entry->why = why; 1232*4882a593Smuzhiyun __entry->serial = serial; 1233*4882a593Smuzhiyun __entry->ack_reason = ack_reason; 1234*4882a593Smuzhiyun __entry->immediate = immediate; 1235*4882a593Smuzhiyun __entry->background = background; 1236*4882a593Smuzhiyun __entry->outcome = outcome; 1237*4882a593Smuzhiyun ), 1238*4882a593Smuzhiyun 1239*4882a593Smuzhiyun TP_printk("c=%08x %s %s r=%08x i=%u b=%u%s", 1240*4882a593Smuzhiyun __entry->call, 1241*4882a593Smuzhiyun __print_symbolic(__entry->why, rxrpc_propose_ack_traces), 1242*4882a593Smuzhiyun __print_symbolic(__entry->ack_reason, rxrpc_ack_names), 1243*4882a593Smuzhiyun __entry->serial, 1244*4882a593Smuzhiyun __entry->immediate, 1245*4882a593Smuzhiyun __entry->background, 1246*4882a593Smuzhiyun __print_symbolic(__entry->outcome, rxrpc_propose_ack_outcomes)) 1247*4882a593Smuzhiyun ); 1248*4882a593Smuzhiyun 1249*4882a593Smuzhiyun TRACE_EVENT(rxrpc_retransmit, 1250*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, rxrpc_seq_t seq, u8 annotation, 1251*4882a593Smuzhiyun s64 expiry), 1252*4882a593Smuzhiyun 1253*4882a593Smuzhiyun TP_ARGS(call, seq, annotation, expiry), 1254*4882a593Smuzhiyun 1255*4882a593Smuzhiyun TP_STRUCT__entry( 1256*4882a593Smuzhiyun __field(unsigned int, call ) 1257*4882a593Smuzhiyun __field(rxrpc_seq_t, seq ) 1258*4882a593Smuzhiyun __field(u8, annotation ) 1259*4882a593Smuzhiyun __field(s64, expiry ) 1260*4882a593Smuzhiyun ), 1261*4882a593Smuzhiyun 1262*4882a593Smuzhiyun TP_fast_assign( 1263*4882a593Smuzhiyun __entry->call = call->debug_id; 1264*4882a593Smuzhiyun __entry->seq = seq; 1265*4882a593Smuzhiyun __entry->annotation = annotation; 1266*4882a593Smuzhiyun __entry->expiry = expiry; 1267*4882a593Smuzhiyun ), 1268*4882a593Smuzhiyun 1269*4882a593Smuzhiyun TP_printk("c=%08x q=%x a=%02x xp=%lld", 1270*4882a593Smuzhiyun __entry->call, 1271*4882a593Smuzhiyun __entry->seq, 1272*4882a593Smuzhiyun __entry->annotation, 1273*4882a593Smuzhiyun __entry->expiry) 1274*4882a593Smuzhiyun ); 1275*4882a593Smuzhiyun 1276*4882a593Smuzhiyun TRACE_EVENT(rxrpc_congest, 1277*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, struct rxrpc_ack_summary *summary, 1278*4882a593Smuzhiyun rxrpc_serial_t ack_serial, enum rxrpc_congest_change change), 1279*4882a593Smuzhiyun 1280*4882a593Smuzhiyun TP_ARGS(call, summary, ack_serial, change), 1281*4882a593Smuzhiyun 1282*4882a593Smuzhiyun TP_STRUCT__entry( 1283*4882a593Smuzhiyun __field(unsigned int, call ) 1284*4882a593Smuzhiyun __field(enum rxrpc_congest_change, change ) 1285*4882a593Smuzhiyun __field(rxrpc_seq_t, hard_ack ) 1286*4882a593Smuzhiyun __field(rxrpc_seq_t, top ) 1287*4882a593Smuzhiyun __field(rxrpc_seq_t, lowest_nak ) 1288*4882a593Smuzhiyun __field(rxrpc_serial_t, ack_serial ) 1289*4882a593Smuzhiyun __field_struct(struct rxrpc_ack_summary, sum ) 1290*4882a593Smuzhiyun ), 1291*4882a593Smuzhiyun 1292*4882a593Smuzhiyun TP_fast_assign( 1293*4882a593Smuzhiyun __entry->call = call->debug_id; 1294*4882a593Smuzhiyun __entry->change = change; 1295*4882a593Smuzhiyun __entry->hard_ack = call->tx_hard_ack; 1296*4882a593Smuzhiyun __entry->top = call->tx_top; 1297*4882a593Smuzhiyun __entry->lowest_nak = call->acks_lowest_nak; 1298*4882a593Smuzhiyun __entry->ack_serial = ack_serial; 1299*4882a593Smuzhiyun memcpy(&__entry->sum, summary, sizeof(__entry->sum)); 1300*4882a593Smuzhiyun ), 1301*4882a593Smuzhiyun 1302*4882a593Smuzhiyun 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", 1303*4882a593Smuzhiyun __entry->call, 1304*4882a593Smuzhiyun __entry->ack_serial, 1305*4882a593Smuzhiyun __print_symbolic(__entry->sum.ack_reason, rxrpc_ack_names), 1306*4882a593Smuzhiyun __entry->hard_ack, 1307*4882a593Smuzhiyun __print_symbolic(__entry->sum.mode, rxrpc_congest_modes), 1308*4882a593Smuzhiyun __entry->sum.cwnd, 1309*4882a593Smuzhiyun __entry->sum.ssthresh, 1310*4882a593Smuzhiyun __entry->sum.nr_acks, __entry->sum.nr_nacks, 1311*4882a593Smuzhiyun __entry->sum.nr_new_acks, __entry->sum.nr_new_nacks, 1312*4882a593Smuzhiyun __entry->sum.nr_rot_new_acks, 1313*4882a593Smuzhiyun __entry->top - __entry->hard_ack, 1314*4882a593Smuzhiyun __entry->sum.cumulative_acks, 1315*4882a593Smuzhiyun __entry->sum.dup_acks, 1316*4882a593Smuzhiyun __entry->lowest_nak, __entry->sum.new_low_nack ? "!" : "", 1317*4882a593Smuzhiyun __print_symbolic(__entry->change, rxrpc_congest_changes), 1318*4882a593Smuzhiyun __entry->sum.retrans_timeo ? " rTxTo" : "") 1319*4882a593Smuzhiyun ); 1320*4882a593Smuzhiyun 1321*4882a593Smuzhiyun TRACE_EVENT(rxrpc_disconnect_call, 1322*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call), 1323*4882a593Smuzhiyun 1324*4882a593Smuzhiyun TP_ARGS(call), 1325*4882a593Smuzhiyun 1326*4882a593Smuzhiyun TP_STRUCT__entry( 1327*4882a593Smuzhiyun __field(unsigned int, call ) 1328*4882a593Smuzhiyun __field(u32, abort_code ) 1329*4882a593Smuzhiyun ), 1330*4882a593Smuzhiyun 1331*4882a593Smuzhiyun TP_fast_assign( 1332*4882a593Smuzhiyun __entry->call = call->debug_id; 1333*4882a593Smuzhiyun __entry->abort_code = call->abort_code; 1334*4882a593Smuzhiyun ), 1335*4882a593Smuzhiyun 1336*4882a593Smuzhiyun TP_printk("c=%08x ab=%08x", 1337*4882a593Smuzhiyun __entry->call, 1338*4882a593Smuzhiyun __entry->abort_code) 1339*4882a593Smuzhiyun ); 1340*4882a593Smuzhiyun 1341*4882a593Smuzhiyun TRACE_EVENT(rxrpc_improper_term, 1342*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call), 1343*4882a593Smuzhiyun 1344*4882a593Smuzhiyun TP_ARGS(call), 1345*4882a593Smuzhiyun 1346*4882a593Smuzhiyun TP_STRUCT__entry( 1347*4882a593Smuzhiyun __field(unsigned int, call ) 1348*4882a593Smuzhiyun __field(u32, abort_code ) 1349*4882a593Smuzhiyun ), 1350*4882a593Smuzhiyun 1351*4882a593Smuzhiyun TP_fast_assign( 1352*4882a593Smuzhiyun __entry->call = call->debug_id; 1353*4882a593Smuzhiyun __entry->abort_code = call->abort_code; 1354*4882a593Smuzhiyun ), 1355*4882a593Smuzhiyun 1356*4882a593Smuzhiyun TP_printk("c=%08x ab=%08x", 1357*4882a593Smuzhiyun __entry->call, 1358*4882a593Smuzhiyun __entry->abort_code) 1359*4882a593Smuzhiyun ); 1360*4882a593Smuzhiyun 1361*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rx_eproto, 1362*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, rxrpc_serial_t serial, 1363*4882a593Smuzhiyun const char *why), 1364*4882a593Smuzhiyun 1365*4882a593Smuzhiyun TP_ARGS(call, serial, why), 1366*4882a593Smuzhiyun 1367*4882a593Smuzhiyun TP_STRUCT__entry( 1368*4882a593Smuzhiyun __field(unsigned int, call ) 1369*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 1370*4882a593Smuzhiyun __field(const char *, why ) 1371*4882a593Smuzhiyun ), 1372*4882a593Smuzhiyun 1373*4882a593Smuzhiyun TP_fast_assign( 1374*4882a593Smuzhiyun __entry->call = call ? call->debug_id : 0; 1375*4882a593Smuzhiyun __entry->serial = serial; 1376*4882a593Smuzhiyun __entry->why = why; 1377*4882a593Smuzhiyun ), 1378*4882a593Smuzhiyun 1379*4882a593Smuzhiyun TP_printk("c=%08x EPROTO %08x %s", 1380*4882a593Smuzhiyun __entry->call, 1381*4882a593Smuzhiyun __entry->serial, 1382*4882a593Smuzhiyun __entry->why) 1383*4882a593Smuzhiyun ); 1384*4882a593Smuzhiyun 1385*4882a593Smuzhiyun TRACE_EVENT(rxrpc_connect_call, 1386*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call), 1387*4882a593Smuzhiyun 1388*4882a593Smuzhiyun TP_ARGS(call), 1389*4882a593Smuzhiyun 1390*4882a593Smuzhiyun TP_STRUCT__entry( 1391*4882a593Smuzhiyun __field(unsigned int, call ) 1392*4882a593Smuzhiyun __field(unsigned long, user_call_ID ) 1393*4882a593Smuzhiyun __field(u32, cid ) 1394*4882a593Smuzhiyun __field(u32, call_id ) 1395*4882a593Smuzhiyun ), 1396*4882a593Smuzhiyun 1397*4882a593Smuzhiyun TP_fast_assign( 1398*4882a593Smuzhiyun __entry->call = call->debug_id; 1399*4882a593Smuzhiyun __entry->user_call_ID = call->user_call_ID; 1400*4882a593Smuzhiyun __entry->cid = call->cid; 1401*4882a593Smuzhiyun __entry->call_id = call->call_id; 1402*4882a593Smuzhiyun ), 1403*4882a593Smuzhiyun 1404*4882a593Smuzhiyun TP_printk("c=%08x u=%p %08x:%08x", 1405*4882a593Smuzhiyun __entry->call, 1406*4882a593Smuzhiyun (void *)__entry->user_call_ID, 1407*4882a593Smuzhiyun __entry->cid, 1408*4882a593Smuzhiyun __entry->call_id) 1409*4882a593Smuzhiyun ); 1410*4882a593Smuzhiyun 1411*4882a593Smuzhiyun TRACE_EVENT(rxrpc_resend, 1412*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call, int ix), 1413*4882a593Smuzhiyun 1414*4882a593Smuzhiyun TP_ARGS(call, ix), 1415*4882a593Smuzhiyun 1416*4882a593Smuzhiyun TP_STRUCT__entry( 1417*4882a593Smuzhiyun __field(unsigned int, call ) 1418*4882a593Smuzhiyun __field(int, ix ) 1419*4882a593Smuzhiyun __array(u8, anno, 64 ) 1420*4882a593Smuzhiyun ), 1421*4882a593Smuzhiyun 1422*4882a593Smuzhiyun TP_fast_assign( 1423*4882a593Smuzhiyun __entry->call = call->debug_id; 1424*4882a593Smuzhiyun __entry->ix = ix; 1425*4882a593Smuzhiyun memcpy(__entry->anno, call->rxtx_annotations, 64); 1426*4882a593Smuzhiyun ), 1427*4882a593Smuzhiyun 1428*4882a593Smuzhiyun TP_printk("c=%08x ix=%u a=%64phN", 1429*4882a593Smuzhiyun __entry->call, 1430*4882a593Smuzhiyun __entry->ix, 1431*4882a593Smuzhiyun __entry->anno) 1432*4882a593Smuzhiyun ); 1433*4882a593Smuzhiyun 1434*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rx_icmp, 1435*4882a593Smuzhiyun TP_PROTO(struct rxrpc_peer *peer, struct sock_extended_err *ee, 1436*4882a593Smuzhiyun struct sockaddr_rxrpc *srx), 1437*4882a593Smuzhiyun 1438*4882a593Smuzhiyun TP_ARGS(peer, ee, srx), 1439*4882a593Smuzhiyun 1440*4882a593Smuzhiyun TP_STRUCT__entry( 1441*4882a593Smuzhiyun __field(unsigned int, peer ) 1442*4882a593Smuzhiyun __field_struct(struct sock_extended_err, ee ) 1443*4882a593Smuzhiyun __field_struct(struct sockaddr_rxrpc, srx ) 1444*4882a593Smuzhiyun ), 1445*4882a593Smuzhiyun 1446*4882a593Smuzhiyun TP_fast_assign( 1447*4882a593Smuzhiyun __entry->peer = peer->debug_id; 1448*4882a593Smuzhiyun memcpy(&__entry->ee, ee, sizeof(__entry->ee)); 1449*4882a593Smuzhiyun memcpy(&__entry->srx, srx, sizeof(__entry->srx)); 1450*4882a593Smuzhiyun ), 1451*4882a593Smuzhiyun 1452*4882a593Smuzhiyun TP_printk("P=%08x o=%u t=%u c=%u i=%u d=%u e=%d %pISp", 1453*4882a593Smuzhiyun __entry->peer, 1454*4882a593Smuzhiyun __entry->ee.ee_origin, 1455*4882a593Smuzhiyun __entry->ee.ee_type, 1456*4882a593Smuzhiyun __entry->ee.ee_code, 1457*4882a593Smuzhiyun __entry->ee.ee_info, 1458*4882a593Smuzhiyun __entry->ee.ee_data, 1459*4882a593Smuzhiyun __entry->ee.ee_errno, 1460*4882a593Smuzhiyun &__entry->srx.transport) 1461*4882a593Smuzhiyun ); 1462*4882a593Smuzhiyun 1463*4882a593Smuzhiyun TRACE_EVENT(rxrpc_tx_fail, 1464*4882a593Smuzhiyun TP_PROTO(unsigned int debug_id, rxrpc_serial_t serial, int ret, 1465*4882a593Smuzhiyun enum rxrpc_tx_point where), 1466*4882a593Smuzhiyun 1467*4882a593Smuzhiyun TP_ARGS(debug_id, serial, ret, where), 1468*4882a593Smuzhiyun 1469*4882a593Smuzhiyun TP_STRUCT__entry( 1470*4882a593Smuzhiyun __field(unsigned int, debug_id ) 1471*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 1472*4882a593Smuzhiyun __field(int, ret ) 1473*4882a593Smuzhiyun __field(enum rxrpc_tx_point, where ) 1474*4882a593Smuzhiyun ), 1475*4882a593Smuzhiyun 1476*4882a593Smuzhiyun TP_fast_assign( 1477*4882a593Smuzhiyun __entry->debug_id = debug_id; 1478*4882a593Smuzhiyun __entry->serial = serial; 1479*4882a593Smuzhiyun __entry->ret = ret; 1480*4882a593Smuzhiyun __entry->where = where; 1481*4882a593Smuzhiyun ), 1482*4882a593Smuzhiyun 1483*4882a593Smuzhiyun TP_printk("c=%08x r=%x ret=%d %s", 1484*4882a593Smuzhiyun __entry->debug_id, 1485*4882a593Smuzhiyun __entry->serial, 1486*4882a593Smuzhiyun __entry->ret, 1487*4882a593Smuzhiyun __print_symbolic(__entry->where, rxrpc_tx_points)) 1488*4882a593Smuzhiyun ); 1489*4882a593Smuzhiyun 1490*4882a593Smuzhiyun TRACE_EVENT(rxrpc_call_reset, 1491*4882a593Smuzhiyun TP_PROTO(struct rxrpc_call *call), 1492*4882a593Smuzhiyun 1493*4882a593Smuzhiyun TP_ARGS(call), 1494*4882a593Smuzhiyun 1495*4882a593Smuzhiyun TP_STRUCT__entry( 1496*4882a593Smuzhiyun __field(unsigned int, debug_id ) 1497*4882a593Smuzhiyun __field(u32, cid ) 1498*4882a593Smuzhiyun __field(u32, call_id ) 1499*4882a593Smuzhiyun __field(rxrpc_serial_t, call_serial ) 1500*4882a593Smuzhiyun __field(rxrpc_serial_t, conn_serial ) 1501*4882a593Smuzhiyun __field(rxrpc_seq_t, tx_seq ) 1502*4882a593Smuzhiyun __field(rxrpc_seq_t, rx_seq ) 1503*4882a593Smuzhiyun ), 1504*4882a593Smuzhiyun 1505*4882a593Smuzhiyun TP_fast_assign( 1506*4882a593Smuzhiyun __entry->debug_id = call->debug_id; 1507*4882a593Smuzhiyun __entry->cid = call->cid; 1508*4882a593Smuzhiyun __entry->call_id = call->call_id; 1509*4882a593Smuzhiyun __entry->call_serial = call->rx_serial; 1510*4882a593Smuzhiyun __entry->conn_serial = call->conn->hi_serial; 1511*4882a593Smuzhiyun __entry->tx_seq = call->tx_hard_ack; 1512*4882a593Smuzhiyun __entry->rx_seq = call->rx_hard_ack; 1513*4882a593Smuzhiyun ), 1514*4882a593Smuzhiyun 1515*4882a593Smuzhiyun TP_printk("c=%08x %08x:%08x r=%08x/%08x tx=%08x rx=%08x", 1516*4882a593Smuzhiyun __entry->debug_id, 1517*4882a593Smuzhiyun __entry->cid, __entry->call_id, 1518*4882a593Smuzhiyun __entry->call_serial, __entry->conn_serial, 1519*4882a593Smuzhiyun __entry->tx_seq, __entry->rx_seq) 1520*4882a593Smuzhiyun ); 1521*4882a593Smuzhiyun 1522*4882a593Smuzhiyun TRACE_EVENT(rxrpc_notify_socket, 1523*4882a593Smuzhiyun TP_PROTO(unsigned int debug_id, rxrpc_serial_t serial), 1524*4882a593Smuzhiyun 1525*4882a593Smuzhiyun TP_ARGS(debug_id, serial), 1526*4882a593Smuzhiyun 1527*4882a593Smuzhiyun TP_STRUCT__entry( 1528*4882a593Smuzhiyun __field(unsigned int, debug_id ) 1529*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 1530*4882a593Smuzhiyun ), 1531*4882a593Smuzhiyun 1532*4882a593Smuzhiyun TP_fast_assign( 1533*4882a593Smuzhiyun __entry->debug_id = debug_id; 1534*4882a593Smuzhiyun __entry->serial = serial; 1535*4882a593Smuzhiyun ), 1536*4882a593Smuzhiyun 1537*4882a593Smuzhiyun TP_printk("c=%08x r=%08x", 1538*4882a593Smuzhiyun __entry->debug_id, 1539*4882a593Smuzhiyun __entry->serial) 1540*4882a593Smuzhiyun ); 1541*4882a593Smuzhiyun 1542*4882a593Smuzhiyun TRACE_EVENT(rxrpc_rx_discard_ack, 1543*4882a593Smuzhiyun TP_PROTO(unsigned int debug_id, rxrpc_serial_t serial, 1544*4882a593Smuzhiyun rxrpc_seq_t first_soft_ack, rxrpc_seq_t call_ackr_first, 1545*4882a593Smuzhiyun rxrpc_seq_t prev_pkt, rxrpc_seq_t call_ackr_prev), 1546*4882a593Smuzhiyun 1547*4882a593Smuzhiyun TP_ARGS(debug_id, serial, first_soft_ack, call_ackr_first, 1548*4882a593Smuzhiyun prev_pkt, call_ackr_prev), 1549*4882a593Smuzhiyun 1550*4882a593Smuzhiyun TP_STRUCT__entry( 1551*4882a593Smuzhiyun __field(unsigned int, debug_id ) 1552*4882a593Smuzhiyun __field(rxrpc_serial_t, serial ) 1553*4882a593Smuzhiyun __field(rxrpc_seq_t, first_soft_ack) 1554*4882a593Smuzhiyun __field(rxrpc_seq_t, call_ackr_first) 1555*4882a593Smuzhiyun __field(rxrpc_seq_t, prev_pkt) 1556*4882a593Smuzhiyun __field(rxrpc_seq_t, call_ackr_prev) 1557*4882a593Smuzhiyun ), 1558*4882a593Smuzhiyun 1559*4882a593Smuzhiyun TP_fast_assign( 1560*4882a593Smuzhiyun __entry->debug_id = debug_id; 1561*4882a593Smuzhiyun __entry->serial = serial; 1562*4882a593Smuzhiyun __entry->first_soft_ack = first_soft_ack; 1563*4882a593Smuzhiyun __entry->call_ackr_first = call_ackr_first; 1564*4882a593Smuzhiyun __entry->prev_pkt = prev_pkt; 1565*4882a593Smuzhiyun __entry->call_ackr_prev = call_ackr_prev; 1566*4882a593Smuzhiyun ), 1567*4882a593Smuzhiyun 1568*4882a593Smuzhiyun TP_printk("c=%08x r=%08x %08x<%08x %08x<%08x", 1569*4882a593Smuzhiyun __entry->debug_id, 1570*4882a593Smuzhiyun __entry->serial, 1571*4882a593Smuzhiyun __entry->first_soft_ack, 1572*4882a593Smuzhiyun __entry->call_ackr_first, 1573*4882a593Smuzhiyun __entry->prev_pkt, 1574*4882a593Smuzhiyun __entry->call_ackr_prev) 1575*4882a593Smuzhiyun ); 1576*4882a593Smuzhiyun 1577*4882a593Smuzhiyun #endif /* _TRACE_RXRPC_H */ 1578*4882a593Smuzhiyun 1579*4882a593Smuzhiyun /* This part must be outside protection */ 1580*4882a593Smuzhiyun #include <trace/define_trace.h> 1581