net: sched: fix dump qlen for sch_mq/sch_mqprio with NOLOCK subqueues
authorDust Li <dust.li@linux.alibaba.com>
Tue, 3 Dec 2019 03:17:40 +0000 (11:17 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 3 Dec 2019 19:53:55 +0000 (11:53 -0800)
sch->q.len hasn't been set if the subqueue is a NOLOCK qdisc
 in mq_dump() and mqprio_dump().

Fixes: ce679e8df7ed ("net: sched: add support for TCQ_F_NOLOCK subqueues to sch_mqprio")
Signed-off-by: Dust Li <dust.li@linux.alibaba.com>
Signed-off-by: Tony Lu <tonylu@linux.alibaba.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_mq.c
net/sched/sch_mqprio.c

index 278c0b2..e79f1af 100644 (file)
@@ -153,6 +153,7 @@ static int mq_dump(struct Qdisc *sch, struct sk_buff *skb)
                        __gnet_stats_copy_queue(&sch->qstats,
                                                qdisc->cpu_qstats,
                                                &qdisc->qstats, qlen);
+                       sch->q.qlen             += qlen;
                } else {
                        sch->q.qlen             += qdisc->q.qlen;
                        sch->bstats.bytes       += qdisc->bstats.bytes;
index 0d0113a..de4e00a 100644 (file)
@@ -411,6 +411,7 @@ static int mqprio_dump(struct Qdisc *sch, struct sk_buff *skb)
                        __gnet_stats_copy_queue(&sch->qstats,
                                                qdisc->cpu_qstats,
                                                &qdisc->qstats, qlen);
+                       sch->q.qlen             += qlen;
                } else {
                        sch->q.qlen             += qdisc->q.qlen;
                        sch->bstats.bytes       += qdisc->bstats.bytes;