提交 15dc36eb 编写于 作者: E Eric Dumazet 提交者: David S. Miller

pkt_sched: do not use rcu in tc_dump_qdisc()

Like all rtnetlink dump operations, we hold RTNL in tc_dump_qdisc(),
so we do not need to use rcu protection to protect list of netdevices.

This will allow preemption to occur, thus reducing latencies.
Following patch adds explicit cond_resched() calls.
Signed-off-by: NEric Dumazet <edumazet@google.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 a19a7ec8
......@@ -1434,9 +1434,9 @@ static int tc_dump_qdisc(struct sk_buff *skb, struct netlink_callback *cb)
s_idx = cb->args[0];
s_q_idx = q_idx = cb->args[1];
rcu_read_lock();
idx = 0;
for_each_netdev_rcu(net, dev) {
ASSERT_RTNL();
for_each_netdev(net, dev) {
struct netdev_queue *dev_queue;
if (idx < s_idx)
......@@ -1459,8 +1459,6 @@ static int tc_dump_qdisc(struct sk_buff *skb, struct netlink_callback *cb)
}
done:
rcu_read_unlock();
cb->args[0] = idx;
cb->args[1] = q_idx;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册