Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c8c8e6f authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

net_sched: increment drop counters in qdisc_tree_decrease_qlen()



qdisc_tree_decrease_qlen() is called when some packets are dropped
on a qdisc, and we want to notify parents of qlen changes.

We also can increment parents qdisc qstats drop counters.

This permits more accurate drop counters up to root qdisc.

For example a graft operation typically resets a qdisc
(drops all packets) and call qdisc_tree_decrease_qlen()

Note that callers are responsible for their drop counters.

Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4996b909
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -737,9 +737,11 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
	const struct Qdisc_class_ops *cops;
	unsigned long cl;
	u32 parentid;
	int drops;

	if (n == 0)
		return;
	drops = max_t(int, n, 0);
	while ((parentid = sch->parent)) {
		if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS))
			return;
@@ -756,6 +758,7 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
			cops->put(sch, cl);
		}
		sch->q.qlen -= n;
		sch->qstats.drops += drops;
	}
}
EXPORT_SYMBOL(qdisc_tree_decrease_qlen);