78 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#undef TRACE_SYSTEM3#define TRACE_SYSTEM napi4 5#if !defined(_TRACE_NAPI_H) || defined(TRACE_HEADER_MULTI_READ)6#define _TRACE_NAPI_H7 8#include <linux/netdevice.h>9#include <linux/tracepoint.h>10#include <linux/ftrace.h>11 12#define NO_DEV "(no_device)"13 14TRACE_EVENT(napi_poll,15 16 TP_PROTO(struct napi_struct *napi, int work, int budget),17 18 TP_ARGS(napi, work, budget),19 20 TP_STRUCT__entry(21 __field( struct napi_struct *, napi)22 __string( dev_name, napi->dev ? napi->dev->name : NO_DEV)23 __field( int, work)24 __field( int, budget)25 ),26 27 TP_fast_assign(28 __entry->napi = napi;29 __assign_str(dev_name);30 __entry->work = work;31 __entry->budget = budget;32 ),33 34 TP_printk("napi poll on napi struct %p for device %s work %d budget %d",35 __entry->napi, __get_str(dev_name),36 __entry->work, __entry->budget)37);38 39TRACE_EVENT(dql_stall_detected,40 41 TP_PROTO(unsigned short thrs, unsigned int len,42 unsigned long last_reap, unsigned long hist_head,43 unsigned long now, unsigned long *hist),44 45 TP_ARGS(thrs, len, last_reap, hist_head, now, hist),46 47 TP_STRUCT__entry(48 __field( unsigned short, thrs)49 __field( unsigned int, len)50 __field( unsigned long, last_reap)51 __field( unsigned long, hist_head)52 __field( unsigned long, now)53 __array( unsigned long, hist, 4)54 ),55 56 TP_fast_assign(57 __entry->thrs = thrs;58 __entry->len = len;59 __entry->last_reap = last_reap;60 __entry->hist_head = hist_head * BITS_PER_LONG;61 __entry->now = now;62 memcpy(__entry->hist, hist, sizeof(entry->hist));63 ),64 65 TP_printk("thrs %u len %u last_reap %lu hist_head %lu now %lu hist %016lx %016lx %016lx %016lx",66 __entry->thrs, __entry->len,67 __entry->last_reap, __entry->hist_head, __entry->now,68 __entry->hist[0], __entry->hist[1],69 __entry->hist[2], __entry->hist[3])70);71 72#undef NO_DEV73 74#endif /* _TRACE_NAPI_H */75 76/* This part must be outside protection */77#include <trace/define_trace.h>78