Lines Matching refs:trans

38 	struct rxrpc_transport *trans;
42 trans = kzalloc(sizeof(struct rxrpc_transport), gfp);
43 if (trans) {
44 trans->local = local;
45 trans->peer = peer;
46 INIT_LIST_HEAD(&trans->link);
47 trans->bundles = RB_ROOT;
48 trans->client_conns = RB_ROOT;
49 trans->server_conns = RB_ROOT;
50 skb_queue_head_init(&trans->error_queue);
51 spin_lock_init(&trans->client_lock);
52 rwlock_init(&trans->conn_lock);
53 atomic_set(&trans->usage, 1);
54 trans->debug_id = atomic_inc_return(&rxrpc_debug_id);
59 INIT_WORK(&trans->error_handler,
71 _leave(" = %p", trans);
72 return trans;
82 struct rxrpc_transport *trans, *candidate;
94 list_for_each_entry(trans, &rxrpc_transports, link) {
95 if (trans->local == local && trans->peer == peer)
110 list_for_each_entry(trans, &rxrpc_transports, link) {
111 if (trans->local == local && trans->peer == peer)
116 trans = candidate;
118 usage = atomic_read(&trans->usage);
120 rxrpc_get_local(trans->local);
121 atomic_inc(&trans->peer->usage);
122 list_add_tail(&trans->link, &rxrpc_transports);
129 trans->debug_id,
130 trans->local->debug_id,
131 trans->peer->debug_id);
133 _leave(" = %p {u=%d}", trans, usage);
134 return trans;
138 usage = atomic_inc_return(&trans->usage);
144 usage = atomic_inc_return(&trans->usage);
156 struct rxrpc_transport *trans;
167 list_for_each_entry(trans, &rxrpc_transports, link) {
168 if (trans->local == local && trans->peer == peer)
177 atomic_inc(&trans->usage);
179 _leave(" = %p", trans);
180 return trans;
186 void rxrpc_put_transport(struct rxrpc_transport *trans)
188 _enter("%p{u=%d}", trans, atomic_read(&trans->usage));
190 ASSERTCMP(atomic_read(&trans->usage), >, 0);
192 trans->put_time = get_seconds();
193 if (unlikely(atomic_dec_and_test(&trans->usage))) {
206 static void rxrpc_cleanup_transport(struct rxrpc_transport *trans)
208 _net("DESTROY TRANS %d", trans->debug_id);
210 rxrpc_purge_queue(&trans->error_queue);
212 rxrpc_put_local(trans->local);
213 rxrpc_put_peer(trans->peer);
214 kfree(trans);
222 struct rxrpc_transport *trans, *_p;
234 list_for_each_entry_safe(trans, _p, &rxrpc_transports, link) {
236 trans->debug_id, atomic_read(&trans->usage),
237 (long) now - (long) trans->put_time);
239 if (likely(atomic_read(&trans->usage) > 0))
242 reap_time = trans->put_time + rxrpc_transport_expiry;
244 list_move_tail(&trans->link, &graveyard);
259 trans = list_entry(graveyard.next, struct rxrpc_transport,
261 list_del_init(&trans->link);
263 ASSERTCMP(atomic_read(&trans->usage), ==, 0);
264 rxrpc_cleanup_transport(trans);