1*5a93929dSSantosh Pradhan /* SPDX-License-Identifier: GPL-2.0+ */ 2*5a93929dSSantosh Pradhan /* 3*5a93929dSSantosh Pradhan * RDMA Network Block Driver 4*5a93929dSSantosh Pradhan * 5*5a93929dSSantosh Pradhan * Copyright (c) 2022 1&1 IONOS SE. All rights reserved. 6*5a93929dSSantosh Pradhan */ 7*5a93929dSSantosh Pradhan #undef TRACE_SYSTEM 8*5a93929dSSantosh Pradhan #define TRACE_SYSTEM rtrs_clt 9*5a93929dSSantosh Pradhan 10*5a93929dSSantosh Pradhan #if !defined(_TRACE_RTRS_CLT_H) || defined(TRACE_HEADER_MULTI_READ) 11*5a93929dSSantosh Pradhan #define _TRACE_RTRS_CLT_H 12*5a93929dSSantosh Pradhan 13*5a93929dSSantosh Pradhan #include <linux/tracepoint.h> 14*5a93929dSSantosh Pradhan 15*5a93929dSSantosh Pradhan struct rtrs_clt_path; 16*5a93929dSSantosh Pradhan struct rtrs_clt_sess; 17*5a93929dSSantosh Pradhan 18*5a93929dSSantosh Pradhan TRACE_DEFINE_ENUM(RTRS_CLT_CONNECTING); 19*5a93929dSSantosh Pradhan TRACE_DEFINE_ENUM(RTRS_CLT_CONNECTING_ERR); 20*5a93929dSSantosh Pradhan TRACE_DEFINE_ENUM(RTRS_CLT_RECONNECTING); 21*5a93929dSSantosh Pradhan TRACE_DEFINE_ENUM(RTRS_CLT_CONNECTED); 22*5a93929dSSantosh Pradhan TRACE_DEFINE_ENUM(RTRS_CLT_CLOSING); 23*5a93929dSSantosh Pradhan TRACE_DEFINE_ENUM(RTRS_CLT_CLOSED); 24*5a93929dSSantosh Pradhan TRACE_DEFINE_ENUM(RTRS_CLT_DEAD); 25*5a93929dSSantosh Pradhan 26*5a93929dSSantosh Pradhan #define show_rtrs_clt_state(x) \ 27*5a93929dSSantosh Pradhan __print_symbolic(x, \ 28*5a93929dSSantosh Pradhan { RTRS_CLT_CONNECTING, "CONNECTING" }, \ 29*5a93929dSSantosh Pradhan { RTRS_CLT_CONNECTING_ERR, "CONNECTING_ERR" }, \ 30*5a93929dSSantosh Pradhan { RTRS_CLT_RECONNECTING, "RECONNECTING" }, \ 31*5a93929dSSantosh Pradhan { RTRS_CLT_CONNECTED, "CONNECTED" }, \ 32*5a93929dSSantosh Pradhan { RTRS_CLT_CLOSING, "CLOSING" }, \ 33*5a93929dSSantosh Pradhan { RTRS_CLT_CLOSED, "CLOSED" }, \ 34*5a93929dSSantosh Pradhan { RTRS_CLT_DEAD, "DEAD" }) 35*5a93929dSSantosh Pradhan 36*5a93929dSSantosh Pradhan DECLARE_EVENT_CLASS(rtrs_clt_conn_class, 37*5a93929dSSantosh Pradhan TP_PROTO(struct rtrs_clt_path *clt_path), 38*5a93929dSSantosh Pradhan 39*5a93929dSSantosh Pradhan TP_ARGS(clt_path), 40*5a93929dSSantosh Pradhan 41*5a93929dSSantosh Pradhan TP_STRUCT__entry( 42*5a93929dSSantosh Pradhan __field(int, state) 43*5a93929dSSantosh Pradhan __field(int, reconnect_attempts) 44*5a93929dSSantosh Pradhan __field(int, max_reconnect_attempts) 45*5a93929dSSantosh Pradhan __field(int, fail_cnt) 46*5a93929dSSantosh Pradhan __field(int, success_cnt) 47*5a93929dSSantosh Pradhan __array(char, sessname, NAME_MAX) 48*5a93929dSSantosh Pradhan ), 49*5a93929dSSantosh Pradhan 50*5a93929dSSantosh Pradhan TP_fast_assign( 51*5a93929dSSantosh Pradhan struct rtrs_clt_sess *clt = clt_path->clt; 52*5a93929dSSantosh Pradhan 53*5a93929dSSantosh Pradhan __entry->state = clt_path->state; 54*5a93929dSSantosh Pradhan __entry->reconnect_attempts = clt_path->reconnect_attempts; 55*5a93929dSSantosh Pradhan __entry->max_reconnect_attempts = clt->max_reconnect_attempts; 56*5a93929dSSantosh Pradhan __entry->fail_cnt = clt_path->stats->reconnects.fail_cnt; 57*5a93929dSSantosh Pradhan __entry->success_cnt = clt_path->stats->reconnects.successful_cnt; 58*5a93929dSSantosh Pradhan memcpy(__entry->sessname, kobject_name(&clt_path->kobj), NAME_MAX); 59*5a93929dSSantosh Pradhan ), 60*5a93929dSSantosh Pradhan 61*5a93929dSSantosh Pradhan TP_printk("RTRS-CLT: sess='%s' state=%s attempts='%d' max-attempts='%d' fail='%d' success='%d'", 62*5a93929dSSantosh Pradhan __entry->sessname, 63*5a93929dSSantosh Pradhan show_rtrs_clt_state(__entry->state), 64*5a93929dSSantosh Pradhan __entry->reconnect_attempts, 65*5a93929dSSantosh Pradhan __entry->max_reconnect_attempts, 66*5a93929dSSantosh Pradhan __entry->fail_cnt, 67*5a93929dSSantosh Pradhan __entry->success_cnt 68*5a93929dSSantosh Pradhan ) 69*5a93929dSSantosh Pradhan ); 70*5a93929dSSantosh Pradhan 71*5a93929dSSantosh Pradhan #define DEFINE_CLT_CONN_EVENT(name) \ 72*5a93929dSSantosh Pradhan DEFINE_EVENT(rtrs_clt_conn_class, rtrs_##name, \ 73*5a93929dSSantosh Pradhan TP_PROTO(struct rtrs_clt_path *clt_path), \ 74*5a93929dSSantosh Pradhan TP_ARGS(clt_path)) 75*5a93929dSSantosh Pradhan 76*5a93929dSSantosh Pradhan DEFINE_CLT_CONN_EVENT(clt_reconnect_work); 77*5a93929dSSantosh Pradhan DEFINE_CLT_CONN_EVENT(clt_close_conns); 78*5a93929dSSantosh Pradhan DEFINE_CLT_CONN_EVENT(rdma_error_recovery); 79*5a93929dSSantosh Pradhan 80*5a93929dSSantosh Pradhan #endif /* _TRACE_RTRS_CLT_H */ 81*5a93929dSSantosh Pradhan 82*5a93929dSSantosh Pradhan #undef TRACE_INCLUDE_PATH 83*5a93929dSSantosh Pradhan #define TRACE_INCLUDE_PATH . 84*5a93929dSSantosh Pradhan #define TRACE_INCLUDE_FILE rtrs-clt-trace 85*5a93929dSSantosh Pradhan #include <trace/define_trace.h> 86*5a93929dSSantosh Pradhan 87