Lines Matching refs:block_cb
209 struct flow_block_cb *block_cb; in flow_block_cb_alloc() local
211 block_cb = kzalloc(sizeof(*block_cb), GFP_KERNEL); in flow_block_cb_alloc()
212 if (!block_cb) in flow_block_cb_alloc()
215 block_cb->cb = cb; in flow_block_cb_alloc()
216 block_cb->cb_ident = cb_ident; in flow_block_cb_alloc()
217 block_cb->cb_priv = cb_priv; in flow_block_cb_alloc()
218 block_cb->release = release; in flow_block_cb_alloc()
220 return block_cb; in flow_block_cb_alloc()
224 void flow_block_cb_free(struct flow_block_cb *block_cb) in flow_block_cb_free() argument
226 if (block_cb->release) in flow_block_cb_free()
227 block_cb->release(block_cb->cb_priv); in flow_block_cb_free()
229 kfree(block_cb); in flow_block_cb_free()
236 struct flow_block_cb *block_cb; in flow_block_cb_lookup() local
238 list_for_each_entry(block_cb, &block->cb_list, list) { in flow_block_cb_lookup()
239 if (block_cb->cb == cb && in flow_block_cb_lookup()
240 block_cb->cb_ident == cb_ident) in flow_block_cb_lookup()
241 return block_cb; in flow_block_cb_lookup()
248 void *flow_block_cb_priv(struct flow_block_cb *block_cb) in flow_block_cb_priv() argument
250 return block_cb->cb_priv; in flow_block_cb_priv()
254 void flow_block_cb_incref(struct flow_block_cb *block_cb) in flow_block_cb_incref() argument
256 block_cb->refcnt++; in flow_block_cb_incref()
260 unsigned int flow_block_cb_decref(struct flow_block_cb *block_cb) in flow_block_cb_decref() argument
262 return --block_cb->refcnt; in flow_block_cb_decref()
269 struct flow_block_cb *block_cb; in flow_block_cb_is_busy() local
271 list_for_each_entry(block_cb, driver_block_list, driver_list) { in flow_block_cb_is_busy()
272 if (block_cb->cb == cb && in flow_block_cb_is_busy()
273 block_cb->cb_ident == cb_ident) in flow_block_cb_is_busy()
287 struct flow_block_cb *block_cb; in flow_block_cb_setup_simple() local
300 block_cb = flow_block_cb_alloc(cb, cb_ident, cb_priv, NULL); in flow_block_cb_setup_simple()
301 if (IS_ERR(block_cb)) in flow_block_cb_setup_simple()
302 return PTR_ERR(block_cb); in flow_block_cb_setup_simple()
304 flow_block_cb_add(block_cb, f); in flow_block_cb_setup_simple()
305 list_add_tail(&block_cb->driver_list, driver_block_list); in flow_block_cb_setup_simple()
308 block_cb = flow_block_cb_lookup(f->block, cb, cb_ident); in flow_block_cb_setup_simple()
309 if (!block_cb) in flow_block_cb_setup_simple()
312 flow_block_cb_remove(block_cb, f); in flow_block_cb_setup_simple()
313 list_del(&block_cb->driver_list); in flow_block_cb_setup_simple()
433 void (*cleanup)(struct flow_block_cb *block_cb)) in flow_block_indr_init() argument
450 void (*cleanup)(struct flow_block_cb *block_cb)) in flow_indr_block_cb_alloc() argument
452 struct flow_block_cb *block_cb; in flow_indr_block_cb_alloc() local
454 block_cb = flow_block_cb_alloc(cb, cb_ident, cb_priv, release); in flow_indr_block_cb_alloc()
455 if (IS_ERR(block_cb)) in flow_indr_block_cb_alloc()
458 flow_block_indr_init(block_cb, bo, dev, sch, data, indr_cb_priv, cleanup); in flow_indr_block_cb_alloc()
459 list_add(&block_cb->indr.list, &flow_block_indr_list); in flow_indr_block_cb_alloc()
462 return block_cb; in flow_indr_block_cb_alloc()
469 void (*cleanup)(struct flow_block_cb *block_cb)) in flow_indr_dev_setup_offload() argument