qdisc.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #undef TRACE_SYSTEM
  2. #define TRACE_SYSTEM qdisc
  3. #if !defined(_TRACE_QDISC_H) || defined(TRACE_HEADER_MULTI_READ)
  4. #define _TRACE_QDISC_H
  5. #include <linux/skbuff.h>
  6. #include <linux/netdevice.h>
  7. #include <linux/tracepoint.h>
  8. #include <linux/ftrace.h>
  9. #include <linux/pkt_sched.h>
  10. #include <net/sch_generic.h>
  11. TRACE_EVENT(qdisc_dequeue,
  12. TP_PROTO(struct Qdisc *qdisc, const struct netdev_queue *txq,
  13. int packets, struct sk_buff *skb),
  14. TP_ARGS(qdisc, txq, packets, skb),
  15. TP_STRUCT__entry(
  16. __field( struct Qdisc *, qdisc )
  17. __field(const struct netdev_queue *, txq )
  18. __field( int, packets )
  19. __field( void *, skbaddr )
  20. __field( int, ifindex )
  21. __field( u32, handle )
  22. __field( u32, parent )
  23. __field( unsigned long, txq_state)
  24. ),
  25. /* skb==NULL indicate packets dequeued was 0, even when packets==1 */
  26. TP_fast_assign(
  27. __entry->qdisc = qdisc;
  28. __entry->txq = txq;
  29. __entry->packets = skb ? packets : 0;
  30. __entry->skbaddr = skb;
  31. __entry->ifindex = txq->dev ? txq->dev->ifindex : 0;
  32. __entry->handle = qdisc->handle;
  33. __entry->parent = qdisc->parent;
  34. __entry->txq_state = txq->state;
  35. ),
  36. TP_printk("dequeue ifindex=%d qdisc handle=0x%X parent=0x%X txq_state=0x%lX packets=%d skbaddr=%p",
  37. __entry->ifindex, __entry->handle, __entry->parent,
  38. __entry->txq_state, __entry->packets, __entry->skbaddr )
  39. );
  40. TRACE_EVENT(qdisc_enqueue,
  41. TP_PROTO(struct Qdisc *qdisc, const struct netdev_queue *txq, struct sk_buff *skb),
  42. TP_ARGS(qdisc, txq, skb),
  43. TP_STRUCT__entry(
  44. __field(struct Qdisc *, qdisc)
  45. __field(const struct netdev_queue *, txq)
  46. __field(void *, skbaddr)
  47. __field(int, ifindex)
  48. __field(u32, handle)
  49. __field(u32, parent)
  50. ),
  51. TP_fast_assign(
  52. __entry->qdisc = qdisc;
  53. __entry->txq = txq;
  54. __entry->skbaddr = skb;
  55. __entry->ifindex = txq->dev ? txq->dev->ifindex : 0;
  56. __entry->handle = qdisc->handle;
  57. __entry->parent = qdisc->parent;
  58. ),
  59. TP_printk("enqueue ifindex=%d qdisc handle=0x%X parent=0x%X skbaddr=%p",
  60. __entry->ifindex, __entry->handle, __entry->parent, __entry->skbaddr)
  61. );
  62. TRACE_EVENT(qdisc_reset,
  63. TP_PROTO(struct Qdisc *q),
  64. TP_ARGS(q),
  65. TP_STRUCT__entry(
  66. __string( dev, qdisc_dev(q) ? qdisc_dev(q)->name : "(null)" )
  67. __string( kind, q->ops->id )
  68. __field( u32, parent )
  69. __field( u32, handle )
  70. ),
  71. TP_fast_assign(
  72. __assign_str(dev);
  73. __assign_str(kind);
  74. __entry->parent = q->parent;
  75. __entry->handle = q->handle;
  76. ),
  77. TP_printk("dev=%s kind=%s parent=%x:%x handle=%x:%x", __get_str(dev),
  78. __get_str(kind), TC_H_MAJ(__entry->parent) >> 16, TC_H_MIN(__entry->parent),
  79. TC_H_MAJ(__entry->handle) >> 16, TC_H_MIN(__entry->handle))
  80. );
  81. TRACE_EVENT(qdisc_destroy,
  82. TP_PROTO(struct Qdisc *q),
  83. TP_ARGS(q),
  84. TP_STRUCT__entry(
  85. __string( dev, qdisc_dev(q)->name )
  86. __string( kind, q->ops->id )
  87. __field( u32, parent )
  88. __field( u32, handle )
  89. ),
  90. TP_fast_assign(
  91. __assign_str(dev);
  92. __assign_str(kind);
  93. __entry->parent = q->parent;
  94. __entry->handle = q->handle;
  95. ),
  96. TP_printk("dev=%s kind=%s parent=%x:%x handle=%x:%x", __get_str(dev),
  97. __get_str(kind), TC_H_MAJ(__entry->parent) >> 16, TC_H_MIN(__entry->parent),
  98. TC_H_MAJ(__entry->handle) >> 16, TC_H_MIN(__entry->handle))
  99. );
  100. TRACE_EVENT(qdisc_create,
  101. TP_PROTO(const struct Qdisc_ops *ops, struct net_device *dev, u32 parent),
  102. TP_ARGS(ops, dev, parent),
  103. TP_STRUCT__entry(
  104. __string( dev, dev->name )
  105. __string( kind, ops->id )
  106. __field( u32, parent )
  107. ),
  108. TP_fast_assign(
  109. __assign_str(dev);
  110. __assign_str(kind);
  111. __entry->parent = parent;
  112. ),
  113. TP_printk("dev=%s kind=%s parent=%x:%x",
  114. __get_str(dev), __get_str(kind),
  115. TC_H_MAJ(__entry->parent) >> 16, TC_H_MIN(__entry->parent))
  116. );
  117. #endif /* _TRACE_QDISC_H */
  118. /* This part must be outside protection */
  119. #include <trace/define_trace.h>