linux/drivers/net/fjes/fjes_trace.h

366 lines
10 KiB
C
Raw Permalink Normal View History

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* FUJITSU Extended Socket Network Device driver
* Copyright (c) 2015-2016 FUJITSU LIMITED
*/
#if !defined(FJES_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
#define FJES_TRACE_H_
#include <linux/types.h>
#include <linux/tracepoint.h>
#undef TRACE_SYSTEM
#define TRACE_SYSTEM fjes
/* tracepoints for fjes_hw.c */
TRACE_EVENT(fjes_hw_issue_request_command,
TP_PROTO(union REG_CR *cr, union REG_CS *cs, int timeout,
enum fjes_dev_command_response_e ret),
TP_ARGS(cr, cs, timeout, ret),
TP_STRUCT__entry(
__field(u16, cr_req)
__field(u8, cr_error)
__field(u16, cr_err_info)
__field(u8, cr_req_start)
__field(u16, cs_req)
__field(u8, cs_busy)
__field(u8, cs_complete)
__field(int, timeout)
ftrace: Rework event_create_dir() Rework event_create_dir() to use an array of static data instead of function pointers where possible. The problem is that it would call the function pointer on module load before parse_args(), possibly even before jump_labels were initialized. Luckily the generated functions don't use jump_labels but it still seems fragile. It also gets in the way of changing when we make the module map executable. The generated function are basically calling trace_define_field() with a bunch of static arguments. So instead of a function, capture these arguments in a static array, avoiding the function call. Now there are a number of cases where the fields are dynamic (syscall arguments, kprobes and uprobes), in which case a static array does not work, for these we preserve the function call. Luckily all these cases are not related to modules and so we can retain the function call for them. Also fix up all broken tracepoint definitions that now generate a compile error. Tested-by: Alexei Starovoitov <ast@kernel.org> Tested-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Acked-by: Alexei Starovoitov <ast@kernel.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: https://lkml.kernel.org/r/20191111132458.342979914@infradead.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
2019-10-24 22:26:59 +02:00
__field(int, ret)
),
TP_fast_assign(
__entry->cr_req = cr->bits.req_code;
__entry->cr_error = cr->bits.error;
__entry->cr_err_info = cr->bits.err_info;
__entry->cr_req_start = cr->bits.req_start;
__entry->cs_req = cs->bits.req_code;
__entry->cs_busy = cs->bits.busy;
__entry->cs_complete = cs->bits.complete;
__entry->timeout = timeout;
__entry->ret = ret;
),
TP_printk("CR=[req=%04x, error=%u, err_info=%04x, req_start=%u], CS=[req=%04x, busy=%u, complete=%u], timeout=%d, ret=%d",
__entry->cr_req, __entry->cr_error, __entry->cr_err_info,
__entry->cr_req_start, __entry->cs_req, __entry->cs_busy,
__entry->cs_complete, __entry->timeout, __entry->ret)
);
TRACE_EVENT(fjes_hw_request_info,
TP_PROTO(struct fjes_hw *hw, union fjes_device_command_res *res_buf),
TP_ARGS(hw, res_buf),
TP_STRUCT__entry(
__field(int, length)
__field(int, code)
__dynamic_array(u8, zone, hw->max_epid)
__dynamic_array(u8, status, hw->max_epid)
),
TP_fast_assign(
int x;
__entry->length = res_buf->info.length;
__entry->code = res_buf->info.code;
for (x = 0; x < hw->max_epid; x++) {
*((u8 *)__get_dynamic_array(zone) + x) =
res_buf->info.info[x].zone;
*((u8 *)__get_dynamic_array(status) + x) =
res_buf->info.info[x].es_status;
}
),
TP_printk("res_buf=[length=%d, code=%d, es_zones=%s, es_status=%s]",
__entry->length, __entry->code,
__print_array(__get_dynamic_array(zone),
__get_dynamic_array_len(zone) / sizeof(u8),
sizeof(u8)),
__print_array(__get_dynamic_array(status),
__get_dynamic_array_len(status) / sizeof(u8),
sizeof(u8)))
);
TRACE_EVENT(fjes_hw_request_info_err,
TP_PROTO(char *err),
TP_ARGS(err),
TP_STRUCT__entry(
__string(err, err)
),
TP_fast_assign(
tracing/treewide: Remove second parameter of __assign_str() With the rework of how the __string() handles dynamic strings where it saves off the source string in field in the helper structure[1], the assignment of that value to the trace event field is stored in the helper value and does not need to be passed in again. This means that with: __string(field, mystring) Which use to be assigned with __assign_str(field, mystring), no longer needs the second parameter and it is unused. With this, __assign_str() will now only get a single parameter. There's over 700 users of __assign_str() and because coccinelle does not handle the TRACE_EVENT() macro I ended up using the following sed script: git grep -l __assign_str | while read a ; do sed -e 's/\(__assign_str([^,]*[^ ,]\) *,[^;]*/\1)/' $a > /tmp/test-file; mv /tmp/test-file $a; done I then searched for __assign_str() that did not end with ';' as those were multi line assignments that the sed script above would fail to catch. Note, the same updates will need to be done for: __assign_str_len() __assign_rel_str() __assign_rel_str_len() I tested this with both an allmodconfig and an allyesconfig (build only for both). [1] https://lore.kernel.org/linux-trace-kernel/20240222211442.634192653@goodmis.org/ Link: https://lore.kernel.org/linux-trace-kernel/20240516133454.681ba6a0@rorschach.local.home Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Julia Lawall <Julia.Lawall@inria.fr> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Acked-by: Jani Nikula <jani.nikula@intel.com> Acked-by: Christian König <christian.koenig@amd.com> for the amdgpu parts. Acked-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> #for Acked-by: Rafael J. Wysocki <rafael@kernel.org> # for thermal Acked-by: Takashi Iwai <tiwai@suse.de> Acked-by: Darrick J. Wong <djwong@kernel.org> # xfs Tested-by: Guenter Roeck <linux@roeck-us.net>
2024-05-16 13:34:54 -04:00
__assign_str(err);
),
TP_printk("%s", __get_str(err))
);
TRACE_EVENT(fjes_hw_register_buff_addr_req,
TP_PROTO(union fjes_device_command_req *req_buf,
struct ep_share_mem_info *buf_pair),
TP_ARGS(req_buf, buf_pair),
TP_STRUCT__entry(
__field(int, length)
__field(int, epid)
__field(u64, tx)
__field(size_t, tx_size)
__field(u64, rx)
__field(size_t, rx_size)
),
TP_fast_assign(
void *tx, *rx;
tx = (void *)buf_pair->tx.buffer;
rx = (void *)buf_pair->rx.buffer;
__entry->length = req_buf->share_buffer.length;
__entry->epid = req_buf->share_buffer.epid;
__entry->tx_size = buf_pair->tx.size;
__entry->rx_size = buf_pair->rx.size;
__entry->tx = page_to_phys(vmalloc_to_page(tx)) +
offset_in_page(tx);
__entry->rx = page_to_phys(vmalloc_to_page(rx)) +
offset_in_page(rx);
),
TP_printk("req_buf=[length=%d, epid=%d], TX=[phy=0x%016llx, size=%zu], RX=[phy=0x%016llx, size=%zu]",
__entry->length, __entry->epid, __entry->tx, __entry->tx_size,
__entry->rx, __entry->rx_size)
);
TRACE_EVENT(fjes_hw_register_buff_addr,
TP_PROTO(union fjes_device_command_res *res_buf, int timeout),
TP_ARGS(res_buf, timeout),
TP_STRUCT__entry(
__field(int, length)
__field(int, code)
__field(int, timeout)
),
TP_fast_assign(
__entry->length = res_buf->share_buffer.length;
__entry->code = res_buf->share_buffer.code;
__entry->timeout = timeout;
),
TP_printk("res_buf=[length=%d, code=%d], timeout=%d",
__entry->length, __entry->code, __entry->timeout)
);
TRACE_EVENT(fjes_hw_register_buff_addr_err,
TP_PROTO(char *err),
TP_ARGS(err),
TP_STRUCT__entry(
__string(err, err)
),
TP_fast_assign(
tracing/treewide: Remove second parameter of __assign_str() With the rework of how the __string() handles dynamic strings where it saves off the source string in field in the helper structure[1], the assignment of that value to the trace event field is stored in the helper value and does not need to be passed in again. This means that with: __string(field, mystring) Which use to be assigned with __assign_str(field, mystring), no longer needs the second parameter and it is unused. With this, __assign_str() will now only get a single parameter. There's over 700 users of __assign_str() and because coccinelle does not handle the TRACE_EVENT() macro I ended up using the following sed script: git grep -l __assign_str | while read a ; do sed -e 's/\(__assign_str([^,]*[^ ,]\) *,[^;]*/\1)/' $a > /tmp/test-file; mv /tmp/test-file $a; done I then searched for __assign_str() that did not end with ';' as those were multi line assignments that the sed script above would fail to catch. Note, the same updates will need to be done for: __assign_str_len() __assign_rel_str() __assign_rel_str_len() I tested this with both an allmodconfig and an allyesconfig (build only for both). [1] https://lore.kernel.org/linux-trace-kernel/20240222211442.634192653@goodmis.org/ Link: https://lore.kernel.org/linux-trace-kernel/20240516133454.681ba6a0@rorschach.local.home Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Julia Lawall <Julia.Lawall@inria.fr> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Acked-by: Jani Nikula <jani.nikula@intel.com> Acked-by: Christian König <christian.koenig@amd.com> for the amdgpu parts. Acked-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> #for Acked-by: Rafael J. Wysocki <rafael@kernel.org> # for thermal Acked-by: Takashi Iwai <tiwai@suse.de> Acked-by: Darrick J. Wong <djwong@kernel.org> # xfs Tested-by: Guenter Roeck <linux@roeck-us.net>
2024-05-16 13:34:54 -04:00
__assign_str(err);
),
TP_printk("%s", __get_str(err))
);
TRACE_EVENT(fjes_hw_unregister_buff_addr_req,
TP_PROTO(union fjes_device_command_req *req_buf),
TP_ARGS(req_buf),
TP_STRUCT__entry(
__field(int, length)
__field(int, epid)
),
TP_fast_assign(
__entry->length = req_buf->unshare_buffer.length;
__entry->epid = req_buf->unshare_buffer.epid;
),
TP_printk("req_buf=[length=%d, epid=%d]",
__entry->length, __entry->epid)
);
TRACE_EVENT(fjes_hw_unregister_buff_addr,
TP_PROTO(union fjes_device_command_res *res_buf, int timeout),
TP_ARGS(res_buf, timeout),
TP_STRUCT__entry(
__field(int, length)
__field(int, code)
__field(int, timeout)
),
TP_fast_assign(
__entry->length = res_buf->unshare_buffer.length;
__entry->code = res_buf->unshare_buffer.code;
__entry->timeout = timeout;
),
TP_printk("res_buf=[length=%d, code=%d], timeout=%d",
__entry->length, __entry->code, __entry->timeout)
);
TRACE_EVENT(fjes_hw_unregister_buff_addr_err,
TP_PROTO(char *err),
TP_ARGS(err),
TP_STRUCT__entry(
__string(err, err)
),
TP_fast_assign(
tracing/treewide: Remove second parameter of __assign_str() With the rework of how the __string() handles dynamic strings where it saves off the source string in field in the helper structure[1], the assignment of that value to the trace event field is stored in the helper value and does not need to be passed in again. This means that with: __string(field, mystring) Which use to be assigned with __assign_str(field, mystring), no longer needs the second parameter and it is unused. With this, __assign_str() will now only get a single parameter. There's over 700 users of __assign_str() and because coccinelle does not handle the TRACE_EVENT() macro I ended up using the following sed script: git grep -l __assign_str | while read a ; do sed -e 's/\(__assign_str([^,]*[^ ,]\) *,[^;]*/\1)/' $a > /tmp/test-file; mv /tmp/test-file $a; done I then searched for __assign_str() that did not end with ';' as those were multi line assignments that the sed script above would fail to catch. Note, the same updates will need to be done for: __assign_str_len() __assign_rel_str() __assign_rel_str_len() I tested this with both an allmodconfig and an allyesconfig (build only for both). [1] https://lore.kernel.org/linux-trace-kernel/20240222211442.634192653@goodmis.org/ Link: https://lore.kernel.org/linux-trace-kernel/20240516133454.681ba6a0@rorschach.local.home Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Julia Lawall <Julia.Lawall@inria.fr> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Acked-by: Jani Nikula <jani.nikula@intel.com> Acked-by: Christian König <christian.koenig@amd.com> for the amdgpu parts. Acked-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> #for Acked-by: Rafael J. Wysocki <rafael@kernel.org> # for thermal Acked-by: Takashi Iwai <tiwai@suse.de> Acked-by: Darrick J. Wong <djwong@kernel.org> # xfs Tested-by: Guenter Roeck <linux@roeck-us.net>
2024-05-16 13:34:54 -04:00
__assign_str(err);
),
TP_printk("%s", __get_str(err))
);
TRACE_EVENT(fjes_hw_start_debug_req,
TP_PROTO(union fjes_device_command_req *req_buf),
TP_ARGS(req_buf),
TP_STRUCT__entry(
__field(int, length)
__field(int, mode)
__field(phys_addr_t, buffer)
),
TP_fast_assign(
__entry->length = req_buf->start_trace.length;
__entry->mode = req_buf->start_trace.mode;
__entry->buffer = req_buf->start_trace.buffer[0];
),
TP_printk("req_buf=[length=%d, mode=%d, buffer=%pap]",
__entry->length, __entry->mode, &__entry->buffer)
);
TRACE_EVENT(fjes_hw_start_debug,
TP_PROTO(union fjes_device_command_res *res_buf),
TP_ARGS(res_buf),
TP_STRUCT__entry(
__field(int, length)
__field(int, code)
),
TP_fast_assign(
__entry->length = res_buf->start_trace.length;
__entry->code = res_buf->start_trace.code;
),
TP_printk("res_buf=[length=%d, code=%d]", __entry->length, __entry->code)
);
TRACE_EVENT(fjes_hw_start_debug_err,
TP_PROTO(char *err),
TP_ARGS(err),
TP_STRUCT__entry(
__string(err, err)
),
TP_fast_assign(
tracing/treewide: Remove second parameter of __assign_str() With the rework of how the __string() handles dynamic strings where it saves off the source string in field in the helper structure[1], the assignment of that value to the trace event field is stored in the helper value and does not need to be passed in again. This means that with: __string(field, mystring) Which use to be assigned with __assign_str(field, mystring), no longer needs the second parameter and it is unused. With this, __assign_str() will now only get a single parameter. There's over 700 users of __assign_str() and because coccinelle does not handle the TRACE_EVENT() macro I ended up using the following sed script: git grep -l __assign_str | while read a ; do sed -e 's/\(__assign_str([^,]*[^ ,]\) *,[^;]*/\1)/' $a > /tmp/test-file; mv /tmp/test-file $a; done I then searched for __assign_str() that did not end with ';' as those were multi line assignments that the sed script above would fail to catch. Note, the same updates will need to be done for: __assign_str_len() __assign_rel_str() __assign_rel_str_len() I tested this with both an allmodconfig and an allyesconfig (build only for both). [1] https://lore.kernel.org/linux-trace-kernel/20240222211442.634192653@goodmis.org/ Link: https://lore.kernel.org/linux-trace-kernel/20240516133454.681ba6a0@rorschach.local.home Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Julia Lawall <Julia.Lawall@inria.fr> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Acked-by: Jani Nikula <jani.nikula@intel.com> Acked-by: Christian König <christian.koenig@amd.com> for the amdgpu parts. Acked-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> #for Acked-by: Rafael J. Wysocki <rafael@kernel.org> # for thermal Acked-by: Takashi Iwai <tiwai@suse.de> Acked-by: Darrick J. Wong <djwong@kernel.org> # xfs Tested-by: Guenter Roeck <linux@roeck-us.net>
2024-05-16 13:34:54 -04:00
__assign_str(err);
),
TP_printk("%s", __get_str(err))
);
TRACE_EVENT(fjes_hw_stop_debug,
TP_PROTO(union fjes_device_command_res *res_buf),
TP_ARGS(res_buf),
TP_STRUCT__entry(
__field(int, length)
__field(int, code)
),
TP_fast_assign(
__entry->length = res_buf->stop_trace.length;
__entry->code = res_buf->stop_trace.code;
),
TP_printk("res_buf=[length=%d, code=%d]", __entry->length, __entry->code)
);
TRACE_EVENT(fjes_hw_stop_debug_err,
TP_PROTO(char *err),
TP_ARGS(err),
TP_STRUCT__entry(
__string(err, err)
),
TP_fast_assign(
tracing/treewide: Remove second parameter of __assign_str() With the rework of how the __string() handles dynamic strings where it saves off the source string in field in the helper structure[1], the assignment of that value to the trace event field is stored in the helper value and does not need to be passed in again. This means that with: __string(field, mystring) Which use to be assigned with __assign_str(field, mystring), no longer needs the second parameter and it is unused. With this, __assign_str() will now only get a single parameter. There's over 700 users of __assign_str() and because coccinelle does not handle the TRACE_EVENT() macro I ended up using the following sed script: git grep -l __assign_str | while read a ; do sed -e 's/\(__assign_str([^,]*[^ ,]\) *,[^;]*/\1)/' $a > /tmp/test-file; mv /tmp/test-file $a; done I then searched for __assign_str() that did not end with ';' as those were multi line assignments that the sed script above would fail to catch. Note, the same updates will need to be done for: __assign_str_len() __assign_rel_str() __assign_rel_str_len() I tested this with both an allmodconfig and an allyesconfig (build only for both). [1] https://lore.kernel.org/linux-trace-kernel/20240222211442.634192653@goodmis.org/ Link: https://lore.kernel.org/linux-trace-kernel/20240516133454.681ba6a0@rorschach.local.home Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Julia Lawall <Julia.Lawall@inria.fr> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Acked-by: Jani Nikula <jani.nikula@intel.com> Acked-by: Christian König <christian.koenig@amd.com> for the amdgpu parts. Acked-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> #for Acked-by: Rafael J. Wysocki <rafael@kernel.org> # for thermal Acked-by: Takashi Iwai <tiwai@suse.de> Acked-by: Darrick J. Wong <djwong@kernel.org> # xfs Tested-by: Guenter Roeck <linux@roeck-us.net>
2024-05-16 13:34:54 -04:00
__assign_str(err);
),
TP_printk("%s", __get_str(err))
);
/* tracepoints for fjes_main.c */
TRACE_EVENT(fjes_txrx_stop_req_irq_pre,
TP_PROTO(struct fjes_hw *hw, int src_epid,
enum ep_partner_status status),
TP_ARGS(hw, src_epid, status),
TP_STRUCT__entry(
__field(int, src_epid)
__field(enum ep_partner_status, status)
__field(u8, ep_status)
__field(unsigned long, txrx_stop_req_bit)
__field(u16, rx_status)
),
TP_fast_assign(
__entry->src_epid = src_epid;
__entry->status = status;
__entry->ep_status = hw->hw_info.share->ep_status[src_epid];
__entry->txrx_stop_req_bit = hw->txrx_stop_req_bit;
__entry->rx_status =
hw->ep_shm_info[src_epid].tx.info->v1i.rx_status;
),
TP_printk("epid=%d, partner_status=%d, ep_status=%x, txrx_stop_req_bit=%016lx, tx.rx_status=%08x",
__entry->src_epid, __entry->status, __entry->ep_status,
__entry->txrx_stop_req_bit, __entry->rx_status)
);
TRACE_EVENT(fjes_txrx_stop_req_irq_post,
TP_PROTO(struct fjes_hw *hw, int src_epid),
TP_ARGS(hw, src_epid),
TP_STRUCT__entry(
__field(int, src_epid)
__field(u8, ep_status)
__field(unsigned long, txrx_stop_req_bit)
__field(u16, rx_status)
),
TP_fast_assign(
__entry->src_epid = src_epid;
__entry->ep_status = hw->hw_info.share->ep_status[src_epid];
__entry->txrx_stop_req_bit = hw->txrx_stop_req_bit;
__entry->rx_status = hw->ep_shm_info[src_epid].tx.info->v1i.rx_status;
),
TP_printk("epid=%d, ep_status=%x, txrx_stop_req_bit=%016lx, tx.rx_status=%08x",
__entry->src_epid, __entry->ep_status,
__entry->txrx_stop_req_bit, __entry->rx_status)
);
TRACE_EVENT(fjes_stop_req_irq_pre,
TP_PROTO(struct fjes_hw *hw, int src_epid,
enum ep_partner_status status),
TP_ARGS(hw, src_epid, status),
TP_STRUCT__entry(
__field(int, src_epid)
__field(enum ep_partner_status, status)
__field(u8, ep_status)
__field(unsigned long, txrx_stop_req_bit)
__field(u16, rx_status)
),
TP_fast_assign(
__entry->src_epid = src_epid;
__entry->status = status;
__entry->ep_status = hw->hw_info.share->ep_status[src_epid];
__entry->txrx_stop_req_bit = hw->txrx_stop_req_bit;
__entry->rx_status =
hw->ep_shm_info[src_epid].tx.info->v1i.rx_status;
),
TP_printk("epid=%d, partner_status=%d, ep_status=%x, txrx_stop_req_bit=%016lx, tx.rx_status=%08x",
__entry->src_epid, __entry->status, __entry->ep_status,
__entry->txrx_stop_req_bit, __entry->rx_status)
);
TRACE_EVENT(fjes_stop_req_irq_post,
TP_PROTO(struct fjes_hw *hw, int src_epid),
TP_ARGS(hw, src_epid),
TP_STRUCT__entry(
__field(int, src_epid)
__field(u8, ep_status)
__field(unsigned long, txrx_stop_req_bit)
__field(u16, rx_status)
),
TP_fast_assign(
__entry->src_epid = src_epid;
__entry->ep_status = hw->hw_info.share->ep_status[src_epid];
__entry->txrx_stop_req_bit = hw->txrx_stop_req_bit;
__entry->rx_status =
hw->ep_shm_info[src_epid].tx.info->v1i.rx_status;
),
TP_printk("epid=%d, ep_status=%x, txrx_stop_req_bit=%016lx, tx.rx_status=%08x",
__entry->src_epid, __entry->ep_status,
__entry->txrx_stop_req_bit, __entry->rx_status)
);
#endif /* FJES_TRACE_H_ */
#undef TRACE_INCLUDE_PATH
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_PATH ../../drivers/net/fjes
#define TRACE_INCLUDE_FILE fjes_trace
/* This part must be outside protection */
#include <trace/define_trace.h>