net_sched: call qlen_notify only if child qdisc is empty
This callback is used for deactivating class in parent qdisc. This is cheaper to test queue length right here. Also this allows to catch draining screwed backlog and prevent second deactivation of already inactive parent class which will crash kernel for sure. Kernel with print warning at destruction of child qdisc where no packets but backlog is not zero. Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
869cec99b4
commit
959466588a
@@ -1385,8 +1385,7 @@ static void cbq_qlen_notify(struct Qdisc *sch, unsigned long arg)
|
||||
{
|
||||
struct cbq_class *cl = (struct cbq_class *)arg;
|
||||
|
||||
if (cl->q->q.qlen == 0)
|
||||
cbq_deactivate_class(cl);
|
||||
cbq_deactivate_class(cl);
|
||||
}
|
||||
|
||||
static unsigned long cbq_get(struct Qdisc *sch, u32 classid)
|
||||
|
Reference in New Issue
Block a user