18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
28c2ecf20Sopenharmony_ci/* Copyright (C) 2019 Netronome Systems, Inc. */
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci#undef TRACE_SYSTEM
58c2ecf20Sopenharmony_ci#define TRACE_SYSTEM tls
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci#if !defined(_TLS_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
88c2ecf20Sopenharmony_ci#define _TLS_TRACE_H_
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#include <asm/unaligned.h>
118c2ecf20Sopenharmony_ci#include <linux/tracepoint.h>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cistruct sock;
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ciTRACE_EVENT(tls_device_offload_set,
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci	TP_PROTO(struct sock *sk, int dir, u32 tcp_seq, u8 *rec_no, int ret),
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci	TP_ARGS(sk, dir, tcp_seq, rec_no, ret),
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
228c2ecf20Sopenharmony_ci		__field(	struct sock *,	sk		)
238c2ecf20Sopenharmony_ci		__field(	u64,		rec_no		)
248c2ecf20Sopenharmony_ci		__field(	int,		dir		)
258c2ecf20Sopenharmony_ci		__field(	u32,		tcp_seq		)
268c2ecf20Sopenharmony_ci		__field(	int,		ret		)
278c2ecf20Sopenharmony_ci	),
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci	TP_fast_assign(
308c2ecf20Sopenharmony_ci		__entry->sk = sk;
318c2ecf20Sopenharmony_ci		__entry->rec_no = get_unaligned_be64(rec_no);
328c2ecf20Sopenharmony_ci		__entry->dir = dir;
338c2ecf20Sopenharmony_ci		__entry->tcp_seq = tcp_seq;
348c2ecf20Sopenharmony_ci		__entry->ret = ret;
358c2ecf20Sopenharmony_ci	),
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci	TP_printk(
388c2ecf20Sopenharmony_ci		"sk=%p direction=%d tcp_seq=%u rec_no=%llu ret=%d",
398c2ecf20Sopenharmony_ci		__entry->sk, __entry->dir, __entry->tcp_seq, __entry->rec_no,
408c2ecf20Sopenharmony_ci		__entry->ret
418c2ecf20Sopenharmony_ci	)
428c2ecf20Sopenharmony_ci);
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciTRACE_EVENT(tls_device_decrypted,
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci	TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no, u32 rec_len,
478c2ecf20Sopenharmony_ci		 bool encrypted, bool decrypted),
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci	TP_ARGS(sk, tcp_seq, rec_no, rec_len, encrypted, decrypted),
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
528c2ecf20Sopenharmony_ci		__field(	struct sock *,	sk		)
538c2ecf20Sopenharmony_ci		__field(	u64,		rec_no		)
548c2ecf20Sopenharmony_ci		__field(	u32,		tcp_seq		)
558c2ecf20Sopenharmony_ci		__field(	u32,		rec_len		)
568c2ecf20Sopenharmony_ci		__field(	bool,		encrypted	)
578c2ecf20Sopenharmony_ci		__field(	bool,		decrypted	)
588c2ecf20Sopenharmony_ci	),
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci	TP_fast_assign(
618c2ecf20Sopenharmony_ci		__entry->sk = sk;
628c2ecf20Sopenharmony_ci		__entry->rec_no = get_unaligned_be64(rec_no);
638c2ecf20Sopenharmony_ci		__entry->tcp_seq = tcp_seq;
648c2ecf20Sopenharmony_ci		__entry->rec_len = rec_len;
658c2ecf20Sopenharmony_ci		__entry->encrypted = encrypted;
668c2ecf20Sopenharmony_ci		__entry->decrypted = decrypted;
678c2ecf20Sopenharmony_ci	),
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci	TP_printk(
708c2ecf20Sopenharmony_ci		"sk=%p tcp_seq=%u rec_no=%llu len=%u encrypted=%d decrypted=%d",
718c2ecf20Sopenharmony_ci		__entry->sk, __entry->tcp_seq,
728c2ecf20Sopenharmony_ci		__entry->rec_no, __entry->rec_len,
738c2ecf20Sopenharmony_ci		__entry->encrypted, __entry->decrypted
748c2ecf20Sopenharmony_ci	)
758c2ecf20Sopenharmony_ci);
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ciTRACE_EVENT(tls_device_rx_resync_send,
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci	TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no, int sync_type),
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci	TP_ARGS(sk, tcp_seq, rec_no, sync_type),
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
848c2ecf20Sopenharmony_ci		__field(	struct sock *,	sk		)
858c2ecf20Sopenharmony_ci		__field(	u64,		rec_no		)
868c2ecf20Sopenharmony_ci		__field(	u32,		tcp_seq		)
878c2ecf20Sopenharmony_ci		__field(	int,		sync_type	)
888c2ecf20Sopenharmony_ci	),
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci	TP_fast_assign(
918c2ecf20Sopenharmony_ci		__entry->sk = sk;
928c2ecf20Sopenharmony_ci		__entry->rec_no = get_unaligned_be64(rec_no);
938c2ecf20Sopenharmony_ci		__entry->tcp_seq = tcp_seq;
948c2ecf20Sopenharmony_ci		__entry->sync_type = sync_type;
958c2ecf20Sopenharmony_ci	),
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci	TP_printk(
988c2ecf20Sopenharmony_ci		"sk=%p tcp_seq=%u rec_no=%llu sync_type=%d",
998c2ecf20Sopenharmony_ci		__entry->sk, __entry->tcp_seq, __entry->rec_no,
1008c2ecf20Sopenharmony_ci		__entry->sync_type
1018c2ecf20Sopenharmony_ci	)
1028c2ecf20Sopenharmony_ci);
1038c2ecf20Sopenharmony_ci
1048c2ecf20Sopenharmony_ciTRACE_EVENT(tls_device_rx_resync_nh_schedule,
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ci	TP_PROTO(struct sock *sk),
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ci	TP_ARGS(sk),
1098c2ecf20Sopenharmony_ci
1108c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1118c2ecf20Sopenharmony_ci		__field(	struct sock *,	sk		)
1128c2ecf20Sopenharmony_ci	),
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci	TP_fast_assign(
1158c2ecf20Sopenharmony_ci		__entry->sk = sk;
1168c2ecf20Sopenharmony_ci	),
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci	TP_printk(
1198c2ecf20Sopenharmony_ci		"sk=%p", __entry->sk
1208c2ecf20Sopenharmony_ci	)
1218c2ecf20Sopenharmony_ci);
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ciTRACE_EVENT(tls_device_rx_resync_nh_delay,
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ci	TP_PROTO(struct sock *sk, u32 sock_data, u32 rec_len),
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ci	TP_ARGS(sk, sock_data, rec_len),
1288c2ecf20Sopenharmony_ci
1298c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1308c2ecf20Sopenharmony_ci		__field(	struct sock *,	sk		)
1318c2ecf20Sopenharmony_ci		__field(	u32,		sock_data	)
1328c2ecf20Sopenharmony_ci		__field(	u32,		rec_len		)
1338c2ecf20Sopenharmony_ci	),
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci	TP_fast_assign(
1368c2ecf20Sopenharmony_ci		__entry->sk = sk;
1378c2ecf20Sopenharmony_ci		__entry->sock_data = sock_data;
1388c2ecf20Sopenharmony_ci		__entry->rec_len = rec_len;
1398c2ecf20Sopenharmony_ci	),
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ci	TP_printk(
1428c2ecf20Sopenharmony_ci		"sk=%p sock_data=%u rec_len=%u",
1438c2ecf20Sopenharmony_ci		__entry->sk, __entry->sock_data, __entry->rec_len
1448c2ecf20Sopenharmony_ci	)
1458c2ecf20Sopenharmony_ci);
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ciTRACE_EVENT(tls_device_tx_resync_req,
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ci	TP_PROTO(struct sock *sk, u32 tcp_seq, u32 exp_tcp_seq),
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ci	TP_ARGS(sk, tcp_seq, exp_tcp_seq),
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1548c2ecf20Sopenharmony_ci		__field(	struct sock *,	sk		)
1558c2ecf20Sopenharmony_ci		__field(	u32,		tcp_seq		)
1568c2ecf20Sopenharmony_ci		__field(	u32,		exp_tcp_seq	)
1578c2ecf20Sopenharmony_ci	),
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci	TP_fast_assign(
1608c2ecf20Sopenharmony_ci		__entry->sk = sk;
1618c2ecf20Sopenharmony_ci		__entry->tcp_seq = tcp_seq;
1628c2ecf20Sopenharmony_ci		__entry->exp_tcp_seq = exp_tcp_seq;
1638c2ecf20Sopenharmony_ci	),
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ci	TP_printk(
1668c2ecf20Sopenharmony_ci		"sk=%p tcp_seq=%u exp_tcp_seq=%u",
1678c2ecf20Sopenharmony_ci		__entry->sk, __entry->tcp_seq, __entry->exp_tcp_seq
1688c2ecf20Sopenharmony_ci	)
1698c2ecf20Sopenharmony_ci);
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ciTRACE_EVENT(tls_device_tx_resync_send,
1728c2ecf20Sopenharmony_ci
1738c2ecf20Sopenharmony_ci	TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no),
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci	TP_ARGS(sk, tcp_seq, rec_no),
1768c2ecf20Sopenharmony_ci
1778c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1788c2ecf20Sopenharmony_ci		__field(	struct sock *,	sk		)
1798c2ecf20Sopenharmony_ci		__field(	u64,		rec_no		)
1808c2ecf20Sopenharmony_ci		__field(	u32,		tcp_seq		)
1818c2ecf20Sopenharmony_ci	),
1828c2ecf20Sopenharmony_ci
1838c2ecf20Sopenharmony_ci	TP_fast_assign(
1848c2ecf20Sopenharmony_ci		__entry->sk = sk;
1858c2ecf20Sopenharmony_ci		__entry->rec_no = get_unaligned_be64(rec_no);
1868c2ecf20Sopenharmony_ci		__entry->tcp_seq = tcp_seq;
1878c2ecf20Sopenharmony_ci	),
1888c2ecf20Sopenharmony_ci
1898c2ecf20Sopenharmony_ci	TP_printk(
1908c2ecf20Sopenharmony_ci		"sk=%p tcp_seq=%u rec_no=%llu",
1918c2ecf20Sopenharmony_ci		__entry->sk, __entry->tcp_seq, __entry->rec_no
1928c2ecf20Sopenharmony_ci	)
1938c2ecf20Sopenharmony_ci);
1948c2ecf20Sopenharmony_ci
1958c2ecf20Sopenharmony_ci#endif /* _TLS_TRACE_H_ */
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_PATH
1988c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_PATH .
1998c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_FILE
2008c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
2018c2ecf20Sopenharmony_ci
2028c2ecf20Sopenharmony_ci#include <trace/define_trace.h>
203