Lines Matching refs:idrinfo
104 struct tcf_idrinfo *idrinfo = p->idrinfo; in __tcf_action_put() local
106 if (refcount_dec_and_lock(&p->tcfa_refcnt, &idrinfo->lock)) { in __tcf_action_put()
109 idr_remove(&idrinfo->action_idr, p->tcfa_index); in __tcf_action_put()
110 spin_unlock(&idrinfo->lock); in __tcf_action_put()
191 static int tcf_dump_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb, in tcf_dump_walker() argument
198 struct idr *idr = &idrinfo->action_idr; in tcf_dump_walker()
202 spin_lock(&idrinfo->lock); in tcf_dump_walker()
237 spin_unlock(&idrinfo->lock); in tcf_dump_walker()
249 static int tcf_del_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb, in tcf_del_walker() argument
255 struct idr *idr = &idrinfo->action_idr; in tcf_del_walker()
289 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_generic_walker() local
292 return tcf_del_walker(idrinfo, skb, ops); in tcf_generic_walker()
294 return tcf_dump_walker(idrinfo, skb, cb); in tcf_generic_walker()
305 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_search() local
308 spin_lock(&idrinfo->lock); in tcf_idr_search()
309 p = idr_find(&idrinfo->action_idr, index); in tcf_idr_search()
314 spin_unlock(&idrinfo->lock); in tcf_idr_search()
324 static int tcf_idr_delete_index(struct tcf_idrinfo *idrinfo, u32 index) in tcf_idr_delete_index() argument
329 spin_lock(&idrinfo->lock); in tcf_idr_delete_index()
330 p = idr_find(&idrinfo->action_idr, index); in tcf_idr_delete_index()
332 spin_unlock(&idrinfo->lock); in tcf_idr_delete_index()
340 WARN_ON(p != idr_remove(&idrinfo->action_idr, in tcf_idr_delete_index()
342 spin_unlock(&idrinfo->lock); in tcf_idr_delete_index()
353 spin_unlock(&idrinfo->lock); in tcf_idr_delete_index()
362 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_create() local
392 p->idrinfo = idrinfo; in tcf_idr_create()
408 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_insert() local
410 spin_lock(&idrinfo->lock); in tcf_idr_insert()
412 WARN_ON(!IS_ERR(idr_replace(&idrinfo->action_idr, a, a->tcfa_index))); in tcf_idr_insert()
413 spin_unlock(&idrinfo->lock); in tcf_idr_insert()
421 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_cleanup() local
423 spin_lock(&idrinfo->lock); in tcf_idr_cleanup()
425 WARN_ON(!IS_ERR(idr_remove(&idrinfo->action_idr, index))); in tcf_idr_cleanup()
426 spin_unlock(&idrinfo->lock); in tcf_idr_cleanup()
439 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_check_alloc() local
444 spin_lock(&idrinfo->lock); in tcf_idr_check_alloc()
446 p = idr_find(&idrinfo->action_idr, *index); in tcf_idr_check_alloc()
451 spin_unlock(&idrinfo->lock); in tcf_idr_check_alloc()
463 ret = idr_alloc_u32(&idrinfo->action_idr, NULL, index, in tcf_idr_check_alloc()
466 idr_replace(&idrinfo->action_idr, in tcf_idr_check_alloc()
472 ret = idr_alloc_u32(&idrinfo->action_idr, NULL, index, in tcf_idr_check_alloc()
475 idr_replace(&idrinfo->action_idr, ERR_PTR(-EBUSY), in tcf_idr_check_alloc()
478 spin_unlock(&idrinfo->lock); in tcf_idr_check_alloc()
484 struct tcf_idrinfo *idrinfo) in tcf_idrinfo_destroy() argument
486 struct idr *idr = &idrinfo->action_idr; in tcf_idrinfo_destroy()
498 idr_destroy(&idrinfo->action_idr); in tcf_idrinfo_destroy()
1179 struct tcf_idrinfo *idrinfo = a->idrinfo; in tcf_action_delete() local
1190 ret = tcf_idr_delete_index(idrinfo, act_index); in tcf_action_delete()