Back to home page

OSCL-LXR

 
 

    


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     /* skb==NULL indicate packets dequeued was 0, even when packets==1 */
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 /* _TRACE_QDISC_H */
0151 
0152 /* This part must be outside protection */
0153 #include <trace/define_trace.h>