| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 
 | /* 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);
		    ),
		    /* 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)
);
/* Tx (egress) XSK fd */
DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_xsk_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)
);
/* Rx XSK fd */
DEFINE_EVENT(dpaa2_eth_fd, dpaa2_rx_xsk_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. */
DECLARE_EVENT_CLASS(dpaa2_eth_buf,
		    /* 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);
		    ),
		    /* 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)
);
/* Main memory buff seeding */
DEFINE_EVENT(dpaa2_eth_buf, dpaa2_eth_buf_seed,
	     TP_PROTO(struct net_device *netdev,
		      void *vaddr,
		      size_t size,
		      dma_addr_t dma_addr,
		      size_t map_size,
		      u16 bpid),
	     TP_ARGS(netdev, vaddr, size, dma_addr, map_size, bpid)
);
/* UMEM buff seeding on AF_XDP fast path */
DEFINE_EVENT(dpaa2_eth_buf, dpaa2_xsk_buf_seed,
	     TP_PROTO(struct net_device *netdev,
		      void *vaddr,
		      size_t size,
		      dma_addr_t dma_addr,
		      size_t map_size,
		      u16 bpid),
	     TP_ARGS(netdev, vaddr, size, dma_addr, map_size, 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>
 |