On 06/12/2019 09:14 AM, Vlad Buslov wrote: > To remove rtnl lock dependency in tc filter update API when using ingress > Qdisc, set QDISC_CLASS_OPS_DOIT_UNLOCKED flag in ingress Qdisc_class_ops. > > Ingress Qdisc ops don't require any modifications to be used without rtnl > lock on tc filter update path. Ingress implementation never changes its > q->block and only releases it when Qdisc is being destroyed. This means it > is enough for RTM_{NEWTFILTER|DELTFILTER|GETTFILTER} message handlers to > hold ingress Qdisc reference while using it without relying on rtnl lock > protection. Unlocked Qdisc ops support is already implemented in filter > update path by unlocked cls API patch set. > > Signed-off-by: Vlad Buslov <vla...@mellanox.com> > --- > net/sched/sch_ingress.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/net/sched/sch_ingress.c b/net/sched/sch_ingress.c > index 0f65f617756b..d5382554e281 100644 > --- a/net/sched/sch_ingress.c > +++ b/net/sched/sch_ingress.c > @@ -114,6 +114,7 @@ static int ingress_dump(struct Qdisc *sch, struct sk_buff > *skb) > } > > static const struct Qdisc_class_ops ingress_class_ops = { > + .flags = QDISC_CLASS_OPS_DOIT_UNLOCKED, > .leaf = ingress_leaf, > .find = ingress_find, > .walk = ingress_walk, >
Vlad, why is clsact_class_ops not updated here? Please elaborate!