net: sched: avoid duplicates in classes dump
This is a follow up of commitea32746953
("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:59cc1f61f0
("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>
This commit is contained in:
parent
6c59cff38e
commit
bfc2560563
|
@ -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,
|
static int tc_dump_tclass_root(struct Qdisc *root, struct sk_buff *skb,
|
||||||
struct tcmsg *tcm, struct netlink_callback *cb,
|
struct tcmsg *tcm, struct netlink_callback *cb,
|
||||||
int *t_p, int s_t)
|
int *t_p, int s_t, bool recur)
|
||||||
{
|
{
|
||||||
struct Qdisc *q;
|
struct Qdisc *q;
|
||||||
int b;
|
int b;
|
||||||
|
@ -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)
|
if (tc_dump_tclass_qdisc(root, skb, tcm, cb, t_p, s_t) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (!qdisc_dev(root))
|
if (!qdisc_dev(root) || !recur)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (tcm->tcm_parent) {
|
if (tcm->tcm_parent) {
|
||||||
|
@ -2214,13 +2214,13 @@ static int tc_dump_tclass(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
s_t = cb->args[0];
|
s_t = cb->args[0];
|
||||||
t = 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;
|
goto done;
|
||||||
|
|
||||||
dev_queue = dev_ingress_queue(dev);
|
dev_queue = dev_ingress_queue(dev);
|
||||||
if (dev_queue &&
|
if (dev_queue &&
|
||||||
tc_dump_tclass_root(dev_queue->qdisc_sleeping, skb, tcm, cb,
|
tc_dump_tclass_root(dev_queue->qdisc_sleeping, skb, tcm, cb,
|
||||||
&t, s_t) < 0)
|
&t, s_t, false) < 0)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
Loading…
Reference in New Issue