diff options
Diffstat (limited to 'net/sched/sch_api.c')
| -rw-r--r-- | net/sched/sch_api.c | 3 | 
1 files changed, 3 insertions, 0 deletions
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index 2adda7fa2d39..cd81505662b8 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -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);  |