Thread (45 messages) 45 messages, 7 authors, 2017-06-14

Re: [patch net-next v3 06/10] net: sched: introduce helpers to work with filter chains

From: Cong Wang <hidden>
Date: 2017-05-16 22:17:32

On Tue, May 16, 2017 at 10:27 AM, Jiri Pirko [off-list ref] wrote:
+static struct tcf_proto *tcf_chain_tp_prev(struct tcf_chain_info *chain_info)
+{
+       return rtnl_dereference(*chain_info->pprev);
+}
+
+static void tcf_chain_tp_insert(struct tcf_chain *chain,
+                               struct tcf_chain_info *chain_info,
+                               struct tcf_proto *tp)
+{
+       if (chain->p_filter_chain &&
+           *chain_info->pprev == chain->filter_chain)
+               *chain->p_filter_chain = tp;
+       RCU_INIT_POINTER(tp->next, rtnl_dereference(*chain_info->pprev));
Use tcf_chain_tp_prev()?

+       rcu_assign_pointer(*chain_info->pprev, tp);
+}
+
+static void tcf_chain_tp_remove(struct tcf_chain *chain,
+                               struct tcf_chain_info *chain_info,
+                               struct tcf_proto *tp)
+{
+       struct tcf_proto *next = rtnl_dereference(chain_info->next);
+
+       if (chain->p_filter_chain && tp == chain->filter_chain)
+               *chain->p_filter_chain = next;
+       RCU_INIT_POINTER(*chain_info->pprev, next);
+}
+
+static struct tcf_proto *tcf_chain_tp_find(struct tcf_chain *chain,
+                                          struct tcf_chain_info *chain_info,
+                                          u32 protocol, u32 prio,
+                                          bool prio_allocate)
+{
+       struct tcf_proto **pprev;
+       struct tcf_proto *tp;
+
+       /* Check the chain for existence of proto-tcf with this priority */
+       for (pprev = &chain->filter_chain;
+            (tp = rtnl_dereference(*pprev)); pprev = &tp->next) {
Use tcf_chain_tp_prev()?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help