Lines Matching refs:list

51 	struct nf_conncount_list list;  member
85 static void conn_free(struct nf_conncount_list *list, in conn_free() argument
88 lockdep_assert_held(&list->list_lock); in conn_free()
90 list->count--; in conn_free()
97 find_or_evict(struct net *net, struct nf_conncount_list *list, in find_or_evict() argument
118 conn_free(list, conn); in find_or_evict()
126 struct nf_conncount_list *list, in __nf_conncount_add() argument
135 if (time_is_after_eq_jiffies((unsigned long)list->last_gc)) in __nf_conncount_add()
139 list_for_each_entry_safe(conn, conn_n, &list->head, node) { in __nf_conncount_add()
143 found = find_or_evict(net, list, conn); in __nf_conncount_add()
175 conn_free(list, conn); in __nf_conncount_add()
184 if (WARN_ON_ONCE(list->count > INT_MAX)) in __nf_conncount_add()
195 list_add_tail(&conn->node, &list->head); in __nf_conncount_add()
196 list->count++; in __nf_conncount_add()
197 list->last_gc = (u32)jiffies; in __nf_conncount_add()
202 struct nf_conncount_list *list, in nf_conncount_add() argument
209 spin_lock_bh(&list->list_lock); in nf_conncount_add()
210 ret = __nf_conncount_add(net, list, tuple, zone); in nf_conncount_add()
211 spin_unlock_bh(&list->list_lock); in nf_conncount_add()
217 void nf_conncount_list_init(struct nf_conncount_list *list) in nf_conncount_list_init() argument
219 spin_lock_init(&list->list_lock); in nf_conncount_list_init()
220 INIT_LIST_HEAD(&list->head); in nf_conncount_list_init()
221 list->count = 0; in nf_conncount_list_init()
222 list->last_gc = (u32)jiffies; in nf_conncount_list_init()
228 struct nf_conncount_list *list) in nf_conncount_gc_list() argument
237 if (time_is_after_eq_jiffies((unsigned long)READ_ONCE(list->last_gc))) in nf_conncount_gc_list()
241 if (!spin_trylock(&list->list_lock)) in nf_conncount_gc_list()
244 list_for_each_entry_safe(conn, conn_n, &list->head, node) { in nf_conncount_gc_list()
245 found = find_or_evict(net, list, conn); in nf_conncount_gc_list()
259 conn_free(list, conn); in nf_conncount_gc_list()
269 if (!list->count) in nf_conncount_gc_list()
271 list->last_gc = (u32)jiffies; in nf_conncount_gc_list()
272 spin_unlock(&list->list_lock); in nf_conncount_gc_list()
295 spin_lock(&rbconn->list.list_lock); in tree_nodes_free()
296 if (!rbconn->list.count) { in tree_nodes_free()
300 spin_unlock(&rbconn->list.list_lock); in tree_nodes_free()
344 ret = nf_conncount_add(net, &rbconn->list, tuple, zone); in insert_tree()
348 count = rbconn->list.count; in insert_tree()
356 if (do_gc && nf_conncount_gc_list(net, &rbconn->list)) in insert_tree()
383 nf_conncount_list_init(&rbconn->list); in insert_tree()
384 list_add(&conn->node, &rbconn->list.head); in insert_tree()
386 rbconn->list.count = count; in insert_tree()
426 nf_conncount_gc_list(net, &rbconn->list); in count_tree()
427 return rbconn->list.count; in count_tree()
430 spin_lock_bh(&rbconn->list.list_lock); in count_tree()
434 if (rbconn->list.count == 0) { in count_tree()
435 spin_unlock_bh(&rbconn->list.list_lock); in count_tree()
440 ret = __nf_conncount_add(net, &rbconn->list, tuple, zone); in count_tree()
441 spin_unlock_bh(&rbconn->list.list_lock); in count_tree()
445 return rbconn->list.count; in count_tree()
470 if (nf_conncount_gc_list(data->net, &rbconn->list)) in tree_gc_worker()
488 if (rbconn->list.count > 0) in tree_gc_worker()
561 void nf_conncount_cache_free(struct nf_conncount_list *list) in nf_conncount_cache_free() argument
565 list_for_each_entry_safe(conn, conn_n, &list->head, node) in nf_conncount_cache_free()
580 nf_conncount_cache_free(&rbconn->list); in destroy_tree()