162306a36Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
262306a36Sopenharmony_ci/* Copyright (C) 2019 Netronome Systems, Inc. */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#undef TRACE_SYSTEM
562306a36Sopenharmony_ci#define TRACE_SYSTEM tls
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#if !defined(_TLS_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
862306a36Sopenharmony_ci#define _TLS_TRACE_H_
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <asm/unaligned.h>
1162306a36Sopenharmony_ci#include <linux/tracepoint.h>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cistruct sock;
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciTRACE_EVENT(tls_device_offload_set,
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci	TP_PROTO(struct sock *sk, int dir, u32 tcp_seq, u8 *rec_no, int ret),
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	TP_ARGS(sk, dir, tcp_seq, rec_no, ret),
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	TP_STRUCT__entry(
2262306a36Sopenharmony_ci		__field(	struct sock *,	sk		)
2362306a36Sopenharmony_ci		__field(	u64,		rec_no		)
2462306a36Sopenharmony_ci		__field(	int,		dir		)
2562306a36Sopenharmony_ci		__field(	u32,		tcp_seq		)
2662306a36Sopenharmony_ci		__field(	int,		ret		)
2762306a36Sopenharmony_ci	),
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci	TP_fast_assign(
3062306a36Sopenharmony_ci		__entry->sk = sk;
3162306a36Sopenharmony_ci		__entry->rec_no = get_unaligned_be64(rec_no);
3262306a36Sopenharmony_ci		__entry->dir = dir;
3362306a36Sopenharmony_ci		__entry->tcp_seq = tcp_seq;
3462306a36Sopenharmony_ci		__entry->ret = ret;
3562306a36Sopenharmony_ci	),
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci	TP_printk(
3862306a36Sopenharmony_ci		"sk=%p direction=%d tcp_seq=%u rec_no=%llu ret=%d",
3962306a36Sopenharmony_ci		__entry->sk, __entry->dir, __entry->tcp_seq, __entry->rec_no,
4062306a36Sopenharmony_ci		__entry->ret
4162306a36Sopenharmony_ci	)
4262306a36Sopenharmony_ci);
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciTRACE_EVENT(tls_device_decrypted,
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci	TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no, u32 rec_len,
4762306a36Sopenharmony_ci		 bool encrypted, bool decrypted),
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	TP_ARGS(sk, tcp_seq, rec_no, rec_len, encrypted, decrypted),
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci	TP_STRUCT__entry(
5262306a36Sopenharmony_ci		__field(	struct sock *,	sk		)
5362306a36Sopenharmony_ci		__field(	u64,		rec_no		)
5462306a36Sopenharmony_ci		__field(	u32,		tcp_seq		)
5562306a36Sopenharmony_ci		__field(	u32,		rec_len		)
5662306a36Sopenharmony_ci		__field(	bool,		encrypted	)
5762306a36Sopenharmony_ci		__field(	bool,		decrypted	)
5862306a36Sopenharmony_ci	),
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci	TP_fast_assign(
6162306a36Sopenharmony_ci		__entry->sk = sk;
6262306a36Sopenharmony_ci		__entry->rec_no = get_unaligned_be64(rec_no);
6362306a36Sopenharmony_ci		__entry->tcp_seq = tcp_seq;
6462306a36Sopenharmony_ci		__entry->rec_len = rec_len;
6562306a36Sopenharmony_ci		__entry->encrypted = encrypted;
6662306a36Sopenharmony_ci		__entry->decrypted = decrypted;
6762306a36Sopenharmony_ci	),
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci	TP_printk(
7062306a36Sopenharmony_ci		"sk=%p tcp_seq=%u rec_no=%llu len=%u encrypted=%d decrypted=%d",
7162306a36Sopenharmony_ci		__entry->sk, __entry->tcp_seq,
7262306a36Sopenharmony_ci		__entry->rec_no, __entry->rec_len,
7362306a36Sopenharmony_ci		__entry->encrypted, __entry->decrypted
7462306a36Sopenharmony_ci	)
7562306a36Sopenharmony_ci);
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciTRACE_EVENT(tls_device_rx_resync_send,
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci	TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no, int sync_type),
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci	TP_ARGS(sk, tcp_seq, rec_no, sync_type),
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci	TP_STRUCT__entry(
8462306a36Sopenharmony_ci		__field(	struct sock *,	sk		)
8562306a36Sopenharmony_ci		__field(	u64,		rec_no		)
8662306a36Sopenharmony_ci		__field(	u32,		tcp_seq		)
8762306a36Sopenharmony_ci		__field(	int,		sync_type	)
8862306a36Sopenharmony_ci	),
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci	TP_fast_assign(
9162306a36Sopenharmony_ci		__entry->sk = sk;
9262306a36Sopenharmony_ci		__entry->rec_no = get_unaligned_be64(rec_no);
9362306a36Sopenharmony_ci		__entry->tcp_seq = tcp_seq;
9462306a36Sopenharmony_ci		__entry->sync_type = sync_type;
9562306a36Sopenharmony_ci	),
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci	TP_printk(
9862306a36Sopenharmony_ci		"sk=%p tcp_seq=%u rec_no=%llu sync_type=%d",
9962306a36Sopenharmony_ci		__entry->sk, __entry->tcp_seq, __entry->rec_no,
10062306a36Sopenharmony_ci		__entry->sync_type
10162306a36Sopenharmony_ci	)
10262306a36Sopenharmony_ci);
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ciTRACE_EVENT(tls_device_rx_resync_nh_schedule,
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci	TP_PROTO(struct sock *sk),
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci	TP_ARGS(sk),
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci	TP_STRUCT__entry(
11162306a36Sopenharmony_ci		__field(	struct sock *,	sk		)
11262306a36Sopenharmony_ci	),
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci	TP_fast_assign(
11562306a36Sopenharmony_ci		__entry->sk = sk;
11662306a36Sopenharmony_ci	),
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci	TP_printk(
11962306a36Sopenharmony_ci		"sk=%p", __entry->sk
12062306a36Sopenharmony_ci	)
12162306a36Sopenharmony_ci);
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ciTRACE_EVENT(tls_device_rx_resync_nh_delay,
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci	TP_PROTO(struct sock *sk, u32 sock_data, u32 rec_len),
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci	TP_ARGS(sk, sock_data, rec_len),
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci	TP_STRUCT__entry(
13062306a36Sopenharmony_ci		__field(	struct sock *,	sk		)
13162306a36Sopenharmony_ci		__field(	u32,		sock_data	)
13262306a36Sopenharmony_ci		__field(	u32,		rec_len		)
13362306a36Sopenharmony_ci	),
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci	TP_fast_assign(
13662306a36Sopenharmony_ci		__entry->sk = sk;
13762306a36Sopenharmony_ci		__entry->sock_data = sock_data;
13862306a36Sopenharmony_ci		__entry->rec_len = rec_len;
13962306a36Sopenharmony_ci	),
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci	TP_printk(
14262306a36Sopenharmony_ci		"sk=%p sock_data=%u rec_len=%u",
14362306a36Sopenharmony_ci		__entry->sk, __entry->sock_data, __entry->rec_len
14462306a36Sopenharmony_ci	)
14562306a36Sopenharmony_ci);
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ciTRACE_EVENT(tls_device_tx_resync_req,
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci	TP_PROTO(struct sock *sk, u32 tcp_seq, u32 exp_tcp_seq),
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci	TP_ARGS(sk, tcp_seq, exp_tcp_seq),
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ci	TP_STRUCT__entry(
15462306a36Sopenharmony_ci		__field(	struct sock *,	sk		)
15562306a36Sopenharmony_ci		__field(	u32,		tcp_seq		)
15662306a36Sopenharmony_ci		__field(	u32,		exp_tcp_seq	)
15762306a36Sopenharmony_ci	),
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci	TP_fast_assign(
16062306a36Sopenharmony_ci		__entry->sk = sk;
16162306a36Sopenharmony_ci		__entry->tcp_seq = tcp_seq;
16262306a36Sopenharmony_ci		__entry->exp_tcp_seq = exp_tcp_seq;
16362306a36Sopenharmony_ci	),
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci	TP_printk(
16662306a36Sopenharmony_ci		"sk=%p tcp_seq=%u exp_tcp_seq=%u",
16762306a36Sopenharmony_ci		__entry->sk, __entry->tcp_seq, __entry->exp_tcp_seq
16862306a36Sopenharmony_ci	)
16962306a36Sopenharmony_ci);
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ciTRACE_EVENT(tls_device_tx_resync_send,
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci	TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no),
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci	TP_ARGS(sk, tcp_seq, rec_no),
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci	TP_STRUCT__entry(
17862306a36Sopenharmony_ci		__field(	struct sock *,	sk		)
17962306a36Sopenharmony_ci		__field(	u64,		rec_no		)
18062306a36Sopenharmony_ci		__field(	u32,		tcp_seq		)
18162306a36Sopenharmony_ci	),
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci	TP_fast_assign(
18462306a36Sopenharmony_ci		__entry->sk = sk;
18562306a36Sopenharmony_ci		__entry->rec_no = get_unaligned_be64(rec_no);
18662306a36Sopenharmony_ci		__entry->tcp_seq = tcp_seq;
18762306a36Sopenharmony_ci	),
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci	TP_printk(
19062306a36Sopenharmony_ci		"sk=%p tcp_seq=%u rec_no=%llu",
19162306a36Sopenharmony_ci		__entry->sk, __entry->tcp_seq, __entry->rec_no
19262306a36Sopenharmony_ci	)
19362306a36Sopenharmony_ci);
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci#endif /* _TLS_TRACE_H_ */
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
19862306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
19962306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
20062306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci#include <trace/define_trace.h>
203