root/net/tls/trace.h
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/* Copyright (C) 2019 Netronome Systems, Inc. */

#undef TRACE_SYSTEM
#define TRACE_SYSTEM tls

#if !defined(_TLS_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
#define _TLS_TRACE_H_

#include <linux/unaligned.h>
#include <linux/tracepoint.h>

struct sock;

TRACE_EVENT(tls_device_offload_set,

        TP_PROTO(struct sock *sk, int dir, u32 tcp_seq, u8 *rec_no, int ret),

        TP_ARGS(sk, dir, tcp_seq, rec_no, ret),

        TP_STRUCT__entry(
                __field(        struct sock *,  sk              )
                __field(        u64,            rec_no          )
                __field(        int,            dir             )
                __field(        u32,            tcp_seq         )
                __field(        int,            ret             )
        ),

        TP_fast_assign(
                __entry->sk = sk;
                __entry->rec_no = get_unaligned_be64(rec_no);
                __entry->dir = dir;
                __entry->tcp_seq = tcp_seq;
                __entry->ret = ret;
        ),

        TP_printk(
                "sk=%p direction=%d tcp_seq=%u rec_no=%llu ret=%d",
                __entry->sk, __entry->dir, __entry->tcp_seq, __entry->rec_no,
                __entry->ret
        )
);

TRACE_EVENT(tls_device_decrypted,

        TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no, u32 rec_len,
                 bool encrypted, bool decrypted),

        TP_ARGS(sk, tcp_seq, rec_no, rec_len, encrypted, decrypted),

        TP_STRUCT__entry(
                __field(        struct sock *,  sk              )
                __field(        u64,            rec_no          )
                __field(        u32,            tcp_seq         )
                __field(        u32,            rec_len         )
                __field(        bool,           encrypted       )
                __field(        bool,           decrypted       )
        ),

        TP_fast_assign(
                __entry->sk = sk;
                __entry->rec_no = get_unaligned_be64(rec_no);
                __entry->tcp_seq = tcp_seq;
                __entry->rec_len = rec_len;
                __entry->encrypted = encrypted;
                __entry->decrypted = decrypted;
        ),

        TP_printk(
                "sk=%p tcp_seq=%u rec_no=%llu len=%u encrypted=%d decrypted=%d",
                __entry->sk, __entry->tcp_seq,
                __entry->rec_no, __entry->rec_len,
                __entry->encrypted, __entry->decrypted
        )
);

TRACE_EVENT(tls_device_rx_resync_send,

        TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no, int sync_type),

        TP_ARGS(sk, tcp_seq, rec_no, sync_type),

        TP_STRUCT__entry(
                __field(        struct sock *,  sk              )
                __field(        u64,            rec_no          )
                __field(        u32,            tcp_seq         )
                __field(        int,            sync_type       )
        ),

        TP_fast_assign(
                __entry->sk = sk;
                __entry->rec_no = get_unaligned_be64(rec_no);
                __entry->tcp_seq = tcp_seq;
                __entry->sync_type = sync_type;
        ),

        TP_printk(
                "sk=%p tcp_seq=%u rec_no=%llu sync_type=%d",
                __entry->sk, __entry->tcp_seq, __entry->rec_no,
                __entry->sync_type
        )
);

TRACE_EVENT(tls_device_rx_resync_nh_schedule,

        TP_PROTO(struct sock *sk),

        TP_ARGS(sk),

        TP_STRUCT__entry(
                __field(        struct sock *,  sk              )
        ),

        TP_fast_assign(
                __entry->sk = sk;
        ),

        TP_printk(
                "sk=%p", __entry->sk
        )
);

TRACE_EVENT(tls_device_rx_resync_nh_delay,

        TP_PROTO(struct sock *sk, u32 sock_data, u32 rec_len),

        TP_ARGS(sk, sock_data, rec_len),

        TP_STRUCT__entry(
                __field(        struct sock *,  sk              )
                __field(        u32,            sock_data       )
                __field(        u32,            rec_len         )
        ),

        TP_fast_assign(
                __entry->sk = sk;
                __entry->sock_data = sock_data;
                __entry->rec_len = rec_len;
        ),

        TP_printk(
                "sk=%p sock_data=%u rec_len=%u",
                __entry->sk, __entry->sock_data, __entry->rec_len
        )
);

TRACE_EVENT(tls_device_tx_resync_req,

        TP_PROTO(struct sock *sk, u32 tcp_seq, u32 exp_tcp_seq),

        TP_ARGS(sk, tcp_seq, exp_tcp_seq),

        TP_STRUCT__entry(
                __field(        struct sock *,  sk              )
                __field(        u32,            tcp_seq         )
                __field(        u32,            exp_tcp_seq     )
        ),

        TP_fast_assign(
                __entry->sk = sk;
                __entry->tcp_seq = tcp_seq;
                __entry->exp_tcp_seq = exp_tcp_seq;
        ),

        TP_printk(
                "sk=%p tcp_seq=%u exp_tcp_seq=%u",
                __entry->sk, __entry->tcp_seq, __entry->exp_tcp_seq
        )
);

TRACE_EVENT(tls_device_tx_resync_send,

        TP_PROTO(struct sock *sk, u32 tcp_seq, u8 *rec_no),

        TP_ARGS(sk, tcp_seq, rec_no),

        TP_STRUCT__entry(
                __field(        struct sock *,  sk              )
                __field(        u64,            rec_no          )
                __field(        u32,            tcp_seq         )
        ),

        TP_fast_assign(
                __entry->sk = sk;
                __entry->rec_no = get_unaligned_be64(rec_no);
                __entry->tcp_seq = tcp_seq;
        ),

        TP_printk(
                "sk=%p tcp_seq=%u rec_no=%llu",
                __entry->sk, __entry->tcp_seq, __entry->rec_no
        )
);

#endif /* _TLS_TRACE_H_ */

#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH .
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE trace

#include <trace/define_trace.h>