Lines Matching refs:ct_ft
280 struct tcf_ct_flow_table *ct_ft;
284 ct_ft = rhashtable_lookup_fast(&zones_ht, ¶ms->zone, zones_params);
285 if (ct_ft && refcount_inc_not_zero(&ct_ft->ref))
288 ct_ft = kzalloc(sizeof(*ct_ft), GFP_KERNEL);
289 if (!ct_ft)
291 refcount_set(&ct_ft->ref, 1);
293 ct_ft->zone = params->zone;
294 err = rhashtable_insert_fast(&zones_ht, &ct_ft->node, zones_params);
298 ct_ft->nf_ft.type = &flowtable_ct;
299 ct_ft->nf_ft.flags |= NF_FLOWTABLE_HW_OFFLOAD;
300 err = nf_flow_table_init(&ct_ft->nf_ft);
306 params->ct_ft = ct_ft;
307 params->nf_ft = &ct_ft->nf_ft;
313 rhashtable_remove_fast(&zones_ht, &ct_ft->node, zones_params);
315 kfree(ct_ft);
324 struct tcf_ct_flow_table *ct_ft;
327 ct_ft = container_of(to_rcu_work(work), struct tcf_ct_flow_table,
329 nf_flow_table_free(&ct_ft->nf_ft);
332 block = &ct_ft->nf_ft.flow_block;
333 down_write(&ct_ft->nf_ft.flow_block_lock);
338 up_write(&ct_ft->nf_ft.flow_block_lock);
339 kfree(ct_ft);
346 struct tcf_ct_flow_table *ct_ft = params->ct_ft;
348 if (refcount_dec_and_test(¶ms->ct_ft->ref)) {
349 rhashtable_remove_fast(&zones_ht, &ct_ft->node, zones_params);
350 INIT_RCU_WORK(&ct_ft->rwork, tcf_ct_flow_table_cleanup_work);
351 queue_rcu_work(act_ct_wq, &ct_ft->rwork);
355 static void tcf_ct_flow_table_add(struct tcf_ct_flow_table *ct_ft,
376 err = flow_offload_add(&ct_ft->nf_ft, entry);
388 static void tcf_ct_flow_table_process_conn(struct tcf_ct_flow_table *ct_ft,
413 tcf_ct_flow_table_add(ct_ft, ct, tcp);
508 struct nf_flowtable *nf_ft = &p->ct_ft->nf_ft;
1037 tcf_ct_flow_table_process_conn(p->ct_ft, ct, ctinfo);