Skip to content

Commit a34dac0

Browse files
congwangdavem330
authored andcommitted
net_sched: add tracepoints for qdisc_reset() and qdisc_destroy()
Add two tracepoints for qdisc_reset() and qdisc_destroy() to track qdisc resetting and destroying. Sample output: tc-756 [000] ...3 138.355662: qdisc_reset: dev=ens3 kind=pfifo_fast parent=ffff:ffff handle=0:0 tc-756 [000] ...1 138.355720: qdisc_reset: dev=ens3 kind=pfifo_fast parent=ffff:ffff handle=0:0 tc-756 [000] ...1 138.355867: qdisc_reset: dev=ens3 kind=pfifo_fast parent=ffff:ffff handle=0:0 tc-756 [000] ...1 138.355930: qdisc_destroy: dev=ens3 kind=pfifo_fast parent=ffff:ffff handle=0:0 tc-757 [000] ...2 143.073780: qdisc_reset: dev=ens3 kind=fq_codel parent=ffff:ffff handle=8001:0 tc-757 [000] ...1 143.073878: qdisc_reset: dev=ens3 kind=fq_codel parent=ffff:ffff handle=8001:0 tc-757 [000] ...1 143.074114: qdisc_reset: dev=ens3 kind=fq_codel parent=ffff:ffff handle=8001:0 tc-757 [000] ...1 143.074228: qdisc_destroy: dev=ens3 kind=fq_codel parent=ffff:ffff handle=8001:0 Cc: Jamal Hadi Salim <[email protected]> Cc: Jiri Pirko <[email protected]> Signed-off-by: Cong Wang <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 4909dab commit a34dac0

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

include/trace/events/qdisc.h

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
#include <linux/netdevice.h>
99
#include <linux/tracepoint.h>
1010
#include <linux/ftrace.h>
11+
#include <linux/pkt_sched.h>
12+
#include <net/sch_generic.h>
1113

1214
TRACE_EVENT(qdisc_dequeue,
1315

@@ -44,6 +46,56 @@ TRACE_EVENT(qdisc_dequeue,
4446
__entry->txq_state, __entry->packets, __entry->skbaddr )
4547
);
4648

49+
TRACE_EVENT(qdisc_reset,
50+
51+
TP_PROTO(struct Qdisc *q),
52+
53+
TP_ARGS(q),
54+
55+
TP_STRUCT__entry(
56+
__string( dev, qdisc_dev(q) )
57+
__string( kind, q->ops->id )
58+
__field( u32, parent )
59+
__field( u32, handle )
60+
),
61+
62+
TP_fast_assign(
63+
__assign_str(dev, qdisc_dev(q));
64+
__assign_str(kind, q->ops->id);
65+
__entry->parent = q->parent;
66+
__entry->handle = q->handle;
67+
),
68+
69+
TP_printk("dev=%s kind=%s parent=%x:%x handle=%x:%x", __get_str(dev),
70+
__get_str(kind), TC_H_MAJ(__entry->parent) >> 16, TC_H_MIN(__entry->parent),
71+
TC_H_MAJ(__entry->handle) >> 16, TC_H_MIN(__entry->handle))
72+
);
73+
74+
TRACE_EVENT(qdisc_destroy,
75+
76+
TP_PROTO(struct Qdisc *q),
77+
78+
TP_ARGS(q),
79+
80+
TP_STRUCT__entry(
81+
__string( dev, qdisc_dev(q) )
82+
__string( kind, q->ops->id )
83+
__field( u32, parent )
84+
__field( u32, handle )
85+
),
86+
87+
TP_fast_assign(
88+
__assign_str(dev, qdisc_dev(q));
89+
__assign_str(kind, q->ops->id);
90+
__entry->parent = q->parent;
91+
__entry->handle = q->handle;
92+
),
93+
94+
TP_printk("dev=%s kind=%s parent=%x:%x handle=%x:%x", __get_str(dev),
95+
__get_str(kind), TC_H_MAJ(__entry->parent) >> 16, TC_H_MIN(__entry->parent),
96+
TC_H_MAJ(__entry->handle) >> 16, TC_H_MIN(__entry->handle))
97+
);
98+
4799
#endif /* _TRACE_QDISC_H */
48100

49101
/* This part must be outside protection */

net/sched/sch_generic.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,8 @@ void qdisc_reset(struct Qdisc *qdisc)
911911
const struct Qdisc_ops *ops = qdisc->ops;
912912
struct sk_buff *skb, *tmp;
913913

914+
trace_qdisc_reset(qdisc);
915+
914916
if (ops->reset)
915917
ops->reset(qdisc);
916918

@@ -965,6 +967,8 @@ static void qdisc_destroy(struct Qdisc *qdisc)
965967
module_put(ops->owner);
966968
dev_put(qdisc_dev(qdisc));
967969

970+
trace_qdisc_destroy(qdisc);
971+
968972
call_rcu(&qdisc->rcu, qdisc_free_cb);
969973
}
970974

0 commit comments

Comments
 (0)