Tue, May 16, 2017 at 02:07:25PM CEST, j...@mojatatu.com wrote: > >Jiri, > >I am sorry i am tied up elsewhere but will respond in chunks. > >On 17-05-15 04:38 AM, Jiri Pirko wrote: > > >> static inline void qdisc_cb_private_validate(const struct sk_buff *skb, int >> sz) >> { >> struct qdisc_skb_cb *qcb; > > >> +int tcf_block_get(struct tcf_block **p_block, >> + struct tcf_proto __rcu **p_filter_chain) >> +{ >> + struct tcf_block *block = kzalloc(sizeof(*block), GFP_KERNEL); >> + >> + if (!block) >> + return -ENOMEM; >> + block->p_filter_chain = p_filter_chain; >> + *p_block = block; >> + return 0; >> +} > >tcf_block_get() sounds odd. tcf_block_create()?
I used get/put because I plan to allow sharing of block between qdiscs in future. Then there will be a refcount. > >> +EXPORT_SYMBOL(tcf_block_get); >> + >> +void tcf_block_put(struct tcf_block *block) >> +{ >> + if (!block) >> + return; >> + tcf_destroy_chain(block->p_filter_chain); >> + kfree(block); >> +} > >tcf_destroy_block()? > >[..] > >> + error = tcf_block_get(&flow->block, &flow->filter_list); >> + if (error) { >> + kfree(flow); >> + goto err_out; >> + } >> + >> flow->q = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops, classid); >> if (!flow->q) >> flow->q = &noop_qdisc; >> @@ -346,14 +353,13 @@ static void atm_tc_walk(struct Qdisc *sch, struct >> qdisc_walker *walker) >> } >> } >> >> -static struct tcf_proto __rcu **atm_tc_find_tcf(struct Qdisc *sch, >> - unsigned long cl) >> +static struct tcf_block *atm_tc_tcf_block(struct Qdisc *sch, unsigned long >> cl) > >Any reason you removed the verb "find" from all these calls? >eg above: better to have atm_tc_tcf_block_find()? Yeah, I was thinking about it. The thing is, the callback does not do any lookup so "find" is not accurate. Also without "find" this is shorter so I decided for this naming variant. > >cheers, >jamal