diff options
author | Vlad Buslov <vladbu@mellanox.com> | 2019-02-11 09:55:39 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-02-12 19:41:32 +0100 |
commit | 4dbfa766440c6dfe3d10f077cde966a7d11b58f1 (patch) | |
tree | db3a6c5e2450ef0eae61879159ff64678b65fac7 /include/net/sch_generic.h | |
parent | net: sched: protect filter_chain list with filter_chain_lock mutex (diff) | |
download | linux-4dbfa766440c6dfe3d10f077cde966a7d11b58f1.tar.xz linux-4dbfa766440c6dfe3d10f077cde966a7d11b58f1.zip |
net: sched: introduce reference counting for tcf_proto
In order to remove dependency on rtnl lock and allow concurrent tcf_proto
modification, extend tcf_proto with reference counter. Implement helper
get/put functions for tcf proto and use them to modify cls API to always
take reference to tcf_proto while using it. Only release reference to
parent chain after releasing last reference to tp.
Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/sch_generic.h')
-rw-r--r-- | include/net/sch_generic.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 85993d7efee6..4372c08fc4d9 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -322,6 +322,7 @@ struct tcf_proto { void *data; const struct tcf_proto_ops *ops; struct tcf_chain *chain; + refcount_t refcnt; struct rcu_head rcu; }; |