xref: /openbmc/linux/net/l2tp/trace.h (revision cbecf716ca618fd44feda6bd9a64a8179d031fc5)
13f117d6fSTom Parkin /* SPDX-License-Identifier: GPL-2.0-only */
23f117d6fSTom Parkin #undef TRACE_SYSTEM
33f117d6fSTom Parkin #define TRACE_SYSTEM l2tp
43f117d6fSTom Parkin 
53f117d6fSTom Parkin #if !defined(_TRACE_L2TP_H) || defined(TRACE_HEADER_MULTI_READ)
63f117d6fSTom Parkin #define _TRACE_L2TP_H
73f117d6fSTom Parkin 
8*2a03dd8eSTom Parkin #include <linux/tracepoint.h>
9*2a03dd8eSTom Parkin #include <linux/l2tp.h>
10*2a03dd8eSTom Parkin #include "l2tp_core.h"
11*2a03dd8eSTom Parkin 
12*2a03dd8eSTom Parkin #define encap_type_name(e) { L2TP_ENCAPTYPE_##e, #e }
13*2a03dd8eSTom Parkin #define show_encap_type_name(val) \
14*2a03dd8eSTom Parkin 	__print_symbolic(val, \
15*2a03dd8eSTom Parkin 			encap_type_name(UDP), \
16*2a03dd8eSTom Parkin 			encap_type_name(IP))
17*2a03dd8eSTom Parkin 
18*2a03dd8eSTom Parkin #define pw_type_name(p) { L2TP_PWTYPE_##p, #p }
19*2a03dd8eSTom Parkin #define show_pw_type_name(val) \
20*2a03dd8eSTom Parkin 	__print_symbolic(val, \
21*2a03dd8eSTom Parkin 	pw_type_name(ETH_VLAN), \
22*2a03dd8eSTom Parkin 	pw_type_name(ETH), \
23*2a03dd8eSTom Parkin 	pw_type_name(PPP), \
24*2a03dd8eSTom Parkin 	pw_type_name(PPP_AC), \
25*2a03dd8eSTom Parkin 	pw_type_name(IP))
26*2a03dd8eSTom Parkin 
27*2a03dd8eSTom Parkin DECLARE_EVENT_CLASS(tunnel_only_evt,
28*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_tunnel *tunnel),
29*2a03dd8eSTom Parkin 	TP_ARGS(tunnel),
30*2a03dd8eSTom Parkin 	TP_STRUCT__entry(
31*2a03dd8eSTom Parkin 		__array(char, name, L2TP_TUNNEL_NAME_MAX)
32*2a03dd8eSTom Parkin 	),
33*2a03dd8eSTom Parkin 	TP_fast_assign(
34*2a03dd8eSTom Parkin 		memcpy(__entry->name, tunnel->name, L2TP_TUNNEL_NAME_MAX);
35*2a03dd8eSTom Parkin 	),
36*2a03dd8eSTom Parkin 	TP_printk("%s", __entry->name)
37*2a03dd8eSTom Parkin );
38*2a03dd8eSTom Parkin 
39*2a03dd8eSTom Parkin DECLARE_EVENT_CLASS(session_only_evt,
40*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session),
41*2a03dd8eSTom Parkin 	TP_ARGS(session),
42*2a03dd8eSTom Parkin 	TP_STRUCT__entry(
43*2a03dd8eSTom Parkin 		__array(char, name, L2TP_SESSION_NAME_MAX)
44*2a03dd8eSTom Parkin 	),
45*2a03dd8eSTom Parkin 	TP_fast_assign(
46*2a03dd8eSTom Parkin 		memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX);
47*2a03dd8eSTom Parkin 	),
48*2a03dd8eSTom Parkin 	TP_printk("%s", __entry->name)
49*2a03dd8eSTom Parkin );
50*2a03dd8eSTom Parkin 
51*2a03dd8eSTom Parkin TRACE_EVENT(register_tunnel,
52*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_tunnel *tunnel),
53*2a03dd8eSTom Parkin 	TP_ARGS(tunnel),
54*2a03dd8eSTom Parkin 	TP_STRUCT__entry(
55*2a03dd8eSTom Parkin 		__array(char, name, L2TP_TUNNEL_NAME_MAX)
56*2a03dd8eSTom Parkin 		__field(int, fd)
57*2a03dd8eSTom Parkin 		__field(u32, tid)
58*2a03dd8eSTom Parkin 		__field(u32, ptid)
59*2a03dd8eSTom Parkin 		__field(int, version)
60*2a03dd8eSTom Parkin 		__field(enum l2tp_encap_type, encap)
61*2a03dd8eSTom Parkin 	),
62*2a03dd8eSTom Parkin 	TP_fast_assign(
63*2a03dd8eSTom Parkin 		memcpy(__entry->name, tunnel->name, L2TP_TUNNEL_NAME_MAX);
64*2a03dd8eSTom Parkin 		__entry->fd = tunnel->fd;
65*2a03dd8eSTom Parkin 		__entry->tid = tunnel->tunnel_id;
66*2a03dd8eSTom Parkin 		__entry->ptid = tunnel->peer_tunnel_id;
67*2a03dd8eSTom Parkin 		__entry->version = tunnel->version;
68*2a03dd8eSTom Parkin 		__entry->encap = tunnel->encap;
69*2a03dd8eSTom Parkin 	),
70*2a03dd8eSTom Parkin 	TP_printk("%s: type=%s encap=%s version=L2TPv%d tid=%u ptid=%u fd=%d",
71*2a03dd8eSTom Parkin 		__entry->name,
72*2a03dd8eSTom Parkin 		__entry->fd > 0 ? "managed" : "unmanaged",
73*2a03dd8eSTom Parkin 		show_encap_type_name(__entry->encap),
74*2a03dd8eSTom Parkin 		__entry->version,
75*2a03dd8eSTom Parkin 		__entry->tid,
76*2a03dd8eSTom Parkin 		__entry->ptid,
77*2a03dd8eSTom Parkin 		__entry->fd)
78*2a03dd8eSTom Parkin );
79*2a03dd8eSTom Parkin 
80*2a03dd8eSTom Parkin DEFINE_EVENT(tunnel_only_evt, delete_tunnel,
81*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_tunnel *tunnel),
82*2a03dd8eSTom Parkin 	TP_ARGS(tunnel)
83*2a03dd8eSTom Parkin );
84*2a03dd8eSTom Parkin 
85*2a03dd8eSTom Parkin DEFINE_EVENT(tunnel_only_evt, free_tunnel,
86*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_tunnel *tunnel),
87*2a03dd8eSTom Parkin 	TP_ARGS(tunnel)
88*2a03dd8eSTom Parkin );
89*2a03dd8eSTom Parkin 
90*2a03dd8eSTom Parkin TRACE_EVENT(register_session,
91*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session),
92*2a03dd8eSTom Parkin 	TP_ARGS(session),
93*2a03dd8eSTom Parkin 	TP_STRUCT__entry(
94*2a03dd8eSTom Parkin 		__array(char, name, L2TP_SESSION_NAME_MAX)
95*2a03dd8eSTom Parkin 		__field(u32, tid)
96*2a03dd8eSTom Parkin 		__field(u32, ptid)
97*2a03dd8eSTom Parkin 		__field(u32, sid)
98*2a03dd8eSTom Parkin 		__field(u32, psid)
99*2a03dd8eSTom Parkin 		__field(enum l2tp_pwtype, pwtype)
100*2a03dd8eSTom Parkin 	),
101*2a03dd8eSTom Parkin 	TP_fast_assign(
102*2a03dd8eSTom Parkin 		memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX);
103*2a03dd8eSTom Parkin 		__entry->tid = session->tunnel ? session->tunnel->tunnel_id : 0;
104*2a03dd8eSTom Parkin 		__entry->ptid = session->tunnel ? session->tunnel->peer_tunnel_id : 0;
105*2a03dd8eSTom Parkin 		__entry->sid = session->session_id;
106*2a03dd8eSTom Parkin 		__entry->psid = session->peer_session_id;
107*2a03dd8eSTom Parkin 		__entry->pwtype = session->pwtype;
108*2a03dd8eSTom Parkin 	),
109*2a03dd8eSTom Parkin 	TP_printk("%s: pseudowire=%s sid=%u psid=%u tid=%u ptid=%u",
110*2a03dd8eSTom Parkin 		__entry->name,
111*2a03dd8eSTom Parkin 		show_pw_type_name(__entry->pwtype),
112*2a03dd8eSTom Parkin 		__entry->sid,
113*2a03dd8eSTom Parkin 		__entry->psid,
114*2a03dd8eSTom Parkin 		__entry->sid,
115*2a03dd8eSTom Parkin 		__entry->psid)
116*2a03dd8eSTom Parkin );
117*2a03dd8eSTom Parkin 
118*2a03dd8eSTom Parkin DEFINE_EVENT(session_only_evt, delete_session,
119*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session),
120*2a03dd8eSTom Parkin 	TP_ARGS(session)
121*2a03dd8eSTom Parkin );
122*2a03dd8eSTom Parkin 
123*2a03dd8eSTom Parkin DEFINE_EVENT(session_only_evt, free_session,
124*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session),
125*2a03dd8eSTom Parkin 	TP_ARGS(session)
126*2a03dd8eSTom Parkin );
127*2a03dd8eSTom Parkin 
128*2a03dd8eSTom Parkin DEFINE_EVENT(session_only_evt, session_seqnum_lns_enable,
129*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session),
130*2a03dd8eSTom Parkin 	TP_ARGS(session)
131*2a03dd8eSTom Parkin );
132*2a03dd8eSTom Parkin 
133*2a03dd8eSTom Parkin DEFINE_EVENT(session_only_evt, session_seqnum_lns_disable,
134*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session),
135*2a03dd8eSTom Parkin 	TP_ARGS(session)
136*2a03dd8eSTom Parkin );
137*2a03dd8eSTom Parkin 
138*2a03dd8eSTom Parkin DECLARE_EVENT_CLASS(session_seqnum_evt,
139*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session),
140*2a03dd8eSTom Parkin 	TP_ARGS(session),
141*2a03dd8eSTom Parkin 	TP_STRUCT__entry(
142*2a03dd8eSTom Parkin 		__array(char, name, L2TP_SESSION_NAME_MAX)
143*2a03dd8eSTom Parkin 		__field(u32, ns)
144*2a03dd8eSTom Parkin 		__field(u32, nr)
145*2a03dd8eSTom Parkin 	),
146*2a03dd8eSTom Parkin 	TP_fast_assign(
147*2a03dd8eSTom Parkin 		memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX);
148*2a03dd8eSTom Parkin 		__entry->ns = session->ns;
149*2a03dd8eSTom Parkin 		__entry->nr = session->nr;
150*2a03dd8eSTom Parkin 	),
151*2a03dd8eSTom Parkin 	TP_printk("%s: ns=%u nr=%u",
152*2a03dd8eSTom Parkin 		__entry->name,
153*2a03dd8eSTom Parkin 		__entry->ns,
154*2a03dd8eSTom Parkin 		__entry->nr)
155*2a03dd8eSTom Parkin );
156*2a03dd8eSTom Parkin 
157*2a03dd8eSTom Parkin DEFINE_EVENT(session_seqnum_evt, session_seqnum_update,
158*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session),
159*2a03dd8eSTom Parkin 	TP_ARGS(session)
160*2a03dd8eSTom Parkin );
161*2a03dd8eSTom Parkin 
162*2a03dd8eSTom Parkin DEFINE_EVENT(session_seqnum_evt, session_seqnum_reset,
163*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session),
164*2a03dd8eSTom Parkin 	TP_ARGS(session)
165*2a03dd8eSTom Parkin );
166*2a03dd8eSTom Parkin 
167*2a03dd8eSTom Parkin DECLARE_EVENT_CLASS(session_pkt_discard_evt,
168*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session, u32 pkt_ns),
169*2a03dd8eSTom Parkin 	TP_ARGS(session, pkt_ns),
170*2a03dd8eSTom Parkin 	TP_STRUCT__entry(
171*2a03dd8eSTom Parkin 		__array(char, name, L2TP_SESSION_NAME_MAX)
172*2a03dd8eSTom Parkin 		__field(u32, pkt_ns)
173*2a03dd8eSTom Parkin 		__field(u32, my_nr)
174*2a03dd8eSTom Parkin 		__field(u32, reorder_q_len)
175*2a03dd8eSTom Parkin 	),
176*2a03dd8eSTom Parkin 	TP_fast_assign(
177*2a03dd8eSTom Parkin 		memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX);
178*2a03dd8eSTom Parkin 		__entry->pkt_ns = pkt_ns,
179*2a03dd8eSTom Parkin 		__entry->my_nr = session->nr;
180*2a03dd8eSTom Parkin 		__entry->reorder_q_len = skb_queue_len(&session->reorder_q);
181*2a03dd8eSTom Parkin 	),
182*2a03dd8eSTom Parkin 	TP_printk("%s: pkt_ns=%u my_nr=%u reorder_q_len=%u",
183*2a03dd8eSTom Parkin 		__entry->name,
184*2a03dd8eSTom Parkin 		__entry->pkt_ns,
185*2a03dd8eSTom Parkin 		__entry->my_nr,
186*2a03dd8eSTom Parkin 		__entry->reorder_q_len)
187*2a03dd8eSTom Parkin );
188*2a03dd8eSTom Parkin 
189*2a03dd8eSTom Parkin DEFINE_EVENT(session_pkt_discard_evt, session_pkt_expired,
190*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session, u32 pkt_ns),
191*2a03dd8eSTom Parkin 	TP_ARGS(session, pkt_ns)
192*2a03dd8eSTom Parkin );
193*2a03dd8eSTom Parkin 
194*2a03dd8eSTom Parkin DEFINE_EVENT(session_pkt_discard_evt, session_pkt_outside_rx_window,
195*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session, u32 pkt_ns),
196*2a03dd8eSTom Parkin 	TP_ARGS(session, pkt_ns)
197*2a03dd8eSTom Parkin );
198*2a03dd8eSTom Parkin 
199*2a03dd8eSTom Parkin DEFINE_EVENT(session_pkt_discard_evt, session_pkt_oos,
200*2a03dd8eSTom Parkin 	TP_PROTO(struct l2tp_session *session, u32 pkt_ns),
201*2a03dd8eSTom Parkin 	TP_ARGS(session, pkt_ns)
202*2a03dd8eSTom Parkin );
203*2a03dd8eSTom Parkin 
2043f117d6fSTom Parkin #endif /* _TRACE_L2TP_H */
2053f117d6fSTom Parkin 
2063f117d6fSTom Parkin /* This part must be outside protection */
2073f117d6fSTom Parkin #undef TRACE_INCLUDE_PATH
2083f117d6fSTom Parkin #define TRACE_INCLUDE_PATH .
2093f117d6fSTom Parkin #undef TRACE_INCLUDE_FILE
2103f117d6fSTom Parkin #define TRACE_INCLUDE_FILE trace
2113f117d6fSTom Parkin #include <trace/define_trace.h>
212