1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
2 /* Copyright (C) 2019 Netronome Systems, Inc. */
3 
4 #undef TRACE_SYSTEM
5 #define TRACE_SYSTEM tls
6 
7 #if !defined(_TLS_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
8 #define _TLS_TRACE_H_
9 
10 #include <asm/unaligned.h>
11 #include <linux/tracepoint.h>
12 
13 struct sock;
14 
15 TRACE_EVENT(tls_device_offload_set,
16 
17 	TP_PROTO(struct sock *sk, int dir, u32 tcp_seq, u8 *rec_no, int ret),
18 
19 	TP_ARGS(sk, dir, tcp_seq, rec_no, ret),
20 
21 	TP_STRUCT__entry(
22 		__field(	struct sock *,	sk		)
23 		__field(	u64,		rec_no		)
24 		__field(	int,		dir		)
25 		__field(	u32,		tcp_seq		)
26 		__field(	int,		ret		)
27 	),
28 
29 	TP_fast_assign(
30 		__entry->sk = sk;
31 		__entry->rec_no = get_unaligned_be64(rec_no);
32 		__entry->dir = dir;
33 		__entry->tcp_seq = tcp_seq;
34 		__entry->ret = ret;
35 	),
36 
37 	TP_printk(
38 		"sk=%p direction=%d tcp_seq=%u rec_no=%llu ret=%d",
39 		__entry->sk, __entry->dir, __entry->tcp_seq, __entry->rec_no,
40 		__entry->ret
41 	)
42 );
43 
44 TRACE_EVENT(tls_device_decrypted,
45 
46 	TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no, u32 rec_len,
47 		 bool encrypted, bool decrypted),
48 
49 	TP_ARGS(sk, tcp_seq, rec_no, rec_len, encrypted, decrypted),
50 
51 	TP_STRUCT__entry(
52 		__field(	struct sock *,	sk		)
53 		__field(	u64,		rec_no		)
54 		__field(	u32,		tcp_seq		)
55 		__field(	u32,		rec_len		)
56 		__field(	bool,		encrypted	)
57 		__field(	bool,		decrypted	)
58 	),
59 
60 	TP_fast_assign(
61 		__entry->sk = sk;
62 		__entry->rec_no = get_unaligned_be64(rec_no);
63 		__entry->tcp_seq = tcp_seq;
64 		__entry->rec_len = rec_len;
65 		__entry->encrypted = encrypted;
66 		__entry->decrypted = decrypted;
67 	),
68 
69 	TP_printk(
70 		"sk=%p tcp_seq=%u rec_no=%llu len=%u encrypted=%d decrypted=%d",
71 		__entry->sk, __entry->tcp_seq,
72 		__entry->rec_no, __entry->rec_len,
73 		__entry->encrypted, __entry->decrypted
74 	)
75 );
76 
77 TRACE_EVENT(tls_device_rx_resync_send,
78 
79 	TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no, int sync_type),
80 
81 	TP_ARGS(sk, tcp_seq, rec_no, sync_type),
82 
83 	TP_STRUCT__entry(
84 		__field(	struct sock *,	sk		)
85 		__field(	u64,		rec_no		)
86 		__field(	u32,		tcp_seq		)
87 		__field(	int,		sync_type	)
88 	),
89 
90 	TP_fast_assign(
91 		__entry->sk = sk;
92 		__entry->rec_no = get_unaligned_be64(rec_no);
93 		__entry->tcp_seq = tcp_seq;
94 		__entry->sync_type = sync_type;
95 	),
96 
97 	TP_printk(
98 		"sk=%p tcp_seq=%u rec_no=%llu sync_type=%d",
99 		__entry->sk, __entry->tcp_seq, __entry->rec_no,
100 		__entry->sync_type
101 	)
102 );
103 
104 TRACE_EVENT(tls_device_rx_resync_nh_schedule,
105 
106 	TP_PROTO(struct sock *sk),
107 
108 	TP_ARGS(sk),
109 
110 	TP_STRUCT__entry(
111 		__field(	struct sock *,	sk		)
112 	),
113 
114 	TP_fast_assign(
115 		__entry->sk = sk;
116 	),
117 
118 	TP_printk(
119 		"sk=%p", __entry->sk
120 	)
121 );
122 
123 TRACE_EVENT(tls_device_rx_resync_nh_delay,
124 
125 	TP_PROTO(struct sock *sk, u32 sock_data, u32 rec_len),
126 
127 	TP_ARGS(sk, sock_data, rec_len),
128 
129 	TP_STRUCT__entry(
130 		__field(	struct sock *,	sk		)
131 		__field(	u32,		sock_data	)
132 		__field(	u32,		rec_len		)
133 	),
134 
135 	TP_fast_assign(
136 		__entry->sk = sk;
137 		__entry->sock_data = sock_data;
138 		__entry->rec_len = rec_len;
139 	),
140 
141 	TP_printk(
142 		"sk=%p sock_data=%u rec_len=%u",
143 		__entry->sk, __entry->sock_data, __entry->rec_len
144 	)
145 );
146 
147 TRACE_EVENT(tls_device_tx_resync_req,
148 
149 	TP_PROTO(struct sock *sk, u32 tcp_seq, u32 exp_tcp_seq),
150 
151 	TP_ARGS(sk, tcp_seq, exp_tcp_seq),
152 
153 	TP_STRUCT__entry(
154 		__field(	struct sock *,	sk		)
155 		__field(	u32,		tcp_seq		)
156 		__field(	u32,		exp_tcp_seq	)
157 	),
158 
159 	TP_fast_assign(
160 		__entry->sk = sk;
161 		__entry->tcp_seq = tcp_seq;
162 		__entry->exp_tcp_seq = exp_tcp_seq;
163 	),
164 
165 	TP_printk(
166 		"sk=%p tcp_seq=%u exp_tcp_seq=%u",
167 		__entry->sk, __entry->tcp_seq, __entry->exp_tcp_seq
168 	)
169 );
170 
171 TRACE_EVENT(tls_device_tx_resync_send,
172 
173 	TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no),
174 
175 	TP_ARGS(sk, tcp_seq, rec_no),
176 
177 	TP_STRUCT__entry(
178 		__field(	struct sock *,	sk		)
179 		__field(	u64,		rec_no		)
180 		__field(	u32,		tcp_seq		)
181 	),
182 
183 	TP_fast_assign(
184 		__entry->sk = sk;
185 		__entry->rec_no = get_unaligned_be64(rec_no);
186 		__entry->tcp_seq = tcp_seq;
187 	),
188 
189 	TP_printk(
190 		"sk=%p tcp_seq=%u rec_no=%llu",
191 		__entry->sk, __entry->tcp_seq, __entry->rec_no
192 	)
193 );
194 
195 #endif /* _TLS_TRACE_H_ */
196 
197 #undef TRACE_INCLUDE_PATH
198 #define TRACE_INCLUDE_PATH .
199 #undef TRACE_INCLUDE_FILE
200 #define TRACE_INCLUDE_FILE trace
201 
202 #include <trace/define_trace.h>
203