Skip to content

Commit

Permalink
net: sched: avoid duplicates in classes dump
Browse files Browse the repository at this point in the history
This is a follow up of commit ea32746 ("net: sched: avoid
duplicates in qdisc dump") which has fixed the issue only for the qdisc
dump.

The duplicate printing also occurs when dumping the classes via
  tc class show dev eth0

Fixes: 59cc1f6 ("net: sched: convert qdisc linked list to hashtable")
Signed-off-by: Maximilian Heyne <mheyne@amazon.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Maximilian Heyne authored and David S. Miller committed Mar 4, 2021
1 parent 6c59cff commit bfc2560
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions net/sched/sch_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -2168,7 +2168,7 @@ static int tc_dump_tclass_qdisc(struct Qdisc *q, struct sk_buff *skb,

static int tc_dump_tclass_root(struct Qdisc *root, struct sk_buff *skb,
struct tcmsg *tcm, struct netlink_callback *cb,
int *t_p, int s_t)
int *t_p, int s_t, bool recur)
{
struct Qdisc *q;
int b;
Expand All @@ -2179,7 +2179,7 @@ static int tc_dump_tclass_root(struct Qdisc *root, struct sk_buff *skb,
if (tc_dump_tclass_qdisc(root, skb, tcm, cb, t_p, s_t) < 0)
return -1;

if (!qdisc_dev(root))
if (!qdisc_dev(root) || !recur)
return 0;

if (tcm->tcm_parent) {
Expand Down Expand Up @@ -2214,13 +2214,13 @@ static int tc_dump_tclass(struct sk_buff *skb, struct netlink_callback *cb)
s_t = cb->args[0];
t = 0;

if (tc_dump_tclass_root(dev->qdisc, skb, tcm, cb, &t, s_t) < 0)
if (tc_dump_tclass_root(dev->qdisc, skb, tcm, cb, &t, s_t, true) < 0)
goto done;

dev_queue = dev_ingress_queue(dev);
if (dev_queue &&
tc_dump_tclass_root(dev_queue->qdisc_sleeping, skb, tcm, cb,
&t, s_t) < 0)
&t, s_t, false) < 0)
goto done;

done:
Expand Down

0 comments on commit bfc2560

Please sign in to comment.