Lines Matching refs:base
212 struct inet_peer_base *base) in lookup_rcu() argument
214 struct inet_peer *u = rcu_dereference(base->root); in lookup_rcu()
238 #define lookup_rightempty(start, base) \ argument
244 for (u = rcu_deref_locked(*v, base); \
248 u = rcu_deref_locked(*v, base); \
259 struct inet_peer_base *base) in peer_avl_rebalance() argument
267 node = rcu_deref_locked(*nodep, base); in peer_avl_rebalance()
268 l = rcu_deref_locked(node->avl_left, base); in peer_avl_rebalance()
269 r = rcu_deref_locked(node->avl_right, base); in peer_avl_rebalance()
275 ll = rcu_deref_locked(l->avl_left, base); in peer_avl_rebalance()
276 lr = rcu_deref_locked(l->avl_right, base); in peer_avl_rebalance()
287 lrl = rcu_deref_locked(lr->avl_left, base);/* lrl: RH or RH-1 */ in peer_avl_rebalance()
288 lrr = rcu_deref_locked(lr->avl_right, base);/* lrr: RH or RH-1 */ in peer_avl_rebalance()
303 rr = rcu_deref_locked(r->avl_right, base); in peer_avl_rebalance()
304 rl = rcu_deref_locked(r->avl_left, base); in peer_avl_rebalance()
315 rlr = rcu_deref_locked(rl->avl_right, base);/* rlr: LH or LH-1 */ in peer_avl_rebalance()
316 rll = rcu_deref_locked(rl->avl_left, base);/* rll: LH or LH-1 */ in peer_avl_rebalance()
335 #define link_to_pool(n, base) \ argument
342 peer_avl_rebalance(stack, stackptr, base); \
350 static void unlink_from_pool(struct inet_peer *p, struct inet_peer_base *base, in unlink_from_pool() argument
355 if (lookup(&p->daddr, stack, base) != p) in unlink_from_pool()
364 t = lookup_rightempty(p, base); in unlink_from_pool()
365 BUG_ON(rcu_deref_locked(*stackptr[-1], base) != t); in unlink_from_pool()
377 peer_avl_rebalance(stack, stackptr, base); in unlink_from_pool()
378 base->total--; in unlink_from_pool()
383 static int inet_peer_gc(struct inet_peer_base *base, in inet_peer_gc() argument
391 if (base->total >= inet_peer_threshold) in inet_peer_gc()
396 base->total / inet_peer_threshold * HZ; in inet_peer_gc()
400 p = rcu_deref_locked(**stackptr, base); in inet_peer_gc()
414 unlink_from_pool(p, base, stack); in inet_peer_gc()
419 struct inet_peer *inet_getpeer(struct inet_peer_base *base, in inet_getpeer() argument
432 sequence = read_seqbegin(&base->lock); in inet_getpeer()
433 p = lookup_rcu(daddr, base); in inet_getpeer()
434 invalidated = read_seqretry(&base->lock, sequence); in inet_getpeer()
447 write_seqlock_bh(&base->lock); in inet_getpeer()
449 p = lookup(daddr, stack, base); in inet_getpeer()
452 write_sequnlock_bh(&base->lock); in inet_getpeer()
456 gccnt = inet_peer_gc(base, stack, stackptr); in inet_getpeer()
474 link_to_pool(p, base); in inet_getpeer()
475 base->total++; in inet_getpeer()
477 write_sequnlock_bh(&base->lock); in inet_getpeer()
543 void inetpeer_invalidate_tree(struct inet_peer_base *base) in inetpeer_invalidate_tree() argument
547 write_seqlock_bh(&base->lock); in inetpeer_invalidate_tree()
549 root = rcu_deref_locked(base->root, base); in inetpeer_invalidate_tree()
551 base->root = peer_avl_empty_rcu; in inetpeer_invalidate_tree()
552 base->total = 0; in inetpeer_invalidate_tree()
556 write_sequnlock_bh(&base->lock); in inetpeer_invalidate_tree()