123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
- /* Copyright 2014-2015 Freescale Semiconductor Inc.
- */
- #undef TRACE_SYSTEM
- #define TRACE_SYSTEM dpaa2_eth
- #if !defined(_DPAA2_ETH_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
- #define _DPAA2_ETH_TRACE_H
- #include <linux/skbuff.h>
- #include <linux/netdevice.h>
- #include <linux/tracepoint.h>
- #define TR_FMT "[%s] fd: addr=0x%llx, len=%u, off=%u"
- /* trace_printk format for raw buffer event class */
- #define TR_BUF_FMT "[%s] vaddr=%p size=%zu dma_addr=%pad map_size=%zu bpid=%d"
- /* This is used to declare a class of events.
- * individual events of this type will be defined below.
- */
- /* Store details about a frame descriptor */
- DECLARE_EVENT_CLASS(dpaa2_eth_fd,
- /* Trace function prototype */
- TP_PROTO(struct net_device *netdev,
- const struct dpaa2_fd *fd),
- /* Repeat argument list here */
- TP_ARGS(netdev, fd),
- /* A structure containing the relevant information we want
- * to record. Declare name and type for each normal element,
- * name, type and size for arrays. Use __string for variable
- * length strings.
- */
- TP_STRUCT__entry(
- __field(u64, fd_addr)
- __field(u32, fd_len)
- __field(u16, fd_offset)
- __string(name, netdev->name)
- ),
- /* The function that assigns values to the above declared
- * fields
- */
- TP_fast_assign(
- __entry->fd_addr = dpaa2_fd_get_addr(fd);
- __entry->fd_len = dpaa2_fd_get_len(fd);
- __entry->fd_offset = dpaa2_fd_get_offset(fd);
- __assign_str(name, netdev->name);
- ),
- /* This is what gets printed when the trace event is
- * triggered.
- */
- TP_printk(TR_FMT,
- __get_str(name),
- __entry->fd_addr,
- __entry->fd_len,
- __entry->fd_offset)
- );
- /* Now declare events of the above type. Format is:
- * DEFINE_EVENT(class, name, proto, args), with proto and args same as for class
- */
- /* Tx (egress) fd */
- DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_fd,
- TP_PROTO(struct net_device *netdev,
- const struct dpaa2_fd *fd),
- TP_ARGS(netdev, fd)
- );
- /* Rx fd */
- DEFINE_EVENT(dpaa2_eth_fd, dpaa2_rx_fd,
- TP_PROTO(struct net_device *netdev,
- const struct dpaa2_fd *fd),
- TP_ARGS(netdev, fd)
- );
- /* Tx confirmation fd */
- DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_conf_fd,
- TP_PROTO(struct net_device *netdev,
- const struct dpaa2_fd *fd),
- TP_ARGS(netdev, fd)
- );
- /* Log data about raw buffers. Useful for tracing DPBP content. */
- TRACE_EVENT(dpaa2_eth_buf_seed,
- /* Trace function prototype */
- TP_PROTO(struct net_device *netdev,
- /* virtual address and size */
- void *vaddr,
- size_t size,
- /* dma map address and size */
- dma_addr_t dma_addr,
- size_t map_size,
- /* buffer pool id, if relevant */
- u16 bpid),
- /* Repeat argument list here */
- TP_ARGS(netdev, vaddr, size, dma_addr, map_size, bpid),
- /* A structure containing the relevant information we want
- * to record. Declare name and type for each normal element,
- * name, type and size for arrays. Use __string for variable
- * length strings.
- */
- TP_STRUCT__entry(
- __field(void *, vaddr)
- __field(size_t, size)
- __field(dma_addr_t, dma_addr)
- __field(size_t, map_size)
- __field(u16, bpid)
- __string(name, netdev->name)
- ),
- /* The function that assigns values to the above declared
- * fields
- */
- TP_fast_assign(
- __entry->vaddr = vaddr;
- __entry->size = size;
- __entry->dma_addr = dma_addr;
- __entry->map_size = map_size;
- __entry->bpid = bpid;
- __assign_str(name, netdev->name);
- ),
- /* This is what gets printed when the trace event is
- * triggered.
- */
- TP_printk(TR_BUF_FMT,
- __get_str(name),
- __entry->vaddr,
- __entry->size,
- &__entry->dma_addr,
- __entry->map_size,
- __entry->bpid)
- );
- /* If only one event of a certain type needs to be declared, use TRACE_EVENT().
- * The syntax is the same as for DECLARE_EVENT_CLASS().
- */
- #endif /* _DPAA2_ETH_TRACE_H */
- /* This must be outside ifdef _DPAA2_ETH_TRACE_H */
- #undef TRACE_INCLUDE_PATH
- #define TRACE_INCLUDE_PATH .
- #undef TRACE_INCLUDE_FILE
- #define TRACE_INCLUDE_FILE dpaa2-eth-trace
- #include <trace/define_trace.h>
|