Lines Matching refs:idrinfo

375 	struct tcf_idrinfo *idrinfo = p->idrinfo;  in __tcf_action_put()  local
377 if (refcount_dec_and_mutex_lock(&p->tcfa_refcnt, &idrinfo->lock)) { in __tcf_action_put()
380 idr_remove(&idrinfo->action_idr, p->tcfa_index); in __tcf_action_put()
381 mutex_unlock(&idrinfo->lock); in __tcf_action_put()
507 static int tcf_dump_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb, in tcf_dump_walker() argument
514 struct idr *idr = &idrinfo->action_idr; in tcf_dump_walker()
519 mutex_lock(&idrinfo->lock); in tcf_dump_walker()
560 mutex_unlock(&idrinfo->lock); in tcf_dump_walker()
578 idr_remove(&p->idrinfo->action_idr, p->tcfa_index); in tcf_idr_release_unsafe()
586 static int tcf_del_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb, in tcf_del_walker() argument
593 struct idr *idr = &idrinfo->action_idr; in tcf_del_walker()
605 mutex_lock(&idrinfo->lock); in tcf_del_walker()
616 mutex_unlock(&idrinfo->lock); in tcf_del_walker()
640 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_generic_walker() local
643 return tcf_del_walker(idrinfo, skb, ops, extack); in tcf_generic_walker()
645 return tcf_dump_walker(idrinfo, skb, cb); in tcf_generic_walker()
656 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_search() local
659 mutex_lock(&idrinfo->lock); in tcf_idr_search()
660 p = idr_find(&idrinfo->action_idr, index); in tcf_idr_search()
665 mutex_unlock(&idrinfo->lock); in tcf_idr_search()
700 static int tcf_idr_delete_index(struct tcf_idrinfo *idrinfo, u32 index) in tcf_idr_delete_index() argument
705 mutex_lock(&idrinfo->lock); in tcf_idr_delete_index()
706 p = idr_find(&idrinfo->action_idr, index); in tcf_idr_delete_index()
708 mutex_unlock(&idrinfo->lock); in tcf_idr_delete_index()
716 WARN_ON(p != idr_remove(&idrinfo->action_idr, in tcf_idr_delete_index()
718 mutex_unlock(&idrinfo->lock); in tcf_idr_delete_index()
729 mutex_unlock(&idrinfo->lock); in tcf_idr_delete_index()
738 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_create() local
774 p->idrinfo = idrinfo; in tcf_idr_create()
806 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_cleanup() local
808 mutex_lock(&idrinfo->lock); in tcf_idr_cleanup()
810 WARN_ON(!IS_ERR(idr_remove(&idrinfo->action_idr, index))); in tcf_idr_cleanup()
811 mutex_unlock(&idrinfo->lock); in tcf_idr_cleanup()
824 struct tcf_idrinfo *idrinfo = tn->idrinfo; in tcf_idr_check_alloc() local
829 mutex_lock(&idrinfo->lock); in tcf_idr_check_alloc()
831 p = idr_find(&idrinfo->action_idr, *index); in tcf_idr_check_alloc()
836 mutex_unlock(&idrinfo->lock); in tcf_idr_check_alloc()
848 ret = idr_alloc_u32(&idrinfo->action_idr, NULL, index, in tcf_idr_check_alloc()
851 idr_replace(&idrinfo->action_idr, in tcf_idr_check_alloc()
857 ret = idr_alloc_u32(&idrinfo->action_idr, NULL, index, in tcf_idr_check_alloc()
860 idr_replace(&idrinfo->action_idr, ERR_PTR(-EBUSY), in tcf_idr_check_alloc()
863 mutex_unlock(&idrinfo->lock); in tcf_idr_check_alloc()
869 struct tcf_idrinfo *idrinfo) in tcf_idrinfo_destroy() argument
871 struct idr *idr = &idrinfo->action_idr; in tcf_idrinfo_destroy()
884 idr_destroy(&idrinfo->action_idr); in tcf_idrinfo_destroy()
1283 struct tcf_idrinfo *idrinfo; in tcf_idr_insert_many() local
1287 idrinfo = a->idrinfo; in tcf_idr_insert_many()
1288 mutex_lock(&idrinfo->lock); in tcf_idr_insert_many()
1292 idr_replace(&idrinfo->action_idr, a, a->tcfa_index); in tcf_idr_insert_many()
1293 mutex_unlock(&idrinfo->lock); in tcf_idr_insert_many()
1764 struct tcf_idrinfo *idrinfo = a->idrinfo; in tcf_action_delete() local
1775 ret = tcf_idr_delete_index(idrinfo, act_index); in tcf_action_delete()
1819 struct tcf_idrinfo *idrinfo; in tcf_action_reoffload_cb() local
1841 idrinfo = tn->idrinfo; in tcf_action_reoffload_cb()
1842 if (!idrinfo) in tcf_action_reoffload_cb()
1845 mutex_lock(&idrinfo->lock); in tcf_action_reoffload_cb()
1846 idr = &idrinfo->action_idr; in tcf_action_reoffload_cb()
1864 mutex_unlock(&idrinfo->lock); in tcf_action_reoffload_cb()