0001 #undef TRACE_SYSTEM
0002 #define TRACE_SYSTEM qdisc
0003
0004 #if !defined(_TRACE_QDISC_H) || defined(TRACE_HEADER_MULTI_READ)
0005 #define _TRACE_QDISC_H
0006
0007 #include <linux/skbuff.h>
0008 #include <linux/netdevice.h>
0009 #include <linux/tracepoint.h>
0010 #include <linux/ftrace.h>
0011 #include <linux/pkt_sched.h>
0012 #include <net/sch_generic.h>
0013
0014 TRACE_EVENT(qdisc_dequeue,
0015
0016 TP_PROTO(struct Qdisc *qdisc, const struct netdev_queue *txq,
0017 int packets, struct sk_buff *skb),
0018
0019 TP_ARGS(qdisc, txq, packets, skb),
0020
0021 TP_STRUCT__entry(
0022 __field( struct Qdisc *, qdisc )
0023 __field(const struct netdev_queue *, txq )
0024 __field( int, packets )
0025 __field( void *, skbaddr )
0026 __field( int, ifindex )
0027 __field( u32, handle )
0028 __field( u32, parent )
0029 __field( unsigned long, txq_state)
0030 ),
0031
0032
0033 TP_fast_assign(
0034 __entry->qdisc = qdisc;
0035 __entry->txq = txq;
0036 __entry->packets = skb ? packets : 0;
0037 __entry->skbaddr = skb;
0038 __entry->ifindex = txq->dev ? txq->dev->ifindex : 0;
0039 __entry->handle = qdisc->handle;
0040 __entry->parent = qdisc->parent;
0041 __entry->txq_state = txq->state;
0042 ),
0043
0044 TP_printk("dequeue ifindex=%d qdisc handle=0x%X parent=0x%X txq_state=0x%lX packets=%d skbaddr=%p",
0045 __entry->ifindex, __entry->handle, __entry->parent,
0046 __entry->txq_state, __entry->packets, __entry->skbaddr )
0047 );
0048
0049 TRACE_EVENT(qdisc_enqueue,
0050
0051 TP_PROTO(struct Qdisc *qdisc, const struct netdev_queue *txq, struct sk_buff *skb),
0052
0053 TP_ARGS(qdisc, txq, skb),
0054
0055 TP_STRUCT__entry(
0056 __field(struct Qdisc *, qdisc)
0057 __field(const struct netdev_queue *, txq)
0058 __field(void *, skbaddr)
0059 __field(int, ifindex)
0060 __field(u32, handle)
0061 __field(u32, parent)
0062 ),
0063
0064 TP_fast_assign(
0065 __entry->qdisc = qdisc;
0066 __entry->txq = txq;
0067 __entry->skbaddr = skb;
0068 __entry->ifindex = txq->dev ? txq->dev->ifindex : 0;
0069 __entry->handle = qdisc->handle;
0070 __entry->parent = qdisc->parent;
0071 ),
0072
0073 TP_printk("enqueue ifindex=%d qdisc handle=0x%X parent=0x%X skbaddr=%p",
0074 __entry->ifindex, __entry->handle, __entry->parent, __entry->skbaddr)
0075 );
0076
0077 TRACE_EVENT(qdisc_reset,
0078
0079 TP_PROTO(struct Qdisc *q),
0080
0081 TP_ARGS(q),
0082
0083 TP_STRUCT__entry(
0084 __string( dev, qdisc_dev(q) )
0085 __string( kind, q->ops->id )
0086 __field( u32, parent )
0087 __field( u32, handle )
0088 ),
0089
0090 TP_fast_assign(
0091 __assign_str(dev, qdisc_dev(q));
0092 __assign_str(kind, q->ops->id);
0093 __entry->parent = q->parent;
0094 __entry->handle = q->handle;
0095 ),
0096
0097 TP_printk("dev=%s kind=%s parent=%x:%x handle=%x:%x", __get_str(dev),
0098 __get_str(kind), TC_H_MAJ(__entry->parent) >> 16, TC_H_MIN(__entry->parent),
0099 TC_H_MAJ(__entry->handle) >> 16, TC_H_MIN(__entry->handle))
0100 );
0101
0102 TRACE_EVENT(qdisc_destroy,
0103
0104 TP_PROTO(struct Qdisc *q),
0105
0106 TP_ARGS(q),
0107
0108 TP_STRUCT__entry(
0109 __string( dev, qdisc_dev(q) )
0110 __string( kind, q->ops->id )
0111 __field( u32, parent )
0112 __field( u32, handle )
0113 ),
0114
0115 TP_fast_assign(
0116 __assign_str(dev, qdisc_dev(q));
0117 __assign_str(kind, q->ops->id);
0118 __entry->parent = q->parent;
0119 __entry->handle = q->handle;
0120 ),
0121
0122 TP_printk("dev=%s kind=%s parent=%x:%x handle=%x:%x", __get_str(dev),
0123 __get_str(kind), TC_H_MAJ(__entry->parent) >> 16, TC_H_MIN(__entry->parent),
0124 TC_H_MAJ(__entry->handle) >> 16, TC_H_MIN(__entry->handle))
0125 );
0126
0127 TRACE_EVENT(qdisc_create,
0128
0129 TP_PROTO(const struct Qdisc_ops *ops, struct net_device *dev, u32 parent),
0130
0131 TP_ARGS(ops, dev, parent),
0132
0133 TP_STRUCT__entry(
0134 __string( dev, dev->name )
0135 __string( kind, ops->id )
0136 __field( u32, parent )
0137 ),
0138
0139 TP_fast_assign(
0140 __assign_str(dev, dev->name);
0141 __assign_str(kind, ops->id);
0142 __entry->parent = parent;
0143 ),
0144
0145 TP_printk("dev=%s kind=%s parent=%x:%x",
0146 __get_str(dev), __get_str(kind),
0147 TC_H_MAJ(__entry->parent) >> 16, TC_H_MIN(__entry->parent))
0148 );
0149
0150 #endif
0151
0152
0153 #include <trace/define_trace.h>