mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
net/sched: speedup tc_dump_qdisc() when tcm_ifindex is provided
There is no point dumping qdiscs for all devices when user space wants them for a single device: tc -s -d qdisc show dev eth1 Signed-off-by: Eric Dumazet <edumazet@google.com> Link: https://patch.msgid.link/20260430023628.3216283-5-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
748bbef5fc
commit
6f63b82963
|
|
@ -1884,6 +1884,7 @@ static int tc_dump_qdisc(struct sk_buff *skb, struct netlink_callback *cb)
|
|||
unsigned long ifindex;
|
||||
int q_idx;
|
||||
} *ctx = (void *)cb->ctx;
|
||||
const struct tcmsg *tcm;
|
||||
struct net_device *dev;
|
||||
int s_q_idx, q_idx;
|
||||
int err;
|
||||
|
|
@ -1894,6 +1895,9 @@ static int tc_dump_qdisc(struct sk_buff *skb, struct netlink_callback *cb)
|
|||
rtm_tca_policy, cb->extack);
|
||||
if (err < 0)
|
||||
return err;
|
||||
tcm = nlmsg_data(nlh);
|
||||
if (tcm->tcm_ifindex && !ctx->ifindex)
|
||||
ctx->ifindex = tcm->tcm_ifindex;
|
||||
|
||||
s_q_idx = ctx->q_idx;
|
||||
|
||||
|
|
@ -1901,6 +1905,9 @@ static int tc_dump_qdisc(struct sk_buff *skb, struct netlink_callback *cb)
|
|||
struct netdev_queue *dev_queue;
|
||||
struct Qdisc *q;
|
||||
|
||||
if (tcm->tcm_ifindex && ctx->ifindex != tcm->tcm_ifindex)
|
||||
break;
|
||||
|
||||
q_idx = 0;
|
||||
|
||||
netdev_lock_ops(dev);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user