Lines Matching refs:tc
96 u32 rds_tcp_snd_nxt(struct rds_tcp_connection *tc) in rds_tcp_snd_nxt() argument
98 return tcp_sk(tc->t_sock->sk)->snd_nxt; in rds_tcp_snd_nxt()
101 u32 rds_tcp_snd_una(struct rds_tcp_connection *tc) in rds_tcp_snd_una() argument
103 return tcp_sk(tc->t_sock->sk)->snd_una; in rds_tcp_snd_una()
107 struct rds_tcp_connection *tc) in rds_tcp_restore_callbacks() argument
109 rdsdebug("restoring sock %p callbacks from tc %p\n", sock, tc); in rds_tcp_restore_callbacks()
114 list_del_init(&tc->t_list_item); in rds_tcp_restore_callbacks()
118 tc->t_sock = NULL; in rds_tcp_restore_callbacks()
120 sock->sk->sk_write_space = tc->t_orig_write_space; in rds_tcp_restore_callbacks()
121 sock->sk->sk_data_ready = tc->t_orig_data_ready; in rds_tcp_restore_callbacks()
122 sock->sk->sk_state_change = tc->t_orig_state_change; in rds_tcp_restore_callbacks()
140 struct rds_tcp_connection *tc = cp->cp_transport_data; in rds_tcp_reset_callbacks() local
141 struct socket *osock = tc->t_sock; in rds_tcp_reset_callbacks()
172 if (tc->t_tinc) { in rds_tcp_reset_callbacks()
173 rds_inc_put(&tc->t_tinc->ti_inc); in rds_tcp_reset_callbacks()
174 tc->t_tinc = NULL; in rds_tcp_reset_callbacks()
176 tc->t_tinc_hdr_rem = sizeof(struct rds_header); in rds_tcp_reset_callbacks()
177 tc->t_tinc_data_rem = 0; in rds_tcp_reset_callbacks()
178 rds_tcp_restore_callbacks(osock, tc); in rds_tcp_reset_callbacks()
194 struct rds_tcp_connection *tc = cp->cp_transport_data; in rds_tcp_set_callbacks() local
196 rdsdebug("setting sock %p callbacks to tc %p\n", sock, tc); in rds_tcp_set_callbacks()
201 list_add_tail(&tc->t_list_item, &rds_tcp_tc_list); in rds_tcp_set_callbacks()
209 tc->t_sock = sock; in rds_tcp_set_callbacks()
210 tc->t_cpath = cp; in rds_tcp_set_callbacks()
211 tc->t_orig_data_ready = sock->sk->sk_data_ready; in rds_tcp_set_callbacks()
212 tc->t_orig_write_space = sock->sk->sk_write_space; in rds_tcp_set_callbacks()
213 tc->t_orig_state_change = sock->sk->sk_state_change; in rds_tcp_set_callbacks()
228 struct rds_tcp_connection *tc; in rds_tcp_tc_info() local
238 list_for_each_entry(tc, &rds_tcp_tc_list, t_list_item) { in rds_tcp_tc_info()
247 tsinfo.hdr_rem = tc->t_tinc_hdr_rem; in rds_tcp_tc_info()
248 tsinfo.data_rem = tc->t_tinc_data_rem; in rds_tcp_tc_info()
249 tsinfo.last_sent_nxt = tc->t_last_sent_nxt; in rds_tcp_tc_info()
250 tsinfo.last_expected_una = tc->t_last_expected_una; in rds_tcp_tc_info()
251 tsinfo.last_seen_una = tc->t_last_seen_una; in rds_tcp_tc_info()
272 struct rds_tcp_connection *tc; in rds_tcp_conn_alloc() local
276 tc = kmem_cache_alloc(rds_tcp_conn_slab, gfp); in rds_tcp_conn_alloc()
277 if (!tc) in rds_tcp_conn_alloc()
280 mutex_init(&tc->t_conn_path_lock); in rds_tcp_conn_alloc()
281 tc->t_sock = NULL; in rds_tcp_conn_alloc()
282 tc->t_tinc = NULL; in rds_tcp_conn_alloc()
283 tc->t_tinc_hdr_rem = sizeof(struct rds_header); in rds_tcp_conn_alloc()
284 tc->t_tinc_data_rem = 0; in rds_tcp_conn_alloc()
286 conn->c_path[i].cp_transport_data = tc; in rds_tcp_conn_alloc()
287 tc->t_cpath = &conn->c_path[i]; in rds_tcp_conn_alloc()
290 list_add_tail(&tc->t_tcp_node, &rds_tcp_conn_list); in rds_tcp_conn_alloc()
301 struct rds_tcp_connection *tc = arg; in rds_tcp_conn_free() local
303 rdsdebug("freeing tc %p\n", tc); in rds_tcp_conn_free()
306 if (!tc->t_tcp_node_detached) in rds_tcp_conn_free()
307 list_del(&tc->t_tcp_node); in rds_tcp_conn_free()
310 kmem_cache_free(rds_tcp_conn_slab, tc); in rds_tcp_conn_free()
315 struct rds_tcp_connection *tc, *_tc; in list_has_conn() local
317 list_for_each_entry_safe(tc, _tc, list, t_tcp_node) { in list_has_conn()
318 if (tc->t_cpath->cp_conn == conn) in list_has_conn()
326 struct rds_tcp_connection *tc, *_tc; in rds_tcp_destroy_conns() local
331 list_for_each_entry_safe(tc, _tc, &rds_tcp_conn_list, t_tcp_node) { in rds_tcp_destroy_conns()
332 if (!list_has_conn(&tmp_list, tc->t_cpath->cp_conn)) in rds_tcp_destroy_conns()
333 list_move_tail(&tc->t_tcp_node, &tmp_list); in rds_tcp_destroy_conns()
337 list_for_each_entry_safe(tc, _tc, &tmp_list, t_tcp_node) in rds_tcp_destroy_conns()
338 rds_conn_destroy(tc->t_cpath->cp_conn); in rds_tcp_destroy_conns()
502 struct rds_tcp_connection *tc; in rds_tcp_conn_paths_destroy() local
508 tc = cp->cp_transport_data; in rds_tcp_conn_paths_destroy()
509 if (!tc->t_sock) in rds_tcp_conn_paths_destroy()
511 sk = tc->t_sock->sk; in rds_tcp_conn_paths_destroy()
519 struct rds_tcp_connection *tc, *_tc; in rds_tcp_kill_sock() local
527 list_for_each_entry_safe(tc, _tc, &rds_tcp_conn_list, t_tcp_node) { in rds_tcp_kill_sock()
528 struct net *c_net = read_pnet(&tc->t_cpath->cp_conn->c_net); in rds_tcp_kill_sock()
530 if (net != c_net || !tc->t_sock) in rds_tcp_kill_sock()
532 if (!list_has_conn(&tmp_list, tc->t_cpath->cp_conn)) { in rds_tcp_kill_sock()
533 list_move_tail(&tc->t_tcp_node, &tmp_list); in rds_tcp_kill_sock()
535 list_del(&tc->t_tcp_node); in rds_tcp_kill_sock()
536 tc->t_tcp_node_detached = true; in rds_tcp_kill_sock()
540 list_for_each_entry_safe(tc, _tc, &tmp_list, t_tcp_node) { in rds_tcp_kill_sock()
541 rds_tcp_conn_paths_destroy(tc->t_cpath->cp_conn); in rds_tcp_kill_sock()
542 rds_conn_destroy(tc->t_cpath->cp_conn); in rds_tcp_kill_sock()
587 struct rds_tcp_connection *tc, *_tc; in rds_tcp_sysctl_reset() local
590 list_for_each_entry_safe(tc, _tc, &rds_tcp_conn_list, t_tcp_node) { in rds_tcp_sysctl_reset()
591 struct net *c_net = read_pnet(&tc->t_cpath->cp_conn->c_net); in rds_tcp_sysctl_reset()
593 if (net != c_net || !tc->t_sock) in rds_tcp_sysctl_reset()
597 rds_conn_path_drop(tc->t_cpath); in rds_tcp_sysctl_reset()