• Home
  • Raw
  • Download

Lines Matching refs:trans

34 	struct rxrpc_transport *trans;  in rxrpc_alloc_transport()  local
38 trans = kzalloc(sizeof(struct rxrpc_transport), gfp); in rxrpc_alloc_transport()
39 if (trans) { in rxrpc_alloc_transport()
40 trans->local = local; in rxrpc_alloc_transport()
41 trans->peer = peer; in rxrpc_alloc_transport()
42 INIT_LIST_HEAD(&trans->link); in rxrpc_alloc_transport()
43 trans->bundles = RB_ROOT; in rxrpc_alloc_transport()
44 trans->client_conns = RB_ROOT; in rxrpc_alloc_transport()
45 trans->server_conns = RB_ROOT; in rxrpc_alloc_transport()
46 skb_queue_head_init(&trans->error_queue); in rxrpc_alloc_transport()
47 spin_lock_init(&trans->client_lock); in rxrpc_alloc_transport()
48 rwlock_init(&trans->conn_lock); in rxrpc_alloc_transport()
49 atomic_set(&trans->usage, 1); in rxrpc_alloc_transport()
50 trans->debug_id = atomic_inc_return(&rxrpc_debug_id); in rxrpc_alloc_transport()
55 INIT_WORK(&trans->error_handler, in rxrpc_alloc_transport()
67 _leave(" = %p", trans); in rxrpc_alloc_transport()
68 return trans; in rxrpc_alloc_transport()
78 struct rxrpc_transport *trans, *candidate; in rxrpc_get_transport() local
90 list_for_each_entry(trans, &rxrpc_transports, link) { in rxrpc_get_transport()
91 if (trans->local == local && trans->peer == peer) in rxrpc_get_transport()
106 list_for_each_entry(trans, &rxrpc_transports, link) { in rxrpc_get_transport()
107 if (trans->local == local && trans->peer == peer) in rxrpc_get_transport()
112 trans = candidate; in rxrpc_get_transport()
114 usage = atomic_read(&trans->usage); in rxrpc_get_transport()
116 rxrpc_get_local(trans->local); in rxrpc_get_transport()
117 atomic_inc(&trans->peer->usage); in rxrpc_get_transport()
118 list_add_tail(&trans->link, &rxrpc_transports); in rxrpc_get_transport()
125 trans->debug_id, in rxrpc_get_transport()
126 trans->local->debug_id, in rxrpc_get_transport()
127 trans->peer->debug_id); in rxrpc_get_transport()
129 _leave(" = %p {u=%d}", trans, usage); in rxrpc_get_transport()
130 return trans; in rxrpc_get_transport()
134 usage = atomic_inc_return(&trans->usage); in rxrpc_get_transport()
140 usage = atomic_inc_return(&trans->usage); in rxrpc_get_transport()
152 struct rxrpc_transport *trans; in rxrpc_find_transport() local
163 list_for_each_entry(trans, &rxrpc_transports, link) { in rxrpc_find_transport()
164 if (trans->local == local && trans->peer == peer) in rxrpc_find_transport()
173 atomic_inc(&trans->usage); in rxrpc_find_transport()
175 _leave(" = %p", trans); in rxrpc_find_transport()
176 return trans; in rxrpc_find_transport()
182 void rxrpc_put_transport(struct rxrpc_transport *trans) in rxrpc_put_transport() argument
184 _enter("%p{u=%d}", trans, atomic_read(&trans->usage)); in rxrpc_put_transport()
186 ASSERTCMP(atomic_read(&trans->usage), >, 0); in rxrpc_put_transport()
188 trans->put_time = get_seconds(); in rxrpc_put_transport()
189 if (unlikely(atomic_dec_and_test(&trans->usage))) { in rxrpc_put_transport()
202 static void rxrpc_cleanup_transport(struct rxrpc_transport *trans) in rxrpc_cleanup_transport() argument
204 _net("DESTROY TRANS %d", trans->debug_id); in rxrpc_cleanup_transport()
206 rxrpc_purge_queue(&trans->error_queue); in rxrpc_cleanup_transport()
208 rxrpc_put_local(trans->local); in rxrpc_cleanup_transport()
209 rxrpc_put_peer(trans->peer); in rxrpc_cleanup_transport()
210 kfree(trans); in rxrpc_cleanup_transport()
218 struct rxrpc_transport *trans, *_p; in rxrpc_transport_reaper() local
230 list_for_each_entry_safe(trans, _p, &rxrpc_transports, link) { in rxrpc_transport_reaper()
232 trans->debug_id, atomic_read(&trans->usage), in rxrpc_transport_reaper()
233 (long) now - (long) trans->put_time); in rxrpc_transport_reaper()
235 if (likely(atomic_read(&trans->usage) > 0)) in rxrpc_transport_reaper()
238 reap_time = trans->put_time + rxrpc_transport_timeout; in rxrpc_transport_reaper()
240 list_move_tail(&trans->link, &graveyard); in rxrpc_transport_reaper()
255 trans = list_entry(graveyard.next, struct rxrpc_transport, in rxrpc_transport_reaper()
257 list_del_init(&trans->link); in rxrpc_transport_reaper()
259 ASSERTCMP(atomic_read(&trans->usage), ==, 0); in rxrpc_transport_reaper()
260 rxrpc_cleanup_transport(trans); in rxrpc_transport_reaper()